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)

待定,待笔者实际操作。

相关推荐
纵有疾風起18 分钟前
C++—string(1):string类的学习与使用
开发语言·c++·经验分享·学习·开源·1024程序员节
yue0082 小时前
C#理论学习-WinForm实践开发教程总结
开发语言·学习·c#
Mr.Jessy3 小时前
Web APIs学习第一天:获取 DOM 对象
开发语言·前端·javascript·学习·html
CodeLongBear3 小时前
Day02计算机网络网络层学习总结:从协议到路由全解析
学习·计算机网络·dubbo
我先去打把游戏先4 小时前
ESP32开发指南(基于IDF):连接AWS,乐鑫官方esp-aws-iot-master例程实验、跑通
开发语言·笔记·单片机·物联网·学习·云计算·aws
oe10194 小时前
好文与笔记分享 A Survey of Context Engineering for Large Language Models(上)
数据库·笔记·语言模型·agent·上下文工程
web前端神器4 小时前
vitest单元测试笔记
笔记
朝新_5 小时前
【SpringMVC】SpringMVC 小案例:加法计算器初步理解前后端接口交互与数据处理
java·笔记·spring·交互·javaee
雍凉明月夜5 小时前
人工智能学习中深度学习之python基础之迭代器、生成器、文件处理和模块等
python·深度学习·学习·pycharm
半夏知半秋5 小时前
mongodb的复制集整理
服务器·开发语言·数据库·后端·学习·mongodb