假设我在GPU1中有一个cudaArray,在GPU2中有另一个cudaArray。
使用cudaMemcpyDeviceToDevice标志调用cudaMemcpyArrayToArray实际上会导致GPU1 cudaArray被复制到主机内存,并通过查看分析器将主机内存复制到GPU2 cudaArray。
我尝试将GPU1 cudaArray复制到GPU1全局内存并调用cudaMemcpyPeer复制到GPU2全局内存,然后将其复制到GPU2 cudaArray。这比通过主机内存更好,但仍然有很多冗余复制。
为什么没有cudaMemcpyPeerArrayToArray?如何直接在两个GPU之间复制cudaArray?
答案 0 :(得分:3)
CUDA阵列有一个对等API。
使用cudaMemcpy3DPeer或 cudaMemcpy3DPeerAsync。这将使用最佳设备来从系统上可用的对等选项中设备传输路径。