GPUDirect Peer 2 peer using PCIe bus:如果我需要在其他GPU上访问太多数据,会不会导致死锁?
GPUDirect Peer 2 peer using PCIe bus: If I need to access too much data on other GPU, will it not result in deadlocks?
我有一个需要大量数据的模拟程序。
我将数据加载到 GPU 中进行计算,数据中存在很多依赖性。
由于 1 个 GPU 不足以处理数据,所以我将其升级为 2 个 GPU。
但限制是,如果我需要其他 GPU 上的数据,必须先有一个副本到主机。
那么,如果我使用 GPU Direct P2P,PCI 总线是否会处理 GPU 之间那么多的来回通信?不会导致死锁吗?
我是新手,所以需要一些帮助和见解。
PCI Express 双向全速。应该没有 "deadlock",就像您在同步 MPI 通信中可能遇到的那样,在继续之前需要握手。
正如罗伯特在评论中提到的 "accessing data over PCIE bus is a lot slower than accessing it from on-board memory"。但是,它应该比将数据从 GPU1 传输到 CPU,然后从 CPU 传输到 GPU2 快得多,因为您不必复制两次。
您应该尽量减少 GPU 到 GPU 的传输量,特别是如果您必须在同步数据之前同步数据(在某些算法中可能会发生)。但是,您也可以尝试在传输数据时进行一些并发执行。您可以查看 CUDA C 指南的对等内存部分。
http://docs.nvidia.com/cuda/cuda-c-programming-guide/#peer-to-peer-memory-copy
我有一个需要大量数据的模拟程序。 我将数据加载到 GPU 中进行计算,数据中存在很多依赖性。 由于 1 个 GPU 不足以处理数据,所以我将其升级为 2 个 GPU。 但限制是,如果我需要其他 GPU 上的数据,必须先有一个副本到主机。
那么,如果我使用 GPU Direct P2P,PCI 总线是否会处理 GPU 之间那么多的来回通信?不会导致死锁吗?
我是新手,所以需要一些帮助和见解。
PCI Express 双向全速。应该没有 "deadlock",就像您在同步 MPI 通信中可能遇到的那样,在继续之前需要握手。
正如罗伯特在评论中提到的 "accessing data over PCIE bus is a lot slower than accessing it from on-board memory"。但是,它应该比将数据从 GPU1 传输到 CPU,然后从 CPU 传输到 GPU2 快得多,因为您不必复制两次。
您应该尽量减少 GPU 到 GPU 的传输量,特别是如果您必须在同步数据之前同步数据(在某些算法中可能会发生)。但是,您也可以尝试在传输数据时进行一些并发执行。您可以查看 CUDA C 指南的对等内存部分。 http://docs.nvidia.com/cuda/cuda-c-programming-guide/#peer-to-peer-memory-copy