我正在使用c++绑定(bind)编写OpenCL,试图创建一个小型库。

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 1.0,则不能使用全局偏移量afaik(您需要使用恒定内存计数器或其他方法来解决)。如果绑定(bind)不能自动适应,请尝试将其更新为OpenCL 1.1,并确保同时更新驱动程序。

关于c++ - OpenCL enqueTask与enqueNDRangeKernel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9710436/

10-14 08:36