我听说过点对点内存传输并阅读了有关它的内容,但无法真正理解这与标准PCI-E总线传输相比有多快。
我有一个使用多个gpu的CUDA应用程序,我可能对P2P传输感兴趣。我的问题是:与PCI-E相比有多快?我可以经常使用它来让两个设备相互通信吗?
答案 0 :(得分:8)
CUDA“peer”指的是另一个能够从当前GPU访问数据的GPU。所有具有计算2.0及更高版本的GPU都启用了此功能。
对等内存副本涉及使用cudaMemcpy
通过PCI-E复制内存,如下所示。
cudaMemcpy(dst, src, bytes, cudaMemcpyDeviceToDevice);
请注意,dst
和src
可以位于不同的设备上。
cudaDeviceEnablePeerAccess
使用户能够启动使用来自多个设备的数据的内核。内存访问仍然通过PCI-E完成,并且具有相同的瓶颈。
一个很好的例子就是来自cuda样本的simplep2p。