【发布时间】:2012-07-08 05:34:56
【问题描述】:
我试图了解 CL_MEM_USE_HOST_PTR 和 CL_MEM_COPY_HOST_PTR 的工作原理。 基本上当使用 CL_MEM_USE_HOST_PTR 时,比如在创建 2D 图像时,这不会将任何内容复制到设备,而是 GPU 将参考主机上的映射内存(clEnqueueMapBuffer 映射它),进行处理,我们可以将结果写入其他位置.
另一方面,如果我使用 CL_MEM_COPY_HOST_PTR,它将创建设备上主机 ptr 指向的数据的副本(我猜它会创建一个单独的副本而不仅仅是缓存)。现在将对复制到设备的数据进行处理,然后将结果再次复制到主机。希望我理解正确。
所以我的查询是... 我想这样做只是出于我的好奇心。我将使用 CL_MEM_USE_HOST_PTR 现在即使设备可以访问主机内存,我希望 GPU 内核在设备本身上创建一个单独的副本(不使用 COPY_HOST_PTR,因为这再次在主机本身中完成)然后执行处理这些数据。这是怎么做到的??
【问题讨论】: