OpenCL——把vector变成scalar
Posted willhua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCL——把vector变成scalar相关的知识,希望对你有一定的参考价值。
三种方法:
- 使用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?
TypeError: only integer scalar arrays can be converted to a scalar index
Python illustrating Downhill simplex method for minimizing the user-supplied scalar function的代码