当前位置: 首页 > wzjs >正文

网投怎么做网站搜索引擎排名的三大指标

网投怎么做网站,搜索引擎排名的三大指标,wordpress 存档,全国十大装修公司排名全国装修公司哪家好目录 前言 ring 不足,需要 tree 朴素二叉tree只利用了一半带宽,需要 双二叉 tree 双二叉树的构造 ringvs 双二叉树 测试 ring和tree的选择 nccl tree tree搜索 基本概念解释 最大化局部性构建二叉树的方式 这种构建方式的好处 示例说明 前言…

目录

前言 

ring 不足,需要 tree

朴素二叉tree只利用了一半带宽,需要 双二叉 tree

双二叉树的构造

ringvs 双二叉树 测试

ring和tree的选择

nccl tree

tree搜索

基本概念解释

最大化局部性构建二叉树的方式

这种构建方式的好处

示例说明


前言 

参考:万卡集群通信优化算法双二叉树:https://www.bilibili.com/video/BV1zSpnezEB8

3.1 NCCL源码二叉树构建算法:https://www.bilibili.com/video/BV1DErsYwEhc/

Massively Scale Your Deep Learning Training with NCCL 2.4 | NVIDIA Technical Blog

"double binary tree" 在并行计算/NCCL语境中特指一种用于高效集合通信的树形拓扑结构,由两个并行的二叉树组成。

从 ring 算法到 tree 算法,把时间复杂度从 n 提升到了 logn

ring-->tree-->db tree

ring 不足,需要 tree

ring算法 适合小规模集群,能够充分利用上行和下行的带宽。但是环越大,延迟线性增加,不适合大规模集群。

为了解决这个问题,线引入二维环算法,但仍然无法完全解决该问题,最后由引入了Tree算法

朴素二叉tree只利用了一半带宽,需要 双二叉 tree

朴素二叉树(native binary tree)

缺点:叶子节点只接收不发送数据,只利用了带宽的一半,浪费了大量的(叶子节点的)带宽。

假设root节点要broadcast一个消息M给所有节点,root会将M发送给他的子节点,其他所有的节点收到消息M后再发送给子节点,叶节点因为没有子节点,所以叶结点只会接收M。这个过程可以将M切分为k个block,从而可以流水线起来。

双二叉树(Double Binary Tree)

为了解决朴素二叉树只利用了带宽的一半的缺点,引入双二叉树,算法介绍:

双二叉树的构造

双二叉树的构造

构造双二叉树有两种方法:shift位移法和mirror(镜像)法,

shift位移法:也就是先按正常序号构造T1,然后将每个节点的序号移一位,然后构造第T2。

mirror(镜像)法:既先按正常序号构造T1,然后将全部节点序号反转,然后构造第T2。

英伟达的双二叉树算法

NCCL 中,使用最大化局部性(见附录说明)的模式来构建二叉树,

英伟达通过反转T1树的方式构建双二叉树的T2:

ringvs 双二叉树 测试

相比ring,双二叉树的优化效果测试:

ring和tree的选择

NVIDIA NCCL 源码学习(十二)- double binary tree-CSDN博客

nccl tree

nccl中的tree只用于节点之间,节点内是一条链,2.7.8版本使用的pattern为NCCL_TOPO_PATTERN_SPLIT_TREE,假设为4机32卡,对于T2后边再介绍,T1如下所示:

由于allreduce可以拆分为reduce和broadcast两个过程,所以nccl tree allreduce先执行reduce,数据按照图中箭头方向流动,称为上行阶段,从rank15,rank31,rank23,rank7开始一直reduce到rank 0,rank0拿到全局reduce的结果之后再按照箭头反方向开始流动,称为下行阶段,broadcast到所有卡。

tree搜索

如上所述,节点内为链,因此机内tree搜索的过程和ring搜索很像,指定pattern为NCCL_TOPO_PATTERN_SPLIT_TREE,然后执行ncclTopoCompute。

相关代码

构建二叉树

构建代码主要在src/graph/trees.cc和src/collectives/device/all_reduce.h文件中

trees.cc中的二叉树构建核心实现:

核心函数是ncclGetBtree和ncclGetDtree

构建过程:

基于rank的二进制位模式构建树结构

对奇数/偶数rank数采用不同策略

支持镜像树和偏移树构建

调用流程:

集合操作(如AllReduce)初始化时调用ncclGetDtree构建双二叉树

在设备端kernel中通过runTreeUpDown等函数使用构建好的树结构

树结构信息存储在ncclShmem.channel.tree中

AllReduce初始化

→ ncclGetDtree()

→ ncclGetBtree() ×2 (构建两个树)

→ 将树结构存储到channel信息中

设备端执行

→ runTreeUpDown()/runTreeSplit()

→ 使用预构建的树结构进行通信

📎07DBTree.pptx

附录:

基本概念解释

  • 局部性:在计算机系统中,局部性原理是指程序和数据倾向于集中访问某些区域。在多 GPU 系统中,局部性通常指 GPU 之间的物理接近性或者通信延迟的接近性。例如,同一服务器内的 GPU 之间的通信延迟往往比不同服务器之间的 GPU 通信延迟要小,这种物理和延迟上的接近性就是局部性的体现。

最大化局部性构建二叉树的方式

  • 物理位置优先:优先考虑将物理位置接近的 GPU 连接在一起。例如,在一个包含多个服务器的集群中,每个服务器上有多个 GPU,构建二叉树时会先把同一服务器内的 GPU 相互连接,形成子树,然后再将这些子树连接起来。这样可以减少跨服务器的数据传输,因为跨服务器的通信通常伴随着更高的延迟和更低的带宽。
  • 通信延迟最小化:除了物理位置,还会考虑 GPU 之间的实际通信延迟。通过测量不同 GPU 对之间的通信延迟,将延迟较小的 GPU 优先连接在一起。例如,某些 GPU 可能通过高速的 NVLink 互连,而有些则通过 PCIe 总线连接,NCCL 会尽量利用 NVLink 这种低延迟、高带宽的连接来构建二叉树。

这种构建方式的好处

  • 减少通信开销:通过最大化局部性,大部分的数据传输可以在低延迟、高带宽的通道上进行,从而减少了通信延迟和数据传输时间。例如,在 All - Reduce 操作中,数据可以在局部子树内先进行规约,然后再将结果向上传递,避免了大量数据在高延迟的通道上传输。
  • 提高并行性:局部性好的二叉树结构可以让更多的 GPU 同时进行数据传输和计算,提高了整个系统的并行性。例如,同一子树内的 GPU 可以并行地进行数据交换,而不会相互干扰。

示例说明

假设一个系统中有 8 个 GPU,分布在 2 个服务器上,每个服务器有 4 个 GPU。使用最大化局部性的模式构建二叉树时,会先在每个服务器内部构建一个包含 4 个 GPU 的子树,然后再将这两个子树连接起来。这样在进行集体通信操作时,每个服务器内的 4 个 GPU 可以先在本地完成部分数据处理,然后再在两个服务器之间进行数据交换,从而减少了跨服务器的通信开销。

http://www.dtcms.com/wzjs/382687.html

相关文章:

  • 做ppt的素材网站一个产品的营销方案
  • 行业网站需要如何做如何优化网站排名
  • 网站开发团队奖惩推广放单平台
  • 外贸seo软件荥阳网站优化公司
  • 织梦网站怎样做seo十大营销案例分析
  • 广联达工程造价软件官网seo优化价格
  • 中国网站建设总部在哪里培训方案
  • 公司简单网站多少钱网络推广的重要性与好处
  • 福州金山网站建设安康seo
  • 山西成宁做的网站关键词如何优化排名
  • 惠州做棋牌网站建设找哪家效益快seo职位要求
  • 菲斯曼售后服务中心阳东网站seo
  • 向国旗敬礼做时代新人网站java培训机构十强
  • 怎么制作网站店铺厦门推广平台较好的
  • 营销网站是什么意思seo网站排名优化案例
  • 做网站虚拟服务器网络营销该如何发展
  • 网站建设上海网站建设公司网站百度云服务器
  • 重庆巴南区网站开发如何自己制作网站
  • 多语言操作网站百度搜索引擎平台
  • 公司想做个网站应该怎么做产品设计公司
  • 建设部网站如何下载国标规范线上营销策略
  • 给 小企业 建设网站百度推广账户优化方案
  • wordpress临时域名百度优化是什么
  • 桐庐营销型网站建设舆情网站直接打开怎么弄
  • 做文创的网站搜索引擎优化包括哪些
  • 做理财的网站有哪些2345浏览器导航页
  • 网站备案有什么好处理网络营销的概念与特点
  • 网站开发技术可行性分析小红书怎么推广引流
  • 大连市中小企业做网站政府补贴广东深圳疫情最新消息
  • 营销型企业网站建设价格哪个推广平台推广最靠谱