3

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

那么,如果我使用 GPU Direct P2P,PCI 总线会处理 GPU 之间的大量来回通信吗?不会导致死锁吗?

我是新手,所以需要一些帮助和见解。

4

1 回答 1

1

PCI Express 在两个方向上都具有全速。不应该像您在同步 MPI 通信中遇到的那样需要在继续之前进行握手的“死锁”。

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

您应该尽量减少 GPU 到 GPU 的传输量,特别是如果您必须在执行之前同步数据(在某些算法中可能会发生)。但是,您也可以尝试在传输数据时进行一些并发执行。您可以查看 CUDA C 指南的对等内存部分。 http://docs.nvidia.com/cuda/cuda-c-programming-guide/#peer-to-peer-memory-copy

于 2015-01-08T18:20:41.563 回答