c++ - cl_context 和 cl::Context 的区别

标签 c++ buffer opencl

我试图为我的 OpenCL 程序创建一个缓冲区。但是,函数

clCreateBuffer

需要一个 cl_context 而不是我正在使用的 cl::Context。 有什么方法可以解决这个问题,或者我在这里做错了什么?

最佳答案

您将 OpenCL C API (clCreateBuffer) 与 C++ API (cl::Context) 混合使用。不要这样做并坚持使用 C 或 C++。

如果您已经有了 cl::Context,那么您应该坚持使用 C++ API。创建缓冲区的相应调用,例如,对于 100 个 float 将是:

cl::Context context(...); // your context creation
cl_int err;
cl::Buffer my_buffer(context, CL_MEM_READ_WRITE, sizeof(cl_float)*100, NULL, &err); 
if (err != CL_SUCCESS) {
    std::cerr << "ERROR: create buffer (" << err << ")" << std::endl;
    exit(1);
}

关于c++ - cl_context 和 cl::Context 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34963355/

相关文章:

c++ - 在 QGraphicsScene 中的视频上画一条线

c++ - openCV:试图在二值图像中找到黑色像素

c - 为什么 getch() 不读取输入的最后一个字符?

c - OpenCL:奇怪的内核行为

c++ - QInputDialog 的样式表

java - Java中的环形缓冲区

java - 了解 TCP 中的缓冲

c - OpenCL 中奇怪的私有(private)内存行为

opencl - 优化批处理矩阵乘法opencl代码

c++ - qt 文件读取行总是在第二次读取时返回 -1