NCCL学习笔记-概念全解

是什么(What)

高性能通信库,专为多GPU通信优化。加速分布式深度学习训练的集合通信
集合通信

点对点通信

为什么(Why)

通用通信库在GPU通信中性能不足,无法充分利用GPU高带宽和低延迟。

所以需要一个针对GPU架构优化,支持NVLink,NVSwitch的高速互联。

主要还是需要低延迟高带宽

怎么样(How)

怎么通信?其实和MPI差不多。

NCCL中:

进程叫做rank每个rank都有一个rank ID
rank的集合构成了一个"communicator"

也就是一些可以互相通信的进程。

一个rank可以分属于多个communicators

而且在不同的地方可能有不同的rank ID

然后呢?
ncclCommInitRank():初始化指定rank的communicator。
ncclCommInitAll():同时初始化所有rank的communicator。
initTransportsRank():检测可用GPU设备以及拓扑结构,计算最佳通信路径,建立连接。
ncclTopoFillGpu():建立包含GPU的XML树结构,可以设置环境变量NCCL_TOPO_DUMP_FILE来书输出XML文件,并通过该XML文件来查看机器的拓扑结构。

然后两种算法?
Ring算法:基本算法,环形、只能和相邻两个邻居进行数据交换。
特点:简洁;对等
缺点:如果是Ring的all-reduce,延迟比较高

Tree算法:因为二叉树大约一半节点都是叶子节点,那么通过将叶子节点变换为非叶子节点,得到两棵二叉树,每个节点在其中好一棵二叉树是叶子节点,另一棵二叉树是非叶子节点。
特点:延迟更低,高效利用带宽和拓扑结构

单机多卡:NVLink 和 NVSwitch
多机多卡:nfiniBand 或 RoCE

谁(Who)

开发者

何时(When)

初始版本:NCCL 1.0 于 2016 年发布,支持单机多卡通信。

NCCL 2.0:支持多机多卡通信,引入跨节点通信功能。

NCCL 2.6:引入 SHArP 算法,优化 InfiniBand 网络下的通信性能。

何地(Where)

数据中心

GPU 集群中的分布式训练和并行计算。
云计算平台

AWS、Google Cloud、Azure 等云服务提供商的 GPU 实例。
边缘计算

高性能边缘计算设备中的实时数据处理。
NCCL 的硬件环境

GPU:支持 NVLink 和 NVSwitch 的 NVIDIA GPU(如 A100、V100)。

网络:支持 InfiniBand 或 RoCE 的高速网络。

如何解决(How to Solve)

性能优化

自动化选择最优

Ring all reduce

SHArP 算法

分析问题

NCCL 的日志和性能分析工具诊断通信性能瓶颈。

如何解决死锁、数据不一致等通信错误。

结果与影响(Outcome & Impact)

待定,待笔者实际操作。

相关推荐
Hello_Embed13 小时前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
咸甜适中13 小时前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
Grassto14 小时前
RAG 从入门到放弃?丐版 demo 实战笔记(go+python)
笔记
Magnetic_h14 小时前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
研梦非凡15 小时前
ICCV 2025|从粗到细:用于高效3D高斯溅射的可学习离散小波变换
人工智能·深度学习·学习·3d
limengshi13839216 小时前
机器学习面试:请介绍几种常用的学习率衰减方式
人工智能·学习·机器学习
知识分享小能手16 小时前
React学习教程,从入门到精通,React 组件核心语法知识点详解(类组件体系)(19)
前端·javascript·vue.js·学习·react.js·react·anti-design-vue
周周记笔记17 小时前
学习笔记:第一个Python程序
笔记·学习
丑小鸭是白天鹅17 小时前
Kotlin协程详细笔记之切线程和挂起函数
开发语言·笔记·kotlin
潘达斯奈基~17 小时前
《大数据之路1》笔记2:数据模型
大数据·笔记