# nccl-tutorial **Repository Path**: mirrors_smallnest/nccl-tutorial ## Basic Information - **Project Name**: nccl-tutorial - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-23 - **Last Updated**: 2026-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NCCL 教程 本教程旨在通过一系列由浅入深的示例,帮助您理解和掌握 NVIDIA 集合通信库 (NCCL)。 ## 目录 * **[第一章:NCCL 简介](./chapter1/README.md)** * 背景介绍:什么是 NCCL,它的优势以及应用场景。 * **[第二章:入门:初始化和基本集合操作](./chapter2/README.md)** * 背景介绍:如何初始化 NCCL 通信器,并使用 `ncclAllReduce` 进行一个简单的集合操作。 * 代码示例:`all_reduce_simple.c` * 总结 * **[第三章:集合通信:广播 (Broadcast)](./chapter3/README.md)** * 背景介绍:理解广播操作,即一个 GPU 将数据发送到所有其他 GPU。 * 代码示例:`broadcast_simple.c` * 总结 * **[第四章:集合通信:归约 (Reduce)](./chapter4/README.md)** * 背景介绍:学习归约操作,即从所有 GPU 收集数据并进行计算,将结果存储在一个 GPU 上。 * 代码示例:`reduce_simple.c` * 总结 * **[第五章:集合通信:全收集 (All-Gather)](./chapter5/README.md)** * 背景介绍:掌握全收集操作,每个 GPU 收集所有其他 GPU 的数据。 * 代码示例:`all_gather_simple.c` * 总结 * **[第六章:点对点通信:发送和接收](./chapter6/README.md)** * 背景介绍:除了集合通信,NCCL 也支持点对点操作。 * 代码示例:`send_recv_simple.c` * 总结 * **[第七章:管理多个 GPU](./chapter7/README.md)** * 背景介绍:如何在一个程序中管理多个 GPU 设备,并让它们协同工作。 * 代码示例:`multi_gpu_all_reduce.c` * 总结 * **[第八章:NCCL 与 CUDA 流](./chapter8/README.md)** * 背景介绍:如何将 NCCL 操作与 CUDA 流结合,以实现计算和通信的重叠。 * 代码示例:`stream_all_reduce.c` * 总结 * **[第九章:集合通信:归约分散 (Reduce-Scatter)](./chapter9/README.md)** * 背景介绍:学习归约分散操作,将所有GPU数据归约后分散到各GPU的不同部分。 * 代码示例:`reduce_scatter_simple.c` * 总结 * **[第十章:集合通信:全交换 (All-to-All)](./chapter10/README.md)** * 背景介绍:掌握全交换操作,每个GPU向每个其他GPU发送和接收不同的数据。 * 代码示例:`all_to_all_simple.c` * 总结 ## NCCL 集合算子总览 本教程现已涵盖了 NCCL 支持的所有主要集合通信算子: ### 基础集合算子 1. **AllReduce** (第二章) - 所有GPU参与归约,结果广播给所有GPU 2. **Broadcast** (第三章) - 一个GPU广播数据到所有其他GPU 3. **Reduce** (第四章) - 所有GPU数据归约到指定的根GPU 4. **AllGather** (第五章) - 收集所有GPU数据,每个GPU都获得完整数据集 5. **ReduceScatter** (第九章) - 归约后分散,每个GPU获得结果的不同部分 ### 高级通信模式 6. **Send/Recv** (第六章) - 点对点通信,GPU之间直接发送和接收数据 7. **AllToAll** (第十章) - 全交换通信,每个GPU与所有其他GPU交换不同数据 ### 系统集成和优化 8. **多GPU管理** (第七章) - 在单个程序中协调多个GPU设备 9. **CUDA流集成** (第八章) - 将NCCL与CUDA流结合实现计算通信重叠 这些算子构成了分布式深度学习和高性能计算的基础通信原语,涵盖了从简单的数据广播到复杂的数据重分布等各种通信模式。 ## 环境假设 本教程中的所有示例都假定在支持 RoCEv2 的网络环境下运行,以实现高效的 RDMA 通信。