Cuda GPUDirect Peer 2 Peer使用PCIe总线:如果我需要访问其他GPU上的太多数据,是否会导致死锁?

Cuda GPUDirect Peer 2 Peer使用PCIe总线:如果我需要访问其他GPU上的太多数据,是否会导致死锁?,cuda,pci-e,multi-gpu,Cuda,Pci E,Multi Gpu,我有一个需要大量数据的模拟程序。 我将数据加载到GPU中进行计算,数据中有很多依赖项。 因为1个GPU不足以存储数据,所以我将其升级为2个GPU。 但限制是,如果我需要其他GPU上的数据,必须先有一个到主机的副本 因此,如果我使用GPU直接P2P,PCI总线是否会处理GPU之间的大量来回通信?这不会导致僵局吗 我是新手,因此需要一些帮助和见解。PCI Express在两个方向都全速运行。在同步MPI通信中,不应该出现需要握手才能继续的“死锁” 正如Robert在评论中提到的“通过PCIE总线访问

我有一个需要大量数据的模拟程序。 我将数据加载到GPU中进行计算,数据中有很多依赖项。 因为1个GPU不足以存储数据,所以我将其升级为2个GPU。 但限制是,如果我需要其他GPU上的数据,必须先有一个到主机的副本

因此,如果我使用GPU直接P2P,PCI总线是否会处理GPU之间的大量来回通信?这不会导致僵局吗


我是新手,因此需要一些帮助和见解。

PCI Express在两个方向都全速运行。在同步MPI通信中,不应该出现需要握手才能继续的“死锁”

正如Robert在评论中提到的“通过PCIE总线访问数据比从板载内存访问数据慢得多”。但是,它应该比从GPU1到CPU再从CPU到GPU2传输数据快得多,因为您不必复制它两次

您应该尽量减少GPU到GPU的传输量,特别是如果您必须在同步数据之前进行同步(可能在某些算法中发生)。但是,您也可以尝试在传输数据时执行一些并发执行。您可以查看《CUDA C指南》的对等内存部分。

不,不会出现死锁。但是,通过PCIE总线访问数据要比从板载内存访问数据慢得多。