我正在使用CL_MEM_READ_ONLY | CL_MEM_ALLOC_HOST_PTR
创建一个缓冲区。
我只想以一种方式复制内存,从主机到设备。
我使用clEnqueueMapBuffer
获取主机指针,clEnqueueUnmapBuffer
将数据复制到设备。
当我拨打clEnqueueMapBuffer
时,是否会触发从设备到主机的内存副本?
答案 0 :(得分:2)
如果您使用的是CL_MAP_WRITE
,那么它可能会招致设备来托管内存副本。规范说:
clEnqueueMap{Buffer | Image}
返回的指针保证包含clEnqueueMap{Buffer | Image}
命令完成时映射的区域中的最新位
如果您使用的是OpenCL 1.2,则可以使用CL_MAP_WRITE_INVALIDATE_REGION
表示您打算从主机覆盖整个映射区域,这意味着运行时无需将任何数据从设备复制到主机