HCCL(Huawei Collective Communication Library)

华为集合通信库,昇腾NPU生态对标NCCL的组件,属于CANN工具栈的一部分。

  • 绑定硬件:昇腾NPU(910B/910C等),依赖CANN,不能跑在NVIDIA GPU上
  • 底层链路:单机 HCCS(昇腾卡间高速互联) / PCIe;跨机 RoCE v2 / 灵衢高速协议
  • 特点
    1. 对外API语义对齐NCCL:all_reduceall_gather等原语名字完全一样;PyTorch‑NPU只需要改backend="hccl",上层训练代码几乎不用改动
    2. 内部实现完全自研,拓扑探测、算法调度针对HCCS硬件做优化,也支持Ring、HD等集合通信算法
    3. 同样没有点对点原语;NPU之间点对点拷贝使用CANN提供的设备拷贝接口
    4. 有自己独立的环境变量,不要把NCCL的环境变量复制到昇腾环境,完全无效

位置:PyTorch‑NPU / MindSpore ↔ HCCL ↔ CANN驱动 ↔ HCCS/RoCE硬件

NCCL vs HCCL

二者都是AI芯片专用集合通信库(XCCL家族),实现同一套通信原语(AllReduce / AllGather / Reduce‑Scatter / Broadcast / AlltoAll),服务多机多卡大模型训练;但是硬件绑定、底层实现完全独立,不能混用

NCCL(NVIDIA Collective Communications Library)

英伟达集合通信库,NVIDIA GPU生态标配。

  • 绑定硬件:NVIDIA GPU(A100/H100等),依赖CUDA
  • 底层链路:单机 NVLink / PCIe;跨机 InfiniBand / RoCE
  • 特点
    1. 只做集合通信不提供原生点对点send/recv;点对点要用cudaMemcpyPeer或者MPI+CUDA‑Aware
    2. 自动探测机器拓扑,自动选择Ring / Tree(Double Binary Tree) / Halving‑Doubling等算法,根据消息大小切换最优算法
    3. 通信内核跑在GPU SM单元,新版本支持CE拷贝引擎卸载通信,不和计算抢SM算力
    4. PyTorch Distributed、DeepSpeed、Megatron默认后端 backend="nccl"
    5. 开源,可编译,大量环境变量调优(NCCL_IB_DISABLENCCL_NVLINK_DISABLE等)

位置:PyTorch分布式 ↔ NCCL ↔ CUDA驱动 ↔ NVLink/IB硬件

补充:XCCL家族(同类库)

所有AI芯片厂商都有自己的集合通信库,遵循同一套通信原语抽象:

  • RCCL:AMD GPU集合通信库(ROCm)
  • oneCCL:Intel GPU集合通信库
  • MSCCL++:微软可编程集合通信库,用于定制大模型通信

本质:通信原语是抽象语义;NCCL/HCCL/RCCL是针对自家硬件的高性能实现库。上层框架只调用原语语义,底层替换不同XCCL库适配不同硬件。