CL_INVALID_WORK_GROUP_SIZE opencl - PullRequest
0 голосов
/ 11 июня 2018

Я получаю CL_INVALID_WORK_GROUP_SIZE, но мой локальный размер работы составляет 299, а мой максимальный поддерживаемый WORK_GROUP_SIZE равен 1024.

Согласно документации:

CL_INVALID_WORK_GROUP_SIZE, если указано local_work_size и количество рабочих элементов, указанных в global_work_size, не делится поровну на размер рабочей группы, заданный local_work_size, или не соответствует размеру рабочей группы, указанному для ядра с использованиемквалификатор ((reqd_work_group_size (X, Y, Z))) в источнике программы.

в моем случае у меня есть

size_t globalWorkSize[2] = { 299, 299 };
size_t localWorkSize[2] = { 299, 299 };
mErr = clEnqueueNDRangeKernel(mCmdQueue, mKernel[0], 2, nullptr,
                globalWorkSize, localWorkSize, 0, nullptr, nullptr);

Кажетсядля меня у меня 299 ^ 2 рабочих групп по 1 рабочему элементу в каждой, я не понимаю, в чем проблема, если честно.

Вопрос в том, почему я получаю эту ошибку?

1 Ответ

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

Вы пытаетесь поставить в очередь 1 рабочую группу размером 299 * 299, которая больше 1024, то есть CL_DEVICE_MAX_WORK_GROUP_SIZE.

Также на основе устройства ядра может быть невозможно запустить CL_DEVICE_MAX_WORK_GROUP_SIZE в рабочей группе.Правильный подход - убедиться, что локальный размер работы меньше или равен CL_KERNEL_WORK_GROUP_SIZE, что может быть меньше CL_DEVICE_MAX_WORK_GROUP_SIZE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...