OpenCL写入缓冲区选择

时间:2011-04-30 00:20:13

标签: opencl gpgpu gpu-programming

  

可能重复:
  Two ways to create a buffer object in opencl: clCreateBuffer vs. clCreateBuffer + clEnqueueWriteBuffer

创建缓冲区后立即将数据复制到设备有什么区别? 即

cl_mem memObj = clCreateBuffer( context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR
, size, dataPtr, NULL);

cl_mem memObj = clCreateBuffer( context, CL_MEM_READ_ONLY , size, NULL, NULL);
clEnqueueWriteBuffer( commandQueue, memObj, CL_TRUE, 0, size, dataPtr, 0, NULL, NULL);

我是OpenCL的新手,所以我只是想弄明白一点。哪种方法最好用。

谢谢!

1 个答案:

答案 0 :(得分:0)

create / enqueue事物(一般而言,不仅仅是在opencl中)的重点是,一旦你创建了一个缓冲区,你可以在计算你想要写的东西之后写入它,然后写一个任意数量的倍。初始化缓冲区与其中的数据和创建缓冲区然后添加数据之间没有功能差异。此外,您的编译器应该优化任何性能差异。