CL_INVALID_WORK_GROUP_SIZE error

帅比萌擦擦* 提交于 2019-12-04 03:36:01

From your pastebin link, I see:

#define MAX_OP_X 4
#define MAX_OP_Y 4
#define MAX_OP MAX_OP_X * MAX_OP_Y      //aantal observer points
#define MAX_SEGMENTEN 128 //aantal segmenten
...
size_t globalSize = MAX_OP;
size_t localSize = MAX_SEGMENTEN;
...
errMsg = clEnqueueNDRangeKernel (commandQueue, kernel, 1, NULL, &globalSize, &localSize, 0, NULL, NULL);

This means you are trying to enqueue your kernel with a global size of 16, and a local size of 128. That's almost certainly not what you want. Remember, global size is the total number of work items you want to run, and the local size is the size of each workgroup. For example, if you have a global size of 1024x1024, and a local size of 16x16, you would have 4096 workgroups of 256 work items each. This may or may not be valid, depending on your compute device.

With regards to passing a NULL local size: the CL spec says that if you do that, the CL implementation can choose whatever it wants as the local workgroup size. Ideally, it will try to do something clever on your behalf, but you have no guarantees.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!