我可以重用使用CL_MEM_COPY_HOST_PTR创建的opencl映像吗?

时间:2014-07-18 02:09:43

标签: opencl

我已经通过

创建了一个图像
cl_mem preprocessIn = clCreateImage (context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, &format, &desc,  rgbaBuffer, &error_code);

我想保留preprocessIn映像以进行多个内核运行,只需更新主机内存缓冲区rgbaBuffer。

这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

CL_MEM_COPY_HOST_PTR标志仅表示将使用host_ptr中的值初始化内存对象。

如果你想保持主持人和设备内存对象同步,您有多种选择:

  1. 在内存更新之前/之后进行读/写。
  2. 使用USE_HOST_PTR标志创建内存对象。
  3. 首先创建设备端内存对象,然后将其映射到主机端,当主机和辅助设备需要它时。取消映射,在设备上需要它。在这种情况下,主机端不需要malloc / new。