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 的协同效率