我在pyopenCL中编写了一个openCL内核,我想在其中寻址向量元素。C/openCL中的向量元素
在普通的C,结果我想有是:
int i = 0;
float *vec = (float*)maalloc(sizeof(float)*4);
for (i=0;i<4;i++)
{
vec[i]=2*i;
}
在OpenCL中,向量的元素在一个“Python的”点的语法式被存取。
float4 vec = (float4)(0);
for (i=0;i<4,i++)
{
vec.si = 2*i;
/*obviously doesn't work*/
}
vec[2]
所以成为在OpenCL中vec.s2
,所以它不再直接的具有可变访问的元素。然而,如何使用变量访问vector元素呢?
如果您想使用数组操作来访问它,请使用数组。用[]访问矢量是不可能的。因为元素访问需要在编译时为矢量知道。 – M4rtini
http://stackoverflow.com/questions/9788806/access-vector-type-opencl看到这个一些hacky解决方案 – M4rtini
你可以使用'vec.s [i]'。但是,为什么要使用矢量然后再分割它们?这破坏了矢量的目的。只需要执行'vec = vec *(float4)(0,2,4,6);' – DarkZeros