1.加载和保存同类型的数据:如果发送端和接收端的数据类型相同,例如将一个区域的int4型向量加载到另一区域中,只知道“=”即可。除了对变量赋值外,等号还可以将一个区域的数据赋值传输到另一个区域中。例如,内核想将全局内存中的数据加载到局部内存中,并将处理完的结果保存回全局内存。如果要将局部内存改为私有内存,只需要将数据声明中的_local标识符去掉即可,默认的标识符便是_private,因此,如果没有标识符,编译器会将变量自动保存在私有内存中。
2.将标量数组加载保存到向量中:大多数情况下,可能需要用向量来处理数据,但数据输入却一般都保存在标量数组中。这时,“=”就不管用了,你不可以将一个地址空间中的数据类型转换到另外一个地址空间中。所以OpenCL提供了函数vloadn,用来将标量数据加载保存到向量中:
vector vloadn(size_t offset, const __(g|c|l|p) scalar *mem);
n表示的是向量所包含的向量分数量,它必须被设定为2,3,4,8或16.vector可以是任意一种向量类型,而scalar则必须