【发布时间】:2017-04-25 14:57:37
【问题描述】:
我想将一个数组传递给本地地址空间中的 OpenCL 内核。但我得到CL_invalid_VALUE。
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) -
我没有跟上 opencl 的速度,但如果指向内存的性质和位置确实相关,那么您没有提供足够的信息来确定这一点。与往常一样,我们希望收到minimal reproducible example,如果您提供一个有用的答案,您获得有用答案的机会将大大提高。