OpenCL缓冲区数组 - clEnqueueWriteBuffer -36

时间:2014-05-01 12:55:57

标签: c++ opencl

当我正在处理易于使用的OpenCL实施时,我遇到了错误-36 clEnqueueWriteBuffer。我使用OpenCL C++ Wrapper 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

1 个答案:

答案 0 :(得分:1)

错误-36是CL_INVALID_COMMAND_QUEUE。你无法在函数内修复它。调用它时,命令队列尚未创建。

真正的错误在别处。它只是出现在那里。