01
NCCL基础认知
什么是NCCL、在分布式训练中的角色、vs MPI vs GLOO对比
概念对比
02
环境搭建与验证
NCCL安装(源码与二进制)、nvlink拓扑检测、nccl-tests跑分
安装验证
03
通信原语详解
AllReduce、AllGather、ReduceScatter、Broadcast语义与场景
原语语义
04
Ring AllReduce原理
Scatter-Reduce与AllGather两阶段,数据流图与带宽公式
Ring推导
05
Tree AllReduce原理
基于树的归约,跨机场景,延迟与带宽权衡
Tree跨机
06
NVLink与NVSwitch拓扑
NVLink拓扑结构、NVSwitch全互联、多节点拓扑感知
拓扑NVLink
07
NCCL ID与通信域
ncclUniqueId生成、ncclCommInitRank、多进程通信域建立
ID通信域
08
用户Buffer与内部Buffer
注册机制、IPC/GDR共享内存、避免内存拷贝
BufferGDR
09
同步与异步API
ncclAllReduce同步、ncclGroupStart/End批处理、ncclCommAbort
API异步
10
内核调度机制
CUDA stream绑定、多stream并发、CUDAGraph集成
调度Stream
11
带宽压榨之数据分块
chunk size对带宽影响,大消息与小消息策略
分块策略
12
带宽压榨之流水线
多buffer ping-pong、计算通信overlap、异步拷贝
流水线Overlap
13
带宽压榨之拓扑优化
ncclTopo检测、环形路径排序、节点内/间路径选择
拓扑路径
14
带宽压榨之协议选择
Simple vs LL vs LL128,带宽与延迟取舍
协议LL128
15
NCCL环境变量调优
NCCL_ALGO、PROTO、NTHREADS、RINGS等关键变量
环境变量调优
16
NCCL性能Profiling
NCCL_DEBUG=INFO、DEBUG_SUBSYS、DEBUG_FILE
调试Profiling
17
Nsight Systems集成
NCCL kernel trace、通信时间线分析、瓶颈定位
NsightTrace
18
常见性能瓶颈分析
PCIe、NVLink、CPU参与、内存带宽瓶颈
瓶颈PCIe
19
多机通信优化
RDMA/RoCE配置、GDR开启、网卡亲和性绑定
RDMA多机
20
NCCL与PyTorch DDP集成
torch.distributed后端选择、nccl后端、bucket size调优
PyTorchDDP
21
NCCL与Horovod集成
Horovod NCCL controller、tensor fusion、cycle time调优
Horovod融合
22
NCCL与DeepSpeed集成
ZeRO阶段通信模式、通信与计算overlap策略
DeepSpeedZeRO
23
NCCL与Megatron-LM集成
张量并行与流水线并行通信模式、fused allreduce
Megatron并行
24
自定义NCCL算子
基于ncclAllReduce封装自定义op、ncclGroupStart批量提交
自定义算子
25
NCCL错误处理与容错
ncclResult_t错误码、ncclCommAbort恢复、超时处理
容错错误码
26
NCCL多进程与多线程
多进程共享ncclComm、多线程并发通信、线程安全
多进程线程安全
27
NCCL与CUDA Graph集成
capture通信kernel、replay优化、减少launch开销
CUDA GraphReplay
28
NCCL最新特性
NCCL 2.18+ sharp插件、nvls集成、多节点拓扑感知
新特性Sharp
29
实战案例一:单机8卡ResNet-50
通过NCCL调优将通信占比从30%降到10%
实战ResNet
30
实战案例二:跨机64卡GPT-3预训练
多机拓扑感知与RDMA调优,实现线性加速比
实战GPT-3