我有一个仿真程序,需要大量的数据。我在GPU中加载数据以进行计算,数据中有很多依赖项。由于1个GPU对数据不够,所以我将其升级为2个GPU。但是限制是,如果我需要其他GPU上的数据,首先必须有一个副本来托管。
那么,如果我使用GPU直接P2P,PCI总线会处理这么多的GPU之间的通信吗?会导致死锁吗?
我是新手,所以需要一些帮助和洞察力。
发布于 2015-01-08 18:20:41
PCI在两个方向上都有全速。不应该出现“死锁”,就像您在进行同步MPI通信时所经历的那样,这种通信需要在进行之前进行握手。
正如罗伯特在一条评论中提到的,“通过PCIE总线访问数据比从车载内存访问数据要慢得多”。但是,它应该比将数据从GPU1传输到CPU,然后从CPU传输到GPU2要快得多,因为您不必复制它两次。
您应该尽量减少GPU到GPU的传输量,特别是当您必须在进行数据同步之前(在某些算法中可能发生)。但是,您也可以在传输数据时尝试执行一些并发执行。您可以查看CUDA C指南的对等内存部分。http://docs.nvidia.com/cuda/cuda-c-programming-guide/#peer-to-peer-memory-copy
https://stackoverflow.com/questions/27832273
复制相似问题