Opencl 二维局部工作尺寸

Opencl 二维局部工作尺寸,opencl,Opencl,我正试图为一个opencl应用程序编写一个嵌套的for循环,我将其视为一个二维问题。全局工作大小不是block_维度的倍数,因此我声明大小: size_t global_work_size[2] = {length1,length2}; size_t local_work_size[2] = {NULL,NULL}; err = clEnqueueNDRangeKernel(commands, Kernel, 2, NULL, global_work_size, local_work_size,

我正试图为一个opencl应用程序编写一个嵌套的for循环,我将其视为一个二维问题。全局工作大小不是block_维度的倍数,因此我声明大小:

size_t global_work_size[2] = {length1,length2};
size_t local_work_size[2] = {NULL,NULL};
err = clEnqueueNDRangeKernel(commands, Kernel, 2, NULL, global_work_size, local_work_size, 0, NULL, NULL);

我收到CL\u无效\u工作\u大小错误。我应该将我的本地工作规模更改为什么

只需像这样调用内核:

err = clEnqueueNDRangeKernel(commands, Kernel, 2, NULL, global_size, NULL, 0, NULL, NULL);

我以前试过,它给了我一个访问冲突读取位置。好吧,我确信这个错误不是因为您使用NULL作为本地大小。使用NULL的效果甚至可以在以下内容中解释:local_work_size也可以是NULL值,在这种情况下,OpenCL实现将确定如何将全局工作项分解为适当的工作组实例。这是一个访问缓冲区的问题。非常感谢。