OpenCL enqueTask与enqueNDRangeKernel 我使用C++绑定编写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\u无效\u全局\u偏移量OpenCL enqueTask与enqueNDRangeKernel 我使用C++绑定编写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);,c++,opencl,C++,Opencl,现在,错误代码-56是无效的全局偏移量。我不知道为什么第一个电话会失败。任何建议?全局工作偏移量必须为空。此处的任何值都应产生CL\u无效\u全局\u偏移量 检查它:如果您使用的是OpenCL1.0,那么您不能使用全局偏移量afaik(您需要使用常量内存计数器或其他方法来解决这个问题)。如果绑定不能自动适应,请尝试更新到OpenCL 1.1,并确保同时更新驱动程序。您使用的是哪个维度?根据OpenCL文档,偏移量需要是一个整数偏移量数组,每个对应于一个特定的维度,但是您的代码没有说明它使用的维数
检查它:如果您使用的是OpenCL1.0,那么您不能使用全局偏移量afaik(您需要使用常量内存计数器或其他方法来解决这个问题)。如果绑定不能自动适应,请尝试更新到OpenCL 1.1,并确保同时更新驱动程序。您使用的是哪个维度?根据OpenCL文档,偏移量需要是一个整数偏移量数组,每个对应于一个特定的维度,但是您的代码没有说明它使用的维数。据我理解的C++绑定,它是由NDRANGE初始化器给出的。给定1个整数,它将假定为1维,给定2,它将假定为2。您正在查看OpenCL 1.0文档,其中全局偏移量确实没有实现,必须为null。这对于OpenCL1.1和1.2(全局偏移正在工作)是不正确的。问题没有指定版本,所以这是我最好的猜测。