我在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