想要只读缓冲区,只将数据从主机复制到设备

时间:2014-12-24 12:43:58

标签: opencl

我正在使用CL_MEM_READ_ONLY | CL_MEM_ALLOC_HOST_PTR创建一个缓冲区。

我只想以一种方式复制内存,从主机到设备。

我使用clEnqueueMapBuffer获取主机指针,clEnqueueUnmapBuffer 将数据复制到设备。

当我拨打clEnqueueMapBuffer时,是否会触发从设备到主机的内存副本?

1 个答案:

答案 0 :(得分:2)

如果您使用的是CL_MAP_WRITE,那么它可能会招致设备来托管内存副本。规范说:

  

clEnqueueMap{Buffer | Image}返回的指针保证包含clEnqueueMap{Buffer | Image}命令完成时映射的区域中的最新位

如果您使用的是OpenCL 1.2,则可以使用CL_MAP_WRITE_INVALIDATE_REGION表示您打算从主机覆盖整个映射区域,这意味着运行时无需将任何数据从设备复制到主机