GPU到GPU通信选项技术

GPU到GPU通信选项技术
将讨论使用AMD Instinct™MI250和AMD InstinctTM MI250X GPU的系统中的GPU到GPU通信选项。每个MI250(X)GPU由两个图形计算芯片(GCD)组成。如图4-20所示,显示了具有4个MI250 GPU(8个GCD)的节点的示意图。每个绿色框代表一个MI250 GPU和两个GCD。GCD通过无限结构链路连接。每个Infinity结构链路的峰值带宽为50 GB/s。GCD之间的Infinity结构链接数量不同。例如,同一GPU上的GCD通过4条链路连接,而不同GPU上的GC通过1条或2条链路连接。从该图中可以观察到,GCD之间的跳数不同。例如,GCD 1通过一跳连接到GCD 3,而GCD 0至少通过两跳连接到GC 3。GCD之间可实现的最大带宽取决于GCD之间的无限结构链路的数量以及它们之间的跳数。每个绿色盒子是一个MI250 GPU,带有两个GCD。GCD通过无限结构链路连接。
  
图4-20 具有4个MI250 GPU(8个GCD)的节点图
GPU到GPU通信有两种选择:
1)使用系统直接内存访问(SDMA)引擎
2)启动内核来处理通信。SDMA引擎提供了将通信与计算重叠的机会。然而,它的缺点是它在GCD之间提供了50 GB/s的最大带宽。相比之下,内核提供了更高的通信带宽,但它们需要CU移动数据,因此与内核的计算重叠通信的机会更少。环境变量HSA_ENABLE_SDMA可用于在SDMA引擎和内核之间进行选择。ROCM 5.4及以下版本默认使用SDMA引擎。
以下实验显示了大小为16MB的消息在GCD 0与其对等体之间的通信带宽。将HSA_ENABLE_SDMA设置为0。因此,启动了一个内核来处理通信。设置HIP_VISIBLE_DEMICES为每个实验选择对等GCD。使用-m((16*1024*1024)):((16*1024*11024)),指定感兴趣的消息大小,在本例中为16MiB。
export HSA_ENABLE_SDMA=0
export HIP_VISIBLE_DEVICES=0,1
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽(MB/s)
16777216 142235.39
export HIP_VISIBLE_DEVICES=0,2
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽(MB/s)
16777216 38963.65
export HIP_VISIBLE_DEVICES=0,3
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽(MB/s)
16777216 36903.57
export HIP_VISIBLE_DEVICES=0,4
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽(MB/s)
16777216 36908.74
export HIP_VISIBLE_DEVICES=0,5
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽(MB/s)
16777216 34986.54
export HIP_VISIBLE_DEVICES=0,6
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽(MB/s)
16777216 76276.14
export HIP_VISIBLE_DEVICES=0,7
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽(MB/s)
16777216 68788.80
上述实验表明,为不同的对等GCD获得了不同的通信带宽。如前所述,这取决于GCD之间的Infinity Fabric链路的数量,以及它们之间的跳数。例如,GCD 0和1之间的通信速度约为142 GB/s,它们通过四个Infinity Fabric链路连接。每个Infinity Fabric链路的峰值理论带宽为50 GB/s。因此,GCD 0和1之间的峰值理论宽度为200 GB/s。假设可实现的带宽约为理论带宽的70%,预计GCD 0与1之间的通信将达到142 GB/s左右。在GCD 0和2的情况下,它们通过一个Infinity Fabric链路连接,得到38 GB/s的带宽。GCD 0与3通过两跳连接,因此获得的带宽略低(约36 GB/s)。可以使用相同的逻辑来推断其他GCD对等体的通信带宽。
如前所述,使用SDMA引擎,可以获得约50 GB/s的最大带宽:
export HSA_ENABLE_SDMA=1
export HIP_VISIBLE_DEVICES=0,1
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM 带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽(MB/s)
16777216 49396.52
export HIP_VISIBLE_DEVICES=0,2
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM带宽测试 v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
#大小 带宽 (MB/s)
16777216 41925.10
export HIP_VISIBLE_DEVICES=0,3
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽(MB/s)
16777216 41019.50
export HIP_VISIBLE_DEVICES=0,4
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽(MB/s)
16777216 42243.36
export HIP_VISIBLE_DEVICES=0,5
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽 (MB/s)
16777216 41870.39
export HIP_VISIBLE_DEVICES=0,6
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM 带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽 (MB/s)
16777216 49386.80
export HIP_VISIBLE_DEVICES=0,7
mpirun -n 2 $OMB_DIR/libexec/osu-micro-benchmarks/mpi/pt2pt/osu_bw -m $((16*1024*1024)):$((16*1024*1024)) D D
# OSU MPI-ROCM 带宽测试v7.0
# 在设备(D)上发送缓冲区,在设备(D)上接收缓冲区
# 大小 带宽(MB/s)
16777216 49369.06

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

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

相关文章

visual stdio 使用CMake

基础知识 工具>选项>CMake>常规 选中从不使用CMake预设重启 visual stdio,点击打开本地文件夹(F),打开CMakeList.txt根目录此时会在CMake根目录自动生成CMakeSettings.json文件,使用visual stdio文件打开CMakeSettings.json如果打开时,是json文件时,可以右键CMa…

mysql InnoDB的事务

一、事务的概念 一组数据库操作要么全部成功,要么全部失败,目的是为了保证数据的最终一致性 二、事务的四大特性(ACID)原子性(Actomicity):当前事务的操作要么成功,要么失败,原子性是由undo log日志来保证 一致性(Consistency):使用事务的最终目的,由业务代码正确…

如何使用 OpenAI Agents SDK 构建 MCP

1.概述 OpenAI Agents SDK 现已支持 MCP(模型上下文协议),这是 AI 互操作性的重大变革。这使开发人员能够高效地将 AI 模型连接到外部工具和数据源。本篇博客,笔者将指导使用 OpenAI Agents SDK 构建 MCP 服务器,以增强你的 AI 应用程序。 2.内容 2.1 什么是 MCP MCP 服务…

C语言打卡学习第11天(2025.3.30)(补发)

冒泡排序的一个学习。还了解了一个快速排序的“挖坑法”,能省变量位置,但挺难写的,挺有意思:把数组第一个元素放一个空作为一个标准值,第一个位置就空了出来,然后将第一个“暂时标准值”从最后一个数开始比较,后面小就放到第一个“坑”,然后“坑”又到后面了,再从前面…

C语言打卡学习第10天(2025.3.29)(补发)

指针和数组的学习,数组现在能做到基本掌握和简单运用,指针有些难,还是得练

FastAPI中的Pydantic密码验证机制与实现

title: FastAPI中的Pydantic密码验证机制与实现 date: 2025/03/31 00:04:51 updated: 2025/03/31 00:04:51 author: cmdragon excerpt: FastAPI 中通过 Pydantic 模型实现密码验证,采用分层机制确保高效与灵活扩展。验证流程包括基础类型检查、长度验证、复杂度验证和泄露检…

PicGo+Github图床配置

PicGo+Github图床配置 参考 PicGo指南 PicGo+Github图床配置配置 Github 图床 创建 Github 仓库登录 Github,新建一个公开(Public)或私有(Private)仓库 (我个人选择新建公开仓库) 用于存储图片,仓库名任意取,例如 image-host​,进入新建的仓库,点击 Create a codespac…

独立按键控制 LCD1602 显示不同的谚语

前言 今天我又学到了一句话 “好的开始是成功的一半” 英语就是 “Well Begun Is Half Done” 所以希望能够通过独立按键,来控制LCD1602显示不同的谚语 演示函数数组的使用 错误用法 void (*sayings)(void)[MAX_SAYING] = {attitude,well_begun};报错正确用法 void (*sayings[…

OpenEuler RISC-V 上跑bitcoin(实战版)

不久前刚在OpenEuler 24.09 RISC-V上部署了 bitcoin,不过还没跑起来,这次我打算在这个环境下面运行一些应用服务,体验一下 OERV 的开发感觉。编译出来的 bitcoin 主要有几个命令,bitcoin-cli、bitcoind、bitcoin-util、bitcoin-wallet、bitcoin-tx和test_bitcoin。bitcoind…

javawebDay3-Maven框架

1.添加依赖 eg<dependencies><dependency><groupId></groupId><artifactId></artifactId></dependency></dependencies>从外部导入jar包等无需手动添加依赖 2.集成度高,eclipse和intellIDEA都能使用,在不同的操作系统也可以使…

Five Hundred Miles

一百英里 是自由,是初出茅庐的憧憬。 二百英里 是快乐,是逃离故里的喜悦。 三百英里 是忧伤,是萦绕心间的挂念。 四百英里 是思恋,是莺歌燕舞的家乡。 五百英里 是乡愁,是一去不返的凄凉。