NCCL的bootstrap和transport层?NCCL的bootstrap和transport层?
NCCL 提供多 GPU/多机集合通信(all-reduce、all-gather、reduce-scatter 等),内部大致分 bootstrap 与 transport 等层。Bootstrap:负责发现与组网——哪些 rank、如何找到彼此(如通过环境变量、socket、共享存储等),建立控制面。Transport:负责实际数据传输——选择网络路径(如 Net/Socket、IB、RoCE)、选择算法(ring、tree 等)、执行 send/recv 与同步。
启动时各 rank 需知道「总 rank 数、本 rank id、其它 rank 的地址」等。NCCL 支持多种 bootstrap:如 env(NCCL_SOCKET_IFNAME、master 地址等环境变量)、file(共享文件里写地址)、tcp(指定 master 与 port)等。Bootstrap 完成后,各 rank 拥有一致的 group 与拓扑信息,供 transport 建连与选算法。
根据检测到的网络(IB、RoCE、TCP 等)创建 channel、QP 或 socket;根据 topology(单机多卡、多机)选择 ring、tree、collnet 等算法;执行实际的 reduce、all-gather 等步骤。调优常涉及 NCCL_DEBUG、NCCL_IB_DISABLE、NCCL_ALGO 等环境变量。
| 返回模块 | 返回总览 |