clGetKernelWorkGroupInfo CL_KERNEL_WORK_GROUP_SIZE返回值的含义

时间:2019-09-16 11:01:34

标签: opencl

我认为clGetKernelWorkGroupInfo的CL_KERNEL_WORK_GROUP_SIZE类型的返回值的含义是一个工作组中的最大工作项。等于dim [0] * dim [1] * ... * dim [dims-1];这种理解正确吗?例如,如果返回值为256,则无法使用(16,16,2)设置本地工作组大小,即16 * 16 * 2 = 512,大于256。

1 个答案:

答案 0 :(得分:2)

是的,这是正确的。 clEnqueueNDRangeKernel local_work_size 参数:

  

指向work_dim无符号值的数组,这些值描述了将执行以下操作的工作组的工作项数(也称为工作组的大小)。内核指定的内核。 工作组中的工作项总数计算为
  local_work_size [0] * ... * local_work_size [work_dim-1]

clGetKernelWorkGroupInfo,参数为CL_KERNEL_WORK_GROUP_SIZE:

  

这为应用程序提供了一种查询最大工作组大小的机制,该机制可用于在设备给定的特定设备上执行内核。

您可能还想确保每个维度上的本地大小均不大于CL_DEVICE_MAX_WORK_ITEM_SIZES(clGetDeviceInfo)。 clGetKernelWorkGroupInfo中没有类似的参数,因此似乎每个维度都没有特定于内核的限制。