OpenCL——把vector变成scalar

Posted willhua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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内存中,因为这些一般是固定长度的。

  • 在向量和标量之间进行指针转换
char16 vec = (char16)(1, 2, 3, …);
char* scalar = (char*)&vec;

优点:方便
缺点:容易因为地址位置搞错而出错。

  • 使用内置函数as_typen或者as_type,这个最为推荐

以上是关于OpenCL——把vector变成scalar的主要内容,如果未能解决你的问题,请参考以下文章

荣誉物理2|Introduction to Notation,Vectors and scalars ,Motion

如何在 opencl c 内核上使用 vector<char**> 缓冲区或使用此向量设置 SVM?

OpenCL 管道

TypeError: only integer scalar arrays can be converted to a scalar index

C++ 实战之OpenCL环境搭建

Python illustrating Downhill simplex method for minimizing the user-supplied scalar function的代码