OpenCL缓冲区数组-clEnqueueWriteBuffer -36

福地纳博

当我在一个易于使用的OpenCL实现上工作时,我遇到了错误-36 clEnqueueWriteBuffer我正在使用启用了抛出异常OpenCL C++ Wrapperfor spec 1.1所以我有了这个功能-我已经评论了它应该做什么(或者我认为应该做什么..):

void createBuffers(std::vector< OpType > arrays) {
        for (int i = 0; i < arrays.size(); i++) {
            buffer.push_back( cl::Buffer(contextCL, CL_MEM_READ_WRITE, sizeof(OpType)*length)); //creating the buffers depending on how big arrays is - buffer has been declared as cl::vector<cl::Buffer> buffer;

//here the Exception is thrown
            queueCL.enqueueWriteBuffer(buffer[i], CL_TRUE, 0, sizeof(OpType)*length,arrays[i]); //writing the contents of arrays[i] (arrays[i] is a C Array) to the buffer i

            kernelCL.setArg(i, buffer[i]);
        }
        result_buffer = cl::Buffer(contextCL, CL_MEM_WRITE_ONLY, length*sizeof(OpType));
        kernelCL.setArg(arrays.size(), result_buffer);
    }

应该可以工作吗?有关更多信息,请询问!
预先感谢您
-fodinabor

黑暗零

错误-36是CL_INVALID_COMMAND_QUEUE您无法在函数内部对其进行修复。调用命令队列时尚未创建。

真正的错误在其他地方。它只是出现在那儿。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章