集合通信
文章平均质量分 85
爱串门的小马驹
ai分布式,通信,大模型,人工智能框架,大规模集群学习分享,不定期更新
展开
-
CPU亲和性设置 代码示例 sched_setaffinity sched_getaffinity
来优化GPU和CPU间的通信路径。NCCL通信时也用到亲和性设置,来优化GPU和CPU间的通信路径。CPU亲和性(CPU Affinity)设置是操作系统中一个重要的性能优化手段,它允许程序或进程被绑定到特定的CPU核心上运行。这样做的好处包括减少缓存未命中、降低线程迁移(context switching)的开销,以及提高缓存的局部性(cache locality),从而可能提升程序的整体性能。对于我们NCCL集合通信,也用到亲和性设置,通过将需要与GPU交互的CPU设置为距离近的CPU核心,原创 2024-09-07 10:29:16 · 670 阅读 · 0 评论 -
华为集合通信库开源了!HCCL开源链接、架构、拓扑算法、常用接口
华为集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,提供单机多卡以及多机多卡间的数据并行、模型并行集合通信方案。HCCL的软件架构如下图所示,分为“通信框架”、“通信算法”与“通信平台”三个模块,本源码仓中包含了其中紫色底纹所示的“通信框架”与“通信算法”两个模块的源码。适配层,图引擎与单算子适配,进行通信切分寻优等操作。原创 2024-08-29 19:32:58 · 1368 阅读 · 0 评论 -
Nvidia NCCL名词术语解释说明汇总
是NCCL中的一个插件,用户可自定义通信方式。例如自定义在网计算(in-network computing) SHARP,在通信过程中就进行数据融合,例如Allreduce时,在交换机上就完成数据的加法操作,后续就传递加和的结果,不需要再传递需要所有要加的原始数据,减少需要通信的数据量。:GPU如果和跨NUMA的NIC网卡通信的话,会过CPU。NVB 连接是针对非 NVSwitch 系统的优化,其中使用GPU的内存来进行GPU之间的P2P通信,这些GPU不是通过NVLink直接连接的。节点内,即服务器内。原创 2024-06-04 21:13:18 · 1172 阅读 · 4 评论 -
NCCL源码详解6:通信拓扑识别感知构建 物理拓扑xml文件 ncclTopoGetSystem() 视频教程
Nvidia NCCL如何构建物理拓扑。原创 2024-07-08 21:05:39 · 1290 阅读 · 2 评论 -
NCCL的不足,集合通信库初步调研 NCCL、BCCL、TCCL、ACCL、HCCL
不同厂商的集合通信库,就是针对他们网络或者硬件的定制化集合通信。已达到。百度和腾讯是明确说,基于NCCL扩展,也就是改的NCCL代码,或者在NCCL上加了些东西。但是阿里和华为没有明确说,可能是重写的一套。原创 2024-06-17 23:03:46 · 3194 阅读 · 9 评论 -
NCCL源码解读5:拓扑识别感知整体思路总览
依据物理拓扑结构,来进行通信,可达到性能更优,这也是Nvidia NCCL的核心功能。NCCL拓扑识别的整体思路:1、物理拓扑构建2、通信路径计算(每个GPU/网卡到其它GPU,网卡的最优路径。)3、逻辑拓扑构建(通信通道检索)哈哈哈,整体思路是不是特别简单。就是先获取物理拓扑图,然后计算通信路径(方便逻辑拓扑构建),根据通信路径构建逻辑拓扑,例如ring,tree逻辑拓扑,指明哪个GPU和哪个GPU通信。原创 2024-06-17 21:31:02 · 764 阅读 · 3 评论 -
NCCL源码详解4:bootstrapInit()引导网络bootstrap网络连接建立 视频教程
Nvidia NCCL bootstrapInit()利用已知的根节(rank0)网络地址(从而获得ncclUniqueId中包含的rank0的网络地址),建立一个环形网络,allgather获取所有rank的信息。原创 2024-06-04 21:11:58 · 1541 阅读 · 2 评论 -
NCCL源码详解3:通信器初始化ncclCommInitRank() 含视频教程
NCCL源码解析解读分析,ncclCommInitRank()根据rank号和CUDA设备uniqueID等,完成NCCL通信器初始化。ncclCommInitRankDev()使用 ncclAsyncLaunch 异步启动 ncclCommInitRankFunc 函数来初始化通信。 异步启动通信器初始化ncclCommInitRankFunc()原创 2024-05-24 20:06:16 · 1545 阅读 · 0 评论 -
NCCL源码详解2:通信初始化如何获取唯一ID UniqueId,ncclGetUniqueId()中ncclInit()、bootstrapGetUniqueId()包含视频教程
NCCL 视频教程 源码解读 获取唯一ID UniqueId,ncclGetUniqueId()和其调用的ncclInit()和bootstrapGetUniqueId() NCCL源码解析解读分析,原创 2024-05-18 06:20:05 · 1521 阅读 · 0 评论 -
集合通信算法源码解读视频教程 Open MPI 5.0,NCCL可参考
NCCL、MPI中有各种各样的集合通信原语/接口,像Broadcast、Allreduce、reduce、allgather、scatter、alltoall、gather、reducescatter等。每个集合通信原语,都有多套算法实现。例如Broadcast,由于应用场景的不同,参与通信的通信实体数量,每次发送的数据量各不相同等,导致难以有一种集合通信算法在各种条件下都是最优的,因此出现了一个集合通信原语,有多套集合通信算法实现。原创 2024-05-04 09:19:58 · 350 阅读 · 0 评论 -
DeepSpeed和Megatron如何调用NCCL通信后端源码解读
原本准备看一下DeepSpeed如何对接使用NCCL的,如何初始化通信后端的,没想到。瞬间傻在原地。原创 2024-05-10 20:29:27 · 1010 阅读 · 0 评论 -
NCCL源码详解1:NCCL官网使用/调用案例 Example : One Device per Process or Thread包含视频教程
NCCL源码解析解读分析,rank0获取NCCL通信组ID,并通过MPI_Bcast广播给其它rank;借助MPI获取的这些信息NCCL完成初始化,并进行集合通信。原创 2024-05-11 21:10:00 · 1520 阅读 · 3 评论