所以我有一个我喜欢使用 OpenCL 实现的应用程序,它使用 MPI 分布在多台机器上。
现在在算法的每次迭代中,我都需要在 MPI 进程之间同步缓冲区,但这里有一个问题:只有 2D 缓冲区的边界需要同步/复制,而不是整个区域。
所以我的问题是,是否可以使用 OpenCL 的内存映射机制(clEnqueueMapBuffer 和 clEnqueueUnmapMemObject)仅读取/写入 2D 缓冲区的边界而不触发整个缓冲区的完整副本。
基本上,这只有在 OpenCL 使用 DMA 而不是主机端缓冲区副本时才有效。所以我的问题真的是 OpenCL 是否支持对离散 PCIe GPU 上的设备缓冲区数据进行 DMA 访问。如果是,在什么硬件和操作系统上?