首先,需要说一些特性在前面:
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