GPU 之間直接通信主要采用了以下幾種技術1:
- GPUDirect P2P:NVIDIA 開發的技術,用于單機上的 GPU 間高速通信。在沒有該技術時,GPU 間數據交換需先通過 CPU 和 PCIe 總線復制到主機固定的共享內存,再復制到目標 GPU,數據要被復制兩次。有了 GPUDirect P2P 后,若兩個 GPU 連接到同一 PCIe 總線,可直接訪問相應內存,無需 CPU 參與,將復制操作數量減半,大大降低數據交換延遲。主流開源深度學習框架如 TensorFlow、MXNet 都提供支持,NVIDIA 開發的 NCCL 也針對其進行了特別優化。
- NVLink:NVIDIA 推出的高速、高帶寬互連技術,用于連接多個 GPU 或連接 GPU 與其他設備。它提供直接的點對點連接,具有比傳統 PCIe 總線更高的傳輸速度和更低的延遲。如 V100 搭載的 NVLink2 帶寬為 300GB/s,A100 搭載的 NVLink3 帶寬為 600GB/s,H100 中的第四代 NVLink 鏈路總帶寬(雙向)達到 900GB/s。NVLink 還支持 GPU 之間的內存共享,使得多個 GPU 可以直接訪問彼此的內存空間。為解決單服務器中多個 GPU 全連接問題,NVIDIA 還發布了 NVSwitch,可支持單個服務器節點中 16 個全互聯的 GPU。
- GPUDirect RDMA:結合了 GPU 加速計算和 RDMA 技術,實現了在 GPU 和 RDMA 網絡設備之間直接進行數據傳輸和通信的能力。它允許 GPU 直接訪問 RDMA 網絡設備中的數據,無需通過主機內存或 CPU 的中介,顯著降低傳輸延遲,加快數據交換速度,減輕 CPU 負載。
AMD 的 Infinity Fabric 技術也可實現 GPU 之間的直接通信,它整合了 CPU 與 GPU、GPU 與 GPU 之間的通信,支持緩存一致性和內存共享,在 AMD 的數據中心 GPU 多卡協同計算以及融合 CPU+GPU 的異構計算平臺中應用,可提供數百 GB/s 的帶寬,能優化 CPU 與 GPU 的協同效率