点对点CUDA传输

4

我听说过点对点内存传输,并阅读了一些相关资料,但实际上并不理解这与标准PCI-E总线传输相比有多快。

我有一个使用多个GPU的CUDA应用程序,可能会对P2P传输感兴趣。我的问题是:它与PCI-E相比有多快?我可以经常使用它让两个设备相互通信吗?


1
“p2p”只是市场用语,意思是CUDA设备现在可以通过PCI-E彼此传输数据。速度将符合您对PCI-E总线的期望。更有趣的是,还有一种叫做“peer access”的东西,它可以让您启动一个内核,从多个设备读取/写入数据。 - Pavan Yalamanchili
这很有趣..你能指向一些描述这个“peer access”的东西吗?另外:把这个变成一个答案,对我来说已经足够了,我会接受它! - Marco A.
添加了带有链接的答案。 - Pavan Yalamanchili
1个回答

10

CUDA的“peer”指的是另一个能够访问当前GPU数据的GPU。所有计算能力为2.0及更高的GPU都启用了此功能。

点对点内存复制涉及使用cudaMemcpy通过PCI-E复制内存,如下所示。

cudaMemcpy(dst, src, bytes, cudaMemcpyDeviceToDevice);

请注意,dstsrc可以在不同的设备上。

cudaDeviceEnablePeerAccess允许用户启动使用来自多个设备数据的内核。内存访问仍然通过PCI-E完成,并且将具有相同的瓶颈。

simplep2p。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接