我想在本地地址空间中将数组传递给OpenCL内核。但我得到CL_invalid_VALUE
。如何在Opencl内核的本地地址空间中传递数组
int a[]={1,2,3,4,5};
我们不需要在本地地址空间中创建缓冲区来传递数据。所以:
clSetKernelArg(kernel, 21, sizeof(int)*5,a);
内核
__kernel void abc(__local int *a)
{}
如果我改变__local
到__global
,一切工作正常。请告诉我如何做到这一点。
首先,将'sizeof(int)* 5'替换为'sizeof(a)' – tilz0R
我并不熟悉opencl,但如果指向内存的性质和位置确实相关,那么你还没有提供足够的信息来确定这一点。与往常一样,我们期待[mcve],如果您提供一个有用答案,您的机会将大大提高。 –