Как указать многомерность номера в вызове ядра в openCL - PullRequest
0 голосов
/ 05 июня 2018

В cuda мы можем делать такие вещи, как:

my_kernel<<< n_x,n_y >>>(...)

что эквивалентно в opencl?

1 Ответ

0 голосов
/ 05 июня 2018

Это делается путем указания параметра «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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...