8. MCCL加速GPU通信
8.1. MCCL简介
摩尔线程集合通信库 (MCCL) 可实现针对摩尔线程GPU 和网络进行性能优化的多 GPU 和多节点通信基元。MCCL 提供了 all-gather、all-reduce、broadcast、reduce、reduce-scatter、point-to-point send 和 receive 等原语,这些原语均经过优化,可通过节点内的 PCIe 和 MTLink 高速互联以及节点间的InfiniBand网络实现高带宽和低延迟。
MCCL支持节点内和跨节点通信。可以实现拓扑的自动检测,计算最佳的路径,最终实现GPUs之间的高效传输

图1 MCCL框架图
8.1.1. 节点内
节点内 GPU 之间进行数据传输,主要的物理介质是 PCIe 和 MTLink,涉及到的主要技术有 GPUDirect P2P,GPUDirect P2P 避免数据通过 CPU 进行中转,降低延时,同时可以利用 GPU 高速互联的带宽。具体原理见下图

图2 显示PCIe的P2P示意图
8.1.2. 跨节点
节点间 GPU 进行数数据,主要的物理介质有普通以太网或者 InfiniBand,涉及的技术有 GPUDirect RDMA,具体原理见下图

图3 跨节点传输
8.2. MCCL支持的集合通信
8.2.1. Broadcast
广播操作将数据从一个 GPU (根 GPU) 分发到所有 GPU。 所有 GPU 的内容和跟 GPU 的内容一致。

图4 broadcast运算示意图