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)

待定,待笔者实际操作。

相关推荐
雾岛听蓝23 分钟前
Qt开发核心笔记:从HelloWorld到对象树内存管理与坐标体系详解
开发语言·经验分享·笔记·qt
2501_9453184910 小时前
备考方案:针对数据分析师的知识结构,制定攻克赛一认证的最优学习路径
学习·百度
2301_7926748612 小时前
java学习day29(juc)
java·开发语言·学习
qq_5710993513 小时前
学习周报四十
学习
Flittly14 小时前
【SpringAIAlibaba新手村系列】(16)调用百度 MCP 服务
java·笔记·spring·ai·springboot
瑶光守护者14 小时前
【一文读懂】OpenClaw系统架构分析:自主人工智能智能体的范式迁移与技术底座分析
人工智能·笔记·学习·系统架构·边缘计算·openclaw
锦瑟弦音15 小时前
金蝶二开笔记&&setCancelMessage
笔记
炽烈小老头15 小时前
【每天学习一点算法 2026/04/13】两数相除
学习·算法
_李小白15 小时前
【OSG学习笔记】Day 45: osg::Camera::DrawCallback (抓取图片)
笔记·学习
青苔猿猿16 小时前
OpenWebUI(20)源码学习-版本升级
人工智能·学习·ai·openwebui