Я пишу OpenCL, используя привязки C++, пытаясь создать небольшую библиотеку.OpenCL enqueTask vs enqueNDRangeKernel
NDRange offset(0);
NDRange global_size(numWorkItems);
NDRange local_size(1);
//this call fails with error code -56
err = queue.enqueueNDRangeKernel(kernelReduction, offset, global_size, local_size);
//this call works:
err = queue.enqueueTask(kernelReduction);
Код ошибки -56 - CL_INVALID_GLOBAL_OFFSET. И я не знаю, почему первый звонок потерпит неудачу. Какие-либо предложения?
Какое измерение вы используете? Согласно документации OpenCL, смещение документации должно быть массивом целочисленных смещений, каждый из которых соответствует определенному размеру, но ваш код не говорит, сколько измерений он использует. – Thomas
Насколько я понимаю с помощью привязок C++, он задается инициализатором NDRange. Если задано 1 целое число, оно будет принимать 1 размер, учитывая 2, это будет предполагаться 2. –