torch-xla在多GPU下NCCL ncclUniqueId的生成过程

本文基于torch-xla2.0,结论如下:

  1. ncclUniqueId就是当前主机的IP和端口号;
  2. 在一个通信组内,每个rank使用相同的ncclUniqueId;
  3. 多个通信组时,各个通信组内ncclUniqueId相同,每个通信组的ncclUniqueId不同;

生成过程:在rank 0上创建MeshService,也就是GRPC的服务端,每个rank创建一个MeshClient,即GRPC的客户端,客户端通过GRPC请求向服务端获取ncclUniqueId(因为多进程环境,所以请求天然是多线程的,响应也同理,NcclUidManager::GetNcclUniqueUid线程安全);由于一个通信组内的请求参数replicas(即rank列表,例如2个rank时:0,1)相同,所以总是得到相同的ncclUniqueId。

这是一个典型的ncclUniqueId生成和应用场景。对于不能提供CPU侧通信机制的场景,可以使用环境变量NCCL_COMM_ID实现,且每个进程的需要相同的环境变量值(实测不同时,无法建立通信)。
参考issues 730 @sjeaugey commented on Oct 10, 2022:

NCCL_COMM_ID is the current way for NCCL to initialize without a CPU-side communication mechanism. Having a CPU-side communication mechanism is arguably expensive but it usually needed anyway on most parallel computing applications (MPI can be used for that purpose).

时序图

在这里插入图片描述

参考链接

OneFlow NCCL源码解析
NCCL Github Issue 730
NCCL源码 bootstrapGetUniqueId

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

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

相关文章

GIT 卸载干净(图文详解)

一、控制面板卸载 右击卸载 等待卸载过程 二、在环境变量,把相关信息删除干净

【Spring云原生系列】Spring Cloud Stream:消息驱动架构(MDA)解析,实现异步处理与解耦合!

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…

第三百八十八回

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了DateRangePickerDialog Widget相关的内容,本章回中将介绍Radio Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的Radio Widget是指单选按钮,没有选中时是圆形边框&#x…

【重要!!退税!退税!】一年一度个人所得税综合年度汇算开始了!

目录标题 如何退税?2023年度个人所得税综合所得汇算清缴操作指南汇算准备标准申报 退税骗局?1.“您有一笔退税待领取”骗局2.“专业人员帮你多退税”骗局3.“诱导填报虚假个税信息”骗局4.“税务稽查人员联系你”骗局 如何退税? 2023年度个人…

论文模型笔记——RCNN系列

RCNN系列模型主要包括以下几种,按发布时间排序: 1. **RCNN**(2014年):首次将CNN引入目标检测,主要是特征提取阶段使用CNN(AlexNet)。 2. **Fast RCNN**(2015年)&#xff…

文心一言眼中的ChatGPT是什么样的

Q: 你好文心一言,请说一说你眼中的chatgpt A: 在我眼中,ChatGPT是一种非常先进和强大的自然语言处理模型,它展示了人工智能技术的显著进步。ChatGPT拥有出色的语言理解和生成能力,能够与用户进行流畅、自然的对话,并尝…

图书馆管理系统(2)

接下来实现系统的子菜单,在写一个子模块的时候,其他子模块先屏蔽起来,因为没实现,代码运行就通不过 屏蔽起来写上todo,后面(Ctrl键F)搜索,找todo来实现 先来实现图书管理模块 第一步,先要把图…

代码随想录训练营第39天 | LeetCode 62.不同路径、​​​​​​LeetCode 63. 不同路径 II

LeetCode 62.不同路径 文章讲解:代码随想录(programmercarl.com) 视频讲解:动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili 思路 代码如下: ​​​​​​LeetCode 63. 不同路径 II 文章讲解…

智能化管理新趋势:连锁餐饮管理APP开发实战指南

时下,如何提高效率、降低成本、提升服务质量成为了每家连锁餐饮企业迫切需要解决的问题。而开发一款适用于连锁餐饮管理的智能化APP,成为了解决这些问题的重要途径之一。 一、​理解连锁餐饮行业的痛点和需求 连锁餐饮企业通常面临着分店多、人员流动大…

12 OpenCv阈值处理

文章目录 Halcon阈值处理概念阈值二值化阈值反二值化截断阈值取零阈值反取零算子示例 Halcon阈值处理 halcon 阈值处理 概念 阈值又叫临界值,是指一个效应能够产生的最低值或最高值。实际上是基于图片亮度的一个黑白分界值,默认值是50%中性灰&#xff…

ps aux | grep xxxx和ps ef | grep xxxx这两个命令有什么区别

命令实例 ps aux | grep nexus和ps ef | grep nexus ps aux | grep nexus 和 ps ef | grep nexus 这两个命令都用于在 Unix 或 Linux 系统中查找与 nexus 相关的进程,但它们在展示进程信息时有细微的区别。 ps aux | grep nexus: ps aux 是一种显示系统上所有运行进…

YoloV8改进策略:Block改进|自研Block,涨点超猛

参考模型 参考的Block,如下图: 我对Block做了修改,修改后的结构图如下: 代码详解 from timm.models.layers import DropPathfrom torch import Tensor def channel_shuffle(x: Tensor, groups: int