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)

待定,待笔者实际操作。

相关推荐
执念斩长河2 小时前
go数据结构学习笔记
学习·golang
枫叶20004 小时前
Windows Docker笔记-Docker拉取镜像
windows·笔记·docker
赏你个麻辣烫儿4 小时前
学习笔记:机器学习中的数学原理(一)
笔记·学习
枫叶20008 小时前
Windows Docker笔记-制作、加载镜像
windows·笔记·docker
伊一大数据&人工智能学习日志8 小时前
深度学习01 神经网络
人工智能·深度学习·神经网络·学习·机器学习
声网9 小时前
a16z 最新 Voice AI 报告:语音将成为关键切入点,而非最终产品本身丨 Voice AI 学习笔记
人工智能·笔记·学习
云边有个稻草人10 小时前
DeepSeek与人工智能的结合:探索搜索技术的未来
人工智能·笔记·科技·算法·deepseek
代码轨迹11 小时前
SpringCloud学习笔记(五)
java·学习·spring cloud
一晌小贪欢11 小时前
Python办公笔记——将csv文件转Json
笔记·python·json·python办公·python读取csv