是clGetKernelWorkGroupInfo - CL_KERNEL_WORK_GROUP

2019-08-03 01:13发布

我读到,当一个入列内核时不指定工作组大小,OpenCL的选择一个适合我。

例如:

//don't know which workgroup size OpenCl will use!
clEnqueueNDRangeKernel(queue, kernel, 1, NULL, &global_size, NULL, 0, NULL, NULL);

有没有办法让OpenCL是这里使用工作组规模? 是工作组规模OpenCL的选择是由clGetKernelWorkGroupInfo返回一个?

先感谢您!

Answer 1:

CL_KERNEL_GLOBAL_WORK_SIZE是最大工作组大小,你可以得到,这取决于你的内核的内存需求。

如果执行内核,当你不指定工作组大小的OpenCL会尽量选择最好的一个适合你,这可能也可能不是最大尺寸。

事实上,使用的最大尺寸是最佳的只有当你有很多的工作项目相比,该设备的计算单位的数量。



Answer 2:

当你调用clEnqueueNDRangeKernel您指定的大小。 文档是在这里。 在这种情况下,重要的参数是“local_work_size”。

“在一个工作组工作项的总数被计算为local_work_size [0] * ... * local_work_size [work_dim - 1]”



文章来源: is clGetKernelWorkGroupInfo - CL_KERNEL_WORK_GROUP_SIZE the size OpenCL uses when not specifying it in clEnqueueNDRange Kernel?
标签: opencl