如何直接在两个GPU之间复制cudaArray?

时间:2016-02-09 23:35:28

标签: memory-management cuda gpu gpu-programming

假设我在GPU1中有一个cudaArray,在GPU2中有另一个cudaArray。

使用cudaMemcpyDeviceToDevice标志调用cudaMemcpyArrayToArray实际上会导致GPU1 cudaArray被复制到主机内存,并通过查看分析器将主机内存复制到GPU2 cudaArray。

我尝试将GPU1 cudaArray复制到GPU1全局内存并调用cudaMemcpyPeer复制到GPU2全局内存,然后将其复制到GPU2 cudaArray。这比通过主机内存更好,但仍然有很多冗余复制。

为什么没有cudaMemcpyPeerArrayToArray?如何直接在两个GPU之间复制cudaArray?

1 个答案:

答案 0 :(得分:3)

CUDA阵列有一个对等API。

使用cudaMemcpy3DPeercudaMemcpy3DPeerAsync。这将使用最佳设备来从系统上可用的对等选项中设备传输路径。