分布式集合通信--学习笔记

  • 分布式集合通信
  • 一 基础概念
    • 分布式系统模型
      • 节点与进程模型 多机多卡、多机多进程
      • 通信模式
        • 同步 、异步
    • 集合通信定义
      • 点对点通信 vs 集合通信
        • 点对点通信
          • 定义 :两个节点之间的直接数据传输,通常基于专用链路或网络路径
          • 通信范围:仅涉及两个节点(如A→B或B→A),支持双向数据传输 1 2
          • 示例 :电话呼叫、TCP/IP连接、MPI中的 MPI_Send 和 MPI_Recv
        • 定义:一组节点(通信子)共同参与的全局操作,所有节点协同完成数据交换
        • 通信范围:涉及多个节点(如广播、规约、全收集等),需所有节点同步调用函数
      • 常见操作: Broadcast \ Reduce \ Allgather \AllReduce
    • 性能指标
      • 延迟 Latency
      • 带宽 Bandwidth
      • 扩展性 Scalability
  • 二 核心算法
    • 广播算法
      • 洪泛算法(Simple Flooding)
      • 基于树的广播(Tree-based Broadcast)
      • 环形广播(Ring Algorithm)
    • 规约算法
      • 线性规约(Linear Reduce)
      • 二叉树规约(Binary Tree Reduce)
    • 全收集算法
      • 循环全收集(Recursive DOUBLING Algorithm)
      • 二叉树全收集(Binary Tree Allgather)
    • 全归约算法
      • 结合规约与广播的Allreduce
      • Ring-Allreduce算法(NVIDIA NCCL实现)
  • 三 应用场景
    • 分布式机器学习
      • 梯度同步(Allreduce)
      • 参数广播(Broadcast)
    • 科学计算
      • 矩阵乘法中的通信优化
      • 分布式FFT(快速傅里叶变换)
    • 分布式存储
      • 数据分片与合并(Allgather)
      • 一致性哈希与数据迁移
  • 四 优化策略
    • 通信与计算重叠
      • 隐藏通信延迟的技术(Pipeline)
    • 拓扑感知优化
      • Mesh网络与Ring网络的通信策略
      • 硬件拓扑映射(如GPU的NVLink)
    • 混合算法
      • 结合树状与环形结构的分层通信
      • 动态调整算法(小规模用Ring,大规模用Tree)
  • 五 实践工具与框架
    • MPI(Message Passing Interface)
      • MPI_Bcast、MPI_Reduce等函数
    • NCCL(NVIDIA Collective Communications Library)
      • GPU集合通信优化
    • HCCL(Huawei Collective Communication Library)
      • 华为Ascend芯片的集合通信实现
    • PyTorch/TensorFlow
      • 分布式训练中的通信API
    • HCCL与NCCL对比
      • 维度 HCCL NCCL
      • 适用硬件 华为昇腾AI处理器(NPU) NVIDIA GPU
      • 通信算法 Mesh、Ring、HD、NHR、NB(自动选择) Ring、Mesh、Bruck、Halving-Doubling等
      • 传输优化 全硬化调度,SDMA/RDMA链路 多通道并行(block-level),NVLink/PCIe优化
      • 流管理 主流+从流,Notify同步 CUDA Stream异步,多任务并发
      • 容错性 依赖硬件调度稳定性(需进一步扩展) 支持异步错误处理(ncclCommAbort)
      • 生态支持 适配TensorFlow、PyTorch(单算子模式) 集成主流框架(PyTorch、TensorFlow等)
      • 开源与定制 部分算法开源(Gitee),支持自定义开发 源代码闭源,部分厂商基于其扩展(如BCCL)
  • 六 学习步骤
    • 阶段1:基础入门
      • 理解分布式系统模型
        • 学习多机多卡(如GPU集群)的通信架构
        • 掌握同步与异步通信的区别(例如:阻塞vs非阻塞API)
      • 熟悉集合通信操作
        • 实现简单的点对点通信(如Send/Recv)
        • 动手实现Broadcast和Reduce的基础版本(例如:线性规约)
    • 阶段2:核心算法学习
      • 广播算法
        • 实现洪泛算法,分析其缺点(如冗余通信)
        • 学习树状广播(如二叉树广播),优化通信复杂度
      • 规约与全归约
        • 实现线性规约,理解其O(n)复杂度
        • 优化为二叉树规约,降低时间复杂度至O(logn)
        • 结合广播实现Allreduce(例如:先规约后广播)
      • 全收集算法
        • 实现循环全收集(Recursive Doubling),分析其通信模式
        • 对比树状全收集与环形全收集的性能差异
    • 阶段3:应用场景实践
      • 分布式机器学习案例
        • 使用Allreduce实现梯度同步(如MNIST分布式训练)
        • 优化通信:对比同步Allreduce与异步参数更新
      • 科学计算优化
        • 实现分布式矩阵乘法,优化通信与计算比例
        • 使用MPI_Alltoall实现数据分块交换
      • 性能调优
        • 测试不同算法(Ring vs Tree)在不同节点数下的表现
        • 使用NCCL或HCCL库优化GPU通信
    • 阶段4:高级优化与扩展
      • 通信与计算重叠
        • 实现Pipeline技术,在通信时进行计算
        • 使用异步API隐藏延迟(如Non-blocking MPI)
      • 拓扑感知优化
        • 分析服务器内Mesh网络的通信策略(如NVIDIA的NVLink)
        • 实现跨节点的Ring算法,减少网络跳数
      • 混合算法设计
        • 结合树状与环形结构,设计分层通信策略
        • 动态选择算法(如小规模用Ring,大规模用Tree)
    • 阶段5:工具与框架实战
      • MPI实践
        • 使用MPI实现Broadcast、Reduce和Allreduce
        • 分析MPI的性能瓶颈(如通信延迟、带宽限制)
      • NCCL与HCCL
        • 在GPU集群上使用NCCL优化Allreduce
        • 对比不同框架(如NCCL vs PyTorch DCP)的性能
      • 分布式框架集成
        • 在PyTorch中实现分布式训练,调用
      • torch.distributed
      • API
        • 使用TensorFlow的MirroredStrategy进行参数同步
  • 七 学习资源
    • 书籍
      • 《分布式系统:原理与范型》(原书第3版)
      • 《MPI并行程序设计》
      • 《深度学习系统优化》
  • 八 实践项目建议
    • 初级项目
      • 实现一个基于Socket的Broadcast算法
      • 使用MPI实现Allreduce并测试不同节点数的性能
    • 中级项目
      • 优化Allreduce算法,结合树状与环形结构
      • 在GPU集群上使用NCCL训练ResNet模型
    • 高级项目
      • 设计一个混合通信策略(如Ring+Tree)并测试扩展性
      • 实现分布式矩阵乘法,优化通信与计算比例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/bicheng/87573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业显示器五大品牌推荐及分析

在智能制造与工业自动化中,工业显示器扮演着至关重要的角色,最近好多朋友问我有没有什么卖工业显示的厂家推荐。那今天我为大家整理了5个工业显示器厂家品牌推荐,希望可以帮助您挑选到合适的工业显示器一、佳维视(JAWEST&#xff…

ComfyUI工作流:一键换背景体验不同场景

换背景效果展示 在图像编辑领域,背景替换是提升作品视觉效果与创意表达的重要手段。魔多 AI 社区推出的 “一键换背景” ComfyUI 工作流,凭借先进的 AI 技术与极简操作流程,为用户提供了高效、精准的背景替换解决方案。本文将从技术原理、功能…

图像旋转:从原理到 OpenCV 实践

在图像处理领域,图像旋转是一项基础且重要的操作。它不仅可以改变图像的方向,还在许多计算机视觉任务中发挥着关键作用,比如目标检测、图像配准等。本文将深入探讨图像旋转的原理,并结合 OpenCV 库提供具体的实现代码。 一、图像…

微服务架构下的抉择:Consul vs. Eureka,服务发现该如何选型?

微服务架构下的抉择:Consul vs. Eureka,服务发现该如何选型? 引言 想象一下,我们正在构建一个大型电商平台。在“双十一”大促期间,流量洪峰涌入,订单服务、商品服务、用户服务等都需要弹性伸缩&#xff…

基于Java+SpringBoot的宠物爱心组织管理系统

源码编号:S572 源码名称:基于SpringBoot的宠物爱心组织管理系统 用户类型:双角色,用户、管理员 数据库表数量:15 张表 主要技术:Java、Vue、ElementUl 、SpringBoot、Maven 运行环境:Windo…

数字样机:改写卫星物联网的研制范式

01. 卫星物联网:技术边界的自然延伸 随着物联网在城市、工业、农业等领域的广泛部署,万物互联的愿景正在不断逼近技术的边界。尤其是在海洋、沙漠、高原、边远山区等传统通信网络难以覆盖的区域,人们对无盲点物联网连接的需求日益增强。这一…

springsecurity---使用流程、加密机制、自定义密码匹配器、token字符串生成

目录 权限控制 相关框架 SpringSecurity springsecurity使用流程 1、搭建环境实现默认用户名和密码登录 2、使用数据库表中定义好的用户名和密码访问实现等值密码匹配 1)sql文件 2)搭建jdbc或者mybatis或者mybatis-plus环境 3)配置mybatis-plus环…

在 Ubuntu 22.04 上使用 Minikube 部署 Go 应用到 Kubernetes

文章目录 环境说明目标步骤与问题解决1. 构建 Go 应用和 Docker 镜像问题 1:Go 依赖下载卡住问题 2:Docker 镜像拉取失败 2. 设置 Minikube 集群安装 Minikube问题 3:Minikube 启动失败问题 4:Minikube 镜像拉取失败 3. 部署 Kube…

Android Studio-Git的使用指南

一、git的基本使用流程 git clone 克隆远程资源到本地目录,作为工作目录;然后在本地的克隆目录上添加或修改文件;如果远程修改了,需要同步远程的内容,直接git pull就可以更新本地的文件;本地在修改之后&…

【github】想fork的项目变为私有副本

在 GitHub 上,所有的 fork 都会继承其上游仓库(upstream)的可见性(visibility)设置: 可见性继承 如果你 fork 的原仓库是 public,那么你的 fork 也必须是 public。如果原仓库是 private&#xf…

微软发布新一代存储优化型虚拟机:Azure Laosv4、Lasv4 和 Lsv4 系列

微软宣布,全新一代存储优化型虚拟机——Azure Laosv4、Lasv4 和 Lsv4 系列已正式面世。 与前一代虚拟机系列相比,全新的 L 系列虚拟机实现了重大突破。它支持高达 23TB 的本地 NVMe SSD,在 CPU、网络以及远程存储性能方面均有显著提升。该系…

python调用pybind11导出的pyd,出现UnicodeDecodeError

python调用pybind11导出的pyd,出现UnicodeDecodeError 1. 问题描述 举个例子,当有以下C代码以及Pybind11的绑定代码时,在python访问包含中文的Name和Value会有UnicodeDecodeError的异常! class VxUserProp{public:VxUserProp();…

MySQL别名在GROUP BY中的使用规则

-- 设置变量:SET earliest_date ... 用于定义并赋值一个用户变量 earliest_date。 -- 用户定义的变量必须以 符号开头,例如 earliest_date。 -- 符号是MySQL中用户变量的标识符,用于区分系统变量和用户变量。 SET earliest_date (SELECT …

2025.7.4总结

感恩环节:感谢今日工作顺利度过,明天终于能美美的睡个懒觉了。感谢这周有个美好的双休。今日去实验室参观设备,感谢我的一个同事解答了我关于硬件设备与所做软件业务之间的关系,通过控制器控制网元等相关设备,同时,虽然…

Prompt 精通之路(五)- 构建你的“AI 指令系统”:超越简单提问的 CRISPE 与 APE 框架

🚀 Prompt 精通之路:系列文章导航 第一篇:[本文] AI 时代的新语言:到底什么是 Prompt?为什么它如此重要?第二篇:告别废话!掌握这 4 个黄金法则,让你的 Prompt 精准有效第…

#NFT艺术品哈希值唯一性与《民法典》“网络虚拟财产”认定的冲突

首席数据官高鹏律师数字经济团队创作,AI辅助 一、当区块链的「绝对唯一」遇上法律的「弹性空间」 每个NFT艺术品背后的哈希值,都像用数学密码刻在区块链上的指纹——世界上没有任何两个完全相同的编码。这种由0和1构筑的「数字DNA」,被技术信…

【arXiv2025】计算机视觉|即插即用|LBMamba:革新视觉模型效率,性能炸裂

论文地址:https://arxiv.org/pdf/2506.15976 代码地址:https://github.com/CiaoHe/bi-mamba 关注UP CV缝合怪,分享最计算机视觉新即插即用模块,并提供配套的论文资料与代码。 https://space.bilibili.com/473764881 摘要 Mamba…

【狂飙AGI】第7课:AGI-行业大模型(系列1)

目录 (一)服装史的GPT时刻(二)AI多学科诊疗系统(三)医疗大模型(四)生物医药大模型(五)教育大模型(六)心理大模型(七&#…

(LeetCode 每日一题) 3307. 找出第 K 个字符 II (位运算、数学)

题目&#xff1a;3307. 找出第 K 个字符 II 思路&#xff1a;位运算&#xff0c;时间复杂度0(logk)。 当2^(i-1) <k 且 2^i>k &#xff0c;说明k在K2^i的右半段 &#xff0c;k和其前半段的某个字符有关系 即当k>K时&#xff0c;k是由k-K位置上的字符变化而来&#xf…

国产MCU学习Day4——CW32F030C8T6:独立看门狗功能全解析

CW32F030C8T6 看门狗功能概述 CW32F030C8T6 是芯源半导体&#xff08;WCH&#xff09;推出的 Cortex-M0 内核微控制器&#xff0c;内置独立看门狗&#xff08;IWDG&#xff09;和窗口看门狗&#xff08;WWDG&#xff09;&#xff0c;用于检测和恢复系统异常状态。 一.独立看门…