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)

待定,待笔者实际操作。

相关推荐
浅陌pa12 分钟前
08【基础学习】串口通信(三):收发数据包+数据校验
单片机·学习·51单片机
yzcxymz17 分钟前
STM32 串口中断接收方式笔记:HAL_UART_Receive_IT vs __HAL_UART_ENABLE_IT
笔记·stm32·单片机
傍晚冰川32 分钟前
【单片机 &C语言】单片机学习过程中常见C库函数(学习笔记)
c语言·笔记·stm32·单片机·学习·阿里云
zhang98800002 小时前
全自动驾驶(FSD,Full Self-Driving)自动驾驶热点技术的成熟之处就是能判断道路修复修路,能自动利用类似“人眼”的摄像头进行驾驶!值得学习!
人工智能·学习·自动驾驶
-曾牛2 小时前
基于LangChain4J的AI Services实践:用声明式接口重构LLM应用开发
人工智能·学习·ai·重构·java-ee·spring ai·langchian4j
虾球xz3 小时前
游戏引擎学习第232天
c++·学习·游戏引擎
小馒头学python3 小时前
GPU高效利用率实战揭秘:蓝耘元生代VS传统云平台的降维打击
人工智能·python·学习
SuperW6 小时前
Linux学习——TCP
linux·学习·tcp/ip
weixin_456588158 小时前
【Spring学习】
spring boot·后端·学习
pumpkin845149 小时前
学习笔记十七——Rust 支持面向对象编程吗?
笔记·学习·rust