MCCL 概览
摩尔线程集合通信库(MCCL)可实现针对摩尔线程 GPU 和网络进行性能优化的多 GPU 和多节点通信基元。MCCL 提供了 AllReduce、Broadcast、Reduce、AllGather、ReduceScatter、AlltoAll、Gather、Scatter 以及点对点 send/receive 等原语,这些原语均经过优化,可通过节点内的 PCIe 和 MTLink 高速互联以及节点间的 InfiniBand 网络实现高带宽和低延迟。
MCCL 支持节点内和跨节点通信,可以实现拓扑的自动检测,计算最优路径,最终实现 GPUs 之间的高效传输。
MCCL 特性
- 拓扑感知:自动检测 GPU 拓扑,计算最优通信路径
- 高带宽低延迟:针对 PCIe、MTLink、InfiniBand 优化
- 多种原语:AllReduce、Broadcast、Reduce、AllGather、ReduceScatter、AlltoAll、Gather、Scatter、P2P Send/Receive
- 易于集成:简单的 C API,遵循 MPI 集体通信规范
- stream 集成:接受
MUSA stream参数,与 MUSA 编程模型直接集成 - 多编程模型:支持单线程多卡、多线程(每 GPU 一线程)、多进程(MPI)
- 可扩展的 2.4 主机侧管理能力:支持通信器能力查询、动态扩容、通信器内存管理和 RMA signal
主要能力补充
当前文档覆盖的 MCCL 能力主要集中在以下几类:
- 通信器能力探测:支持
mcclCommQueryProperties,用于查询deviceApiSupport、multimemSupport、ginType、hostRmaSupport、nLsaTeams等属性 - 通信器动态扩容:支持
mcclCommGetUniqueId和mcclCommGrow - 通信器内存管理:支持
mcclCommSuspend、mcclCommResume、mcclCommMemStats - 对称窗口辅助接口:支持
mcclWinGetUserPtr、mcclGetLsaDevicePointer - RMA signal API:支持
mcclPutSignal、mcclSignal、mcclWaitSignal
如果你是从 2.1 升级,建议先 阅读 迁移指南。
MCCL 框架

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

图 2 PCIe 的 P2P 示意图
跨节点通信
节点间 GPU 进行数据传输,主要的物理介质有普通以太网或者 InfiniBand,涉及的技术有 GPUDirect RDMA。

图 3 跨节点传输