我有需要大量数据的模拟程序。 我将数据加载到GPU中进行计算,并且数据中存在很多依赖性。 由于1 GPU不足以存储数据,因此我将其升级为2个GPU。 但是限制是,如果我需要在其他GPU上使用数据,则必须先备份一份副本。
所以,如果我使用GPU Direct P2P,那么PCI总线会处理GPU之间的大量来回通信吗?它不会导致死锁吗?
我是新手,所以需要一些帮助和见解。
答案 0 :(得分:1)
PCI Express在两个方向都有全速。在进行之前,您可能不会遇到需要握手的同步MPI通信中的“死锁”。
罗伯特在评论中提到“通过PCIE总线访问数据比从板载内存访问数据慢得多”。但是,它应该比将数据从GPU1传输到CPU,然后从CPU传输到GPU2要快得多,因为您不必将其复制两次。
您应该尽量减少GPU到GPU传输的数量,特别是如果您必须在执行之前同步数据(可能会在某些算法中发生)。但是,您也可以尝试在传输数据时执行一些并发执行。您可以查看CUDA C指南的Peer-to-Peer内存部分。 http://docs.nvidia.com/cuda/cuda-c-programming-guide/#peer-to-peer-memory-copy