以编程方式找出 openCL 设备支持的最大工作组大小

Programmatically find out maximal work group size supported by openCL device

我收到本地工作大小为 512 的 openCL 错误 CL_INVALID_WORK_GROUP_SIZE。该程序以 2 的较低幂运行,因此我假设错误原因超过 CL_DEVICE_MAX_WORK_GROUP_SIZE .

有没有办法查询 openCL 的确切值?

您可以这样查询设备的最大工作组大小:

size_t maxWorkGroupSize;
clGetDeviceInfo(device, CL_DEVICE_MAX_WORK_GROUP_SIZE,
                sizeof(size_t), &maxWorkGroupSize, NULL);

请注意,特定内核可能有不同的(较低的)最大值,您可以这样查询:

size_t maxWorkGroupSize;
clGetKernelWorkGroupInfo(kernel, device, CL_KERNEL_WORK_GROUP_SIZE,
                         sizeof(size_t), &maxWorkGroupSize, NULL);