首先,需要说一些特性在前面:
- NCCL是NVIDIA 集体通信库(NVIDIA Collective Communication Library),专注于 GPU 间交互,利用 NVLink、PCIe 和 InfiniBand (IB) 等互连技术实现高带宽和低延迟。
- NCCL并不是完全开源
主要功能
每个GPU都可以新建一个通信器,有对应的通信Rank编号和终止操作。
- 创建对象:ncclCommInitAll
- 创建跨线程通信对象:ncclCommInitRank
- 销毁通信器:ncclCommDestroy
- 取消通信并终止:ncclCommAbort
NCCL有五种集体通信:
- ncclAllReduce
- ncclBroadcast
- ncclReduce
- ncclAllGather
- ncclReduceScatter
参考文献:
paper —— Demystifying NCCL: An In-depth Analysis of GPU Communication Protocols and Algorithms