OpenCL——把vector變成scalar

https://stackoverflow.com/questions/46556471/how-may-i-convert-cast-scalar-to-vector-and-vice-versa-in-opencl數組

三種方法:函數

  • 使用union。這個也是OCL標準的6.2.4.1節中允許的方法。
union my_type
{
  char scalar[16];
  char16 vector;
};

優勢:數據是明確對齊的,也即不會出現向量vector的內存長度和變成的多個標量的內存長度不一致的狀況。
缺點:很差處理標量數組的長度變化的狀況。因此,這種方法通常用在local或者private內存中,由於這些通常是固定長度的。scala

  • 在向量和標量之間進行指針轉換
char16 vec = (char16)(1, 2, 3, …);
char* scalar = (char*)&vec;

優勢:方便
缺點:容易由於地址位置搞錯而出錯。指針

  • 使用內置函數as_typen或者as_type,這個最爲推薦
相關文章
相關標籤/搜索