CL_INVALID_WORK_GROUP_SIZE opencl

时间:2018-06-11 17:32:11

标签: c++ opencl

我的 CL_INVALID_WORK_GROUP_SIZE ,但我的本地工作尺寸为299,我的最大支持 WORK_GROUP_SIZE 为1024。

根据文件:

  

CL_INVALID_WORK_GROUP_SIZE,如果指定了local_work_size并且编号   由global_work_size指定的工作项不能平均分配   local_work_size给出的工作组大小或与之不匹配   使用内核为内核指定的工作组大小   程序源中的属性((reqd_work_group_size(X,Y,Z)))限定符。

在我的情况下,我有

size_t globalWorkSize[2] = { 299, 299 };
size_t localWorkSize[2] = { 299, 299 };
mErr = clEnqueueNDRangeKernel(mCmdQueue, mKernel[0], 2, nullptr,
                globalWorkSize, localWorkSize, 0, nullptr, nullptr);

在我看来,我有299 ^ 2个工作组,每个工作项目有1个工作项,我不知道问题是诚实的。

问题是我为什么会收到这个错误?

1 个答案:

答案 0 :(得分:1)

您正在尝试将1个大小为299 * 299的工作组排入队列,该工作组大于1024,即CL_DEVICE_MAX_WORK_GROUP_SIZE

同样基于内核设备可能无法在工作组中运行CL_DEVICE_MAX_WORK_GROUP_SIZE。 正确的方法是确保当地工作规模小于或等于CL_KERNEL_WORK_GROUP_SIZE,可能小于CL_DEVICE_MAX_WORK_GROUP_SIZE