在主机和内核中同时使用OpenCL缓冲区

时间:2018-07-11 06:27:58

标签: opencl

创建OpenCL缓冲区后,我们需要将其映射到主机端,填充所需的数据并取消映射,以便内核可以使用它。对于只读OpenCL缓冲区,是否可以在主机端和内核端同时使用它?

2 个答案:

答案 0 :(得分:0)

否,如果您使用的是地图/取消地图,则不会。取消映射后,主机内存范围的内容无效。也许您可以改用clEnqueueWriteBuffer,然后用作源的主机内存仍然是可以在主机端使用的主机内存。

答案 1 :(得分:0)

同样,不是定期存储。通常,您可以 在GPU和CPU之间同时共享内存,甚至可以进行通信。查看Shared Virtual MemoryAMDIntel)。

非标准的CPU / GPU通信非常罕见,因为一个简单的事实就是人们无法假设ND范围执行的顺序。实现可以按其期望的任何顺序调度它们。因此,如果缓冲区的内容随着内核调度新的工作组而发生变化,则您将无法控制数据流序列。

确实存在诸如“持久内核”之类的罕见例外,其中内核继续运行(就像处理流一样),但是我对此知之甚少。