7

我读到,当内核入队时未指定工作组大小时,OpenCL 会为我选择一个。

例如:

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

有没有办法获得 OpenCL 在这里使用的工作组大小?工作组大小 OpenCL 是选择 clGetKernelWorkGroupInfo 返回的那个吗?

先感谢您!

4

2 回答 2

2

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

如果您在执行内核时未指定工作组大小,OpenCL 将尝试为您选择最佳的,它可能是或可能不是最大大小。

实际上,仅当与设备的计算单元数量相比,您有很多工作项时,使用最大尺寸才是最佳选择。

于 2012-11-21T17:37:05.537 回答
0

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

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

于 2012-11-21T17:15:49.230 回答