首先,需要说一些特性在前面:

  • 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

NCCL Documentation