HCCL(Huawei Collective Communication Library)
华为集合通信库,昇腾NPU生态对标NCCL的组件,属于CANN工具栈的一部分。
- 绑定硬件:昇腾NPU(910B/910C等),依赖CANN,不能跑在NVIDIA GPU上
- 底层链路:单机 HCCS(昇腾卡间高速互联) / PCIe;跨机 RoCE v2 / 灵衢高速协议
- 特点
- 对外API语义对齐NCCL:
all_reduce、all_gather等原语名字完全一样;PyTorch‑NPU只需要改backend="hccl",上层训练代码几乎不用改动 - 内部实现完全自研,拓扑探测、算法调度针对HCCS硬件做优化,也支持Ring、HD等集合通信算法
- 同样没有点对点原语;NPU之间点对点拷贝使用CANN提供的设备拷贝接口
- 有自己独立的环境变量,不要把NCCL的环境变量复制到昇腾环境,完全无效
- 对外API语义对齐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
- 特点
- 只做集合通信,不提供原生点对点send/recv;点对点要用
cudaMemcpyPeer或者MPI+CUDA‑Aware - 自动探测机器拓扑,自动选择Ring / Tree(Double Binary Tree) / Halving‑Doubling等算法,根据消息大小切换最优算法
- 通信内核跑在GPU SM单元,新版本支持CE拷贝引擎卸载通信,不和计算抢SM算力
- PyTorch Distributed、DeepSpeed、Megatron默认后端
backend="nccl" - 开源,可编译,大量环境变量调优(
NCCL_IB_DISABLE、NCCL_NVLINK_DISABLE等)
- 只做集合通信,不提供原生点对点send/recv;点对点要用
位置:PyTorch分布式 ↔ NCCL ↔ CUDA驱动 ↔ NVLink/IB硬件
补充:XCCL家族(同类库)
所有AI芯片厂商都有自己的集合通信库,遵循同一套通信原语抽象:
- RCCL:AMD GPU集合通信库(ROCm)
- oneCCL:Intel GPU集合通信库
- MSCCL++:微软可编程集合通信库,用于定制大模型通信
本质:通信原语是抽象语义;NCCL/HCCL/RCCL是针对自家硬件的高性能实现库。上层框架只调用原语语义,底层替换不同XCCL库适配不同硬件。