这份题库如何使用 这不是一份背诵名词的题库。面试官真正要判断的是候选人能否在下面四层之间建立闭环: 数学语义 -> 并行策略 -> NCCL 实现 -> 生产观测与故障证据 完成本篇知识面筛查后,可以继续阅读20 道 NCCL 进阶面试实验题;后者会把完成语义、Ring/device primitive、TP Decode 小消息、FP16 数值反例、transpo...
Capstone 目标 前35章分别解释了API、算法、transport、框架和生产工程。本章只追一件事:一个64 MiB DDP gradient bucket如何从autograd走到NVLink,并在运行前做出可证伪预测。 端到端链条: Autograd AccumulateGrad -> DDP Reducer mark_variable_ready -> buc...
本章问题 “升级后慢了”不是可执行结论。生产治理必须回答: 当前节点是否仍属于同一个硬件/拓扑class? runtime、driver、CUDA、NCCL和配置是否与批准manifest一致? correctness、path和performance哪个先发生变化? 性能差值是否超过统计噪声? 高CV应该判PASS、FAIL还是INCONCLUSIVE? ch...
本章问题 一次AllReduce可以同时出现在四套观测系统里: NCCL debug: 初始化、拓扑、tuning、enqueue NVTX: host-side语义range Nsight: GPU kernel与时间线 Flight Recorder: ProcessGroup、sequence、shape、state 它们不是相互替代,而是回答不同问题。本章...
本章问题 分布式故障日志经常有几十到几百行,但最后一行通常只是: ChildFailedError 它只说明launcher发现子进程失败,不回答根因。本章要建立一条可执行的因果链: 应用注入点 -> collective contract / rank liveness -> WorkNCCL timeout or NCCL async error -> com...
本章问题 只会把TP背成AllReduce、PP背成Send/Recv、MoE背成AllToAll,仍不足以诊断真实训练。 Infra工程师需要从tensor shape和rank坐标直接推出: 一个rank为什么同时属于多个Process Group? TP的column shard和row shard分别切哪一维? Row-parallel输出何时是AllReduce,...
本章问题 ZeRO经常被概括成一张“stage越高显存越低”的表,但infra工程需要回答更具体的问题: 参数、梯度、optimizer state各占多少字节? ZeRO-0/1/2/3分别分片哪种状态? “每rank分片”与“训练计算时临时完整”是否矛盾? ZeRO-1为何仍需要梯度AllReduce和更新后参数同步? ZeRO-2为何用ReduceScatte...
本章问题 “DDP在backward里做AllReduce”只描述了结果,没有解释调度机制。真正需要掌握的是: Reducer如何知道某个parameter gradient已经ready? parameter index、bucket index和intra-bucket index分别是什么? bucket_cap_mb为何不是每个bucket的严格上限? 第一轮为...
本章问题 训练代码调用的是: work = torch.distributed.all_reduce(tensor, async_op=True) NCCL C API却需要ncclComm_t、CUDA stream、pointer、count、datatype和reduction op。 中间的ProcessGroupNCCL必须解决: Python API如何进入ncc...
本章问题 看到下面任意一条日志,都不能直接得出“集合通信已经卸载”的结论: Plugin Path : .../libnccl-net.so P2P plugin IBext_v8 NCCL_COLLNET_ENABLE=1 NVLS multicast support is available NCCL_ALGO=NVLS 因为从共享库出现到数据真正经过offload路径,中间至少...
本章问题 一台机器有多张NIC、多port和多GPU时,“NCCL用了IB”远远不够。还要知道: 哪个GPU -> 哪个NIC device/port -> 哪条rail -> 对端哪个NIC 是否经另一个GPU作PXN relay 是否把多个port merge成一个logical net device 本章回答: NIC、port、ASIC、merged...
本章问题 第25章的RDMA Write仍假设HCA已经得到GPU buffer的remote/local key。本章补上这段: CUDA allocation -> GPU/NIC capability gate -> topology distance gate -> peermem or DMA-BUF memory registration -...
本章问题 第24章解释了 NET proxy;本章进入 ncclNet backend: Socket: send/recv -> TCP/IP -> kernel network stack IB/RoCE: post_send/post_recv -> QP -> CQ -> HCA DMA 要回答: bootstrap Socket 和 d...
本章问题 第 23 章已经看到 GPU primitive 通过 head/tail/flag 与 connector 交换 credit。 但走 NET transport 时,GPU 不会自己调用 send()、verbs ibv_post_send() 或 plugin test()。GPU kernel 与 NIC/TCP 之间还有 CPU progress engine: GP...
本章问题 第 22 章停在 cuLaunchKernel。进入 GPU 后,NCCL 还要完成: blockIdx -> channel batch -> shared-memory work funcId -> RunWorkBatch / RunWorkColl Ring chunk -> send / recvReduceSend / recvCopySen...
本章问题 调用 ncclAllReduce 不等于立即启动一个固定 kernel。API 参数依次经历: public API -> ncclInfo -> ncclTaskColl -> tuning/scheduling -> ncclDevWorkColl -> ncclWorkBatch -> ncc...
本章问题 第 20 章证明 transport 选择顺序,但“走 P2P”仍可能是多种不同机制: same PID direct pointer cuMem shareable mapping legacy CUDA IPC mapping P2P write / P2P read P2P copy-engine proxy intermediate GPU indirect SHM...
本章问题 第 18、19 章解决了 topology path 和逻辑 Ring/Tree,但 graph 中的一条 rank A -> rank B 边还不是可执行的数据通路。NCCL 必须为每个 channel、peer、 方向和连接槽选择 transport,创建本地资源,交换连接描述,导入对端资源,最后把 device kernel 所需的指针和 flags 写入 GPU 可...
本章问题 上一章得到的是任意 GPU/NIC pair 的 path matrix。NCCL 还必须解决一个组合优化 问题:选择每个 channel 的 GPU 顺序、起止 NET、pattern、路径等级和目标带宽, 同时不能让多个 channel 使用的累计带宽超过同一物理 link 容量。 本章回答: Ring、Tree、Split Tree、Balanced Tree p...
本章问题 nvidia-smi topo -m 显示 NV2,还不足以解释 NCCL 如何做决策。NCCL 需要把 GPU、PCI bridge、NUMA CPU、NIC、NET device 和 NVSwitch 转换成带权图,再预计算 GPU↔GPU、GPU↔NIC 路径。后续 P2P、SHM、NET、graph search 和 tuner 都读取这张图。 本章回答: NC...
A new version of content is available.