Я использую OpenCL на AMD Radeon Vega 64. В диспетчере задач я вижу, что GPU использует максимум на 7%. Как максимально использовать графический процессор?
NDRange global(100000); queue.enqueueNDRangeKernel(kernel, NULL, global));
Вы можете попытаться вручную установить размер рабочей группы на значение, которое повысит производительность. Обычно значения по умолчанию достаточно хороши, но иногда вы можете использовать clGetKernelWorkGroupInfo для получения значений, специфичных для ядра, таких как CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE. Последний может использоваться как показатель того, каким может быть хороший размер настраиваемой рабочей группы для данного ядра OpenCL.
В основном методом проб и ошибок. В зависимости от вашего ядра, самый простой способ - просто увеличить глобальный размер работы. Вы также можете попытаться использовать доступную информацию, такую как CL_DEVICE_MAX_COMPUTE_UNITS или CL_DEVICE_MAX_WORK_ITEM_SIZES, чтобы программно определить размер работы, но это не совсем надежно.
CL_DEVICE_MAX_COMPUTE_UNITS
CL_DEVICE_MAX_WORK_ITEM_SIZES