Это делается путем указания параметра «Global Work Size».
size_t work_sizes[] = {1024, 1024, 64};
clEnqueueNDRangeKernel(queue, kernel, 3, nullptr, work_sizes, nullptr, 0, nullptr, nullptr);
Если вы предпочитаете идиому C ++:
std::vector<size_t> work_sizes = {1024, 1024, 64};
clEnqueueNDRangeKernel(queue, kernel, work_sizes.size(), nullptr, work_sizes.data(), nullptr, 0, nullptr, nullptr);
Большинство реализаций OpenCL поддерживают только до 3 измеренийрабочих элементов, но если ваша реализация поддерживает больше, вы можете указать столько, сколько допустимо.И очевидно, что если вы работаете только с одномерными рабочими элементами, это тоже легко указать:
std::vector<size_t> work_sizes = {16777216};
clEnqueueNDRangeKernel(queue, kernel, work_sizes.size(), nullptr, work_sizes.data(), nullptr, 0, nullptr, nullptr);