使用 InfiniBand 写入带宽对 NVIDIA GPUDirect RDMA 进行基准测试

简介

        性能基准测试是 HPC 的标志。最现代的超级计算机是具有异构架构的计算节点集群。在这样的节点中,我们可以看到经典 CPU 和专用计算协处理器 (GPU)。本教程介绍了使用基于 InfiniBand 写入带宽 (ib_write_bw) 构建的定制脚本对 NVIDIA GPUDirect 远程直接内存访问 (GPUDirect RDMA) 进行基准测试的方法。

        使用 ib_write_bw.sh 脚本对 GPUDirect RDMA 进行基准测试提供了一种简单有效的机制,可以在 HPC 群集中执行 GPUDirect RDMA 基准测试,而无需担心软件安装、依赖项或配置。此脚本包含在 OCI HPC 堆栈 2.10.2 及更高版本中。包含所有接口详细信息的综合测试报告将显示在 OCI 堡垒控制台上,并存储在 /tmp 中以供将来参考。

Remote Direct Memory Access (RDMA) 允许外设组件互连 Express (PCIe) 设备直接访问 GPU 内存。NVIDIA GPUDirect RDMA 专为满足 GPU 加速需求而设计,可在远程系统中的 NVIDIA GPU 之间进行直接通信。它是一种技术,能够使用 PCI Express 的标准功能在 GPU 与第三方对等设备之间实现数据交换的直接路径。它在特斯拉和四功能级 GPU 上启用,GPUDirect RDMA 依赖于 NVIDIA GPU 在 PCI Express 基本地址寄存器区域中公开部分设备内存的功能。

GPU RDMA

“普尔达”

Perftest Package 是用 Uverbs 编写的测试集合,用于作为性能微基准。它包含一组带宽和延迟基准,例如:

  • 发送:ib_send_bw 和 ib_send_lat

  • RDMA 读取:ib_read_bw 和 ib_read_lat

  • RDMA 写入:ib_write_bw 和 ib_write_lat

  • RDMA 原子:ib_atomic_bw 和 ib_atomic_lat

  • 本机以太网(使用 MOFED2 时)-raw_ethernet_bw 和 raw_ethernet_la

perftest 软件包需要使用计算统一设备体系结构 (Compute Unified Device Architecture,CUDA) 进行编译,才能使用 GPUDirect 功能。

在本教程中,我们将重点介绍使用 InfiniBand 写入带宽 (ib_write_bw) 发送事务的 GPUDirect RDMA 带宽测试,该测试可用于使用 RDMA 写入事务测试带宽和延迟。我们将使用本机 ib_write_bw 的定制包装脚本自动执行安装和测试过程。此脚本可用于在集群中的两个 GPU 节点之间检查 ib_write_bw。如果节点上安装了 CUDA,则执行将使用 CUDA 重新编译 perftest 软件包。

目标

  • 使用基于 ib_write_bw 构建的定制脚本对 NVIDIA GPUDirect RDMA 进行基准测试。

先决条件

  • CUDA 工具包 11.7 或更高版本。

  • 安装 NVIDIA Open-Source GPU Kernel Modules 版本 515 或更高版本。

使用 CUDA DMA-BUF 手动安装 perftest

继续手动安装之前,请确保满足所有先决条件,我们将安装在支持的 GPU 配置上。

  • 配置/使用。

    • 导出以下环境变量 LD_LIBRARY_PATH 和 LIBRARY_PATH

      export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

      export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH

  • 克隆 perftest 系统信息库并使用 CUDA 进行编译。

    git clone https://github.com/linux-rdma/perftest.git

  • 克隆后,请使用以下命令。

    cd perftest/ ./autogen.sh && ./configure CUDA_H_PATH=<path to cuda.h> && make -j, e.g.: ./autogen.sh && ./configure CUDA_H_PATH=/usr/local/cuda/include/cuda.h && make -j

    因此,-use_cuda= 标志将可用于添加到命令行:

    ./ib_write_bw -d ib_dev --use_cuda=<gpu index> -a

:使用 ib_write_bw 手动测试 GPUDirect RDMA 需要卸载现有软件包并使用 CUDA 重新编译它。在继续基准测试之前,我们需要手动验证节点配置、GPU 计数和节点上的活动 RDMA 接口。

解决方案概览

ib_write_bw.sh 是一个脚本,它通过自动执行与之相关的所有手动任务来简化 GPUDirect RDMA 基准测试过程。可以使用所有参数直接从堡垒本身触发此脚本。无需在传统的客户机/服务器模型中运行。脚本在执行期间执行以下检查。如果这些检查中的任何一个失败,它将退出并显示错误。

  • 节点配置。
  • CUDA 安装。
  • 安装的 GPU 总数和输入的 gpu ID。
  • 服务器和客户机上的活动 RDMA 接口。
  • 支持的配置
    • BM.GPU.B4.8
    • BM.GPU.A100-v2.8
    • BM.GPU4.8
  • 先决条件
    • 支持的 GPU 配置。
    • 安装的 CUDA 驱动程序和工具包。

如果所有检查都已通过,ib_write_bw.sh 将生成和执行一个可执行的手册来执行安装和配置。

脚本

  • 名称ib_write_bw.sh

  • 位置/opt/oci-hpc/scripts/

  • 堆栈HPC

  • 堆栈版本2.10.3 and above

使用情况

sh ib_write_bw.sh -h Usage: ./ib_write_bw.sh -s <server> -n <node> -c <y> -g <gpu id> Options: s Server hostname n Client hostname. c Enable cuda (Default: Disabled) g GPU id (Default: 0) h Print this help. Logs are stored at /tmp/logs e.g., sh ./ib_write_bw.sh -s compute-permanent-node-1 -n compute-permanent-node-2 -c y -g 2 Supported shapes: BM.GPU.B4.8,BM.GPU.A100-v2.8,BM.GPU4.8

输出样

sh ib_write_bw.sh -s compute-permanent-node-14 -n compute-permanent-node-965 -c y -g 1 Shape: "BM.GPU4.8" Server: compute-permanent-node-14 Client: compute-permanent-node-965 Cuda: y GPU id: 1 Checking interfaces... PLAY [all] ******************************************************************************************************************************* TASK [Gathering Facts] ******************************************************************************************************************* ok: [compute-permanent-node-14] ok: [compute-permanent-node-965] TASK [check cuda] ************************************************************************************************************************ ok: [compute-permanent-node-965] ok: [compute-permanent-node-14] . . Testing active interfaces... mlx5_0 mlx5_1 mlx5_2 mlx5_3 mlx5_6 mlx5_7 mlx5_8 mlx5_9 mlx5_10 mlx5_11 mlx5_12 mlx5_13 mlx5_14 mlx5_15 mlx5_16 mlx5_17 ib_server.sh 100% 630 2.8MB/s 00:00 ib_client.sh 100% 697 2.9MB/s 00:00 Server Interface: mlx5_0 initializing CUDA Listing all CUDA devices in system: CUDA device 0: PCIe address is 0F:00 CUDA device 1: PCIe address is 15:00 CUDA device 2: PCIe address is 51:00 CUDA device 3: PCIe address is 54:00 CUDA device 4: PCIe address is 8D:00 CUDA device 5: PCIe address is 92:00 CUDA device 6: PCIe address is D6:00 CUDA device 7: PCIe address is DA:00 Picking device No. 1 [pid = 129753, dev = 1] device name = [NVIDIA A100-SXM4-40GB] creating CUDA Ctx making it the current CUDA Ctx cuMemAlloc() of a 131072 bytes GPU buffer allocated GPU buffer address at 00007f29df200000 pointer=0x7f29df200000 --------------------------------------------------------------------------------------- RDMA_Write BW Test Dual-port : OFF Device : mlx5_0 Number of qps : 1 Transport type : IB Connection type : RC Using SRQ : OFF PCIe relax order: ON ibv_wr* API : ON TX depth : 128 CQ Moderation : 1 Mtu : 4096[B] Link type : Ethernet GID index : 3 Max inline data : 0[B] rdma_cm QPs : OFF Data ex. method : Ethernet --------------------------------------------------------------------------------------- local address: LID 0000 QPN 0x008b PSN 0xe4ad79 RKey 0x181de0 VAddr 0x007f29df210000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:19:196 remote address: LID 0000 QPN 0x008b PSN 0x96f625 RKey 0x181de0 VAddr 0x007f9c4b210000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:16:13 --------------------------------------------------------------------------------------- #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] CPU_Util[%] 65536 407514 0.00 35.61 0.067920 0.78

测试概要

GPUDirect 计算节点每个接口的 RDMA 测试概要将显示在堡垒上,相同内容将存储在堡垒上的文件夹 /tmp/ib_bw 中。

它查找的重要参数是 BW average[Gb/sec]。

************** Test Summary ************** Server interface: mlx5_0 #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] CPU_Util[%] 65536 407514 0.00 35.61 0.067920 0.78 --------------------------------------------------------------------------------------- Server interface: mlx5_1 #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] CPU_Util[%] 65536 407569 0.00 35.61 0.067929 0.78 --------------------------------------------------------------------------------------- Server interface: mlx5_2 #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] CPU_Util[%] 65536 407401 0.00 35.60 0.067901 0.78 ---------------------------------------------------------------------------------------

参考:

使用 InfiniBand 写入带宽对 NVIDIA GPUDirect RDMA 进行基准测试

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

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

相关文章

Xmind一款极简思维导图和头脑风暴软件,支持PC和移动端,Xmind 2024.10.01101版本如何升级到Pro版?简单操作,最新可用!

文章目录 Xmind下载安装Xmind免费升级到Pro Xmind 是一款全功能的思维导图和头脑风暴软件&#xff0c;不限制节点和文件数&#xff0c;创新无限&#xff0c;界面纯净简洁无广告&#xff0c;支持PC和移动端&#xff0c;思维导图和大纲视图自由切换&#xff0c;可本地化文档存储&…

AutoFixture:.NET 的假数据生成工具

上次推荐过《Bogus&#xff1a;.NET的假数据生成利器》方便我们制造假数据测试。今天继续推荐另外一个也是非常流行的工具。 01 项目简介 AutoFixture 是一个用于 .NET 的测试工具&#xff0c;它允许开发者在单元测试中自动生成随机的测试数据。它支持广泛的数据类型&#xf…

如何使用DockerSpy检测你的Docker镜像是否安全

关于DockerSpy DockerSpy是一款针对Docker镜像的敏感信息检测与安全审计工具&#xff0c;该工具可以帮助广大研究人员在Docker Hub上检测和搜索自己镜像的安全问题&#xff0c;并识别潜在的泄漏内容&#xff0c;例如身份验证密钥等敏感信息。 功能介绍 1、安全审计&#xff1a…

React源码03 - React 中的更新

03 - React 中的更新 React 中创建更新的方式&#xff1a; 初次渲染&#xff1a;ReactDOM.render、ReactDOM.hydrate 后续更新&#xff1a;setState、forceUpdate 1. ReactDOM.render() 先创建 ReactRoot 顶点对象然后创建 FiberRoot 和 RootFiber创建更新&#xff0c;使应用进…

ArcGIS应用指南:多尺度渔网创建

在GIS中&#xff0c;创建渔网矢量文件是GIS中的一项常见任务&#xff0c;通过将研究区域划分为规则的网格&#xff0c;可以更精细地分析和管理城市空间数据。本文以厦门市行政区为例&#xff0c;详细介绍了如何创建不同尺度的渔网矢量网格&#xff0c;以适应不同区域的发展特点…

DCS项目调试踩坑记录

最近在调试一个DCS项目&#xff08;集散控制系统&#xff09;&#xff0c;实际上就是一个新建厂区的控制系统。PLC用的是西门子1500&#xff0c;控制画面使用组态王7.5。 在调试过程中&#xff0c;发现给西门子DB块的变量转移到组态王太难了&#xff0c;因此记录一下&#xff0…

RHCE【远程连接服务器】

目录 一、远程连接服务器简介 二、加密技术简介 SSH工作过程&#xff1a; &#xff08;1&#xff09;版本协商阶段 &#xff08;2&#xff09;密钥和算法协商阶段 &#xff08;3&#xff09;认证阶段 &#xff08;4&#xff09;会话请求阶段 &#xff08;5&#xff0…

互联网人口红利趋缓下的社群粉丝经济新模式探索

摘要&#xff1a;随着互联网人口红利消失近十年&#xff0c;国内互联网人口红利爆发时期凭借大量用户取得成功的模式不再适用。如今互联网人口增长进入平缓期&#xff0c;社群粉丝经济成为新方向。其能借助人群画像精准推送营销信息&#xff0c;降低成本。如“21 链动模式 AI 智…

android openGL ES详解——混合

一、混合概念 混合是一种常用的技巧&#xff0c;通常可以用来实现半透明。但其实它也是十分灵活的&#xff0c;你可以通过不同的设置得到不同的混合结果&#xff0c;产生一些有趣或者奇怪的图象。混合是什么呢&#xff1f;混合就是把两种颜色混在一起。具体一点&#xff0c;就…

【前端】如何制作一个自己的网页(16)

上次&#xff0c;我们学习了两种复合CSS选择器&#xff0c;以及两种内容分组的方式&#xff1a;整体布局的div元素和局部布局的span元素。 学习目标 学习另一种对内容分组的方式&#xff1a;列表结构。首先&#xff0c;我们会简单了解下什么是HTML的列表结构。然后&#xff0…

《深度学习》YOLO v1网络架构 、损失值、NMS极大值抑制

目录 一、Yolo系列v1 1、核心思想 2、示例 3、流程图解析 二、YOLO系列v1损失函数 1、位置误差 2、置信度误差 3、类别概率损失 三、NMS非极大值抑制 1、概念 2、步骤 四、YOLO v1优缺点 1、优点 1&#xff09;速度快 2&#xff09;端到端 3&#xff09;多尺度…

Python 学习笔记(十二)—— 网络编程

目录 一、网络编程的基本概念 1.1 IP地址 1.1.1 IP的版本 1.1.2 IP的分类 1.1.2.1 公有地址 1.1.2.2 私有地址 1.1.3 IP地址的范围 1.1.4 回环测试 1.2 常见的网络设备 1.3 端口 1.3.1 端口分配 二、网络通信协议 2.1 常用网络协议 2.2 OSI网络协议七层模型 2.3…

Java访问修饰符private,default,protected,public

在Java中&#xff0c;访问修饰符决定了类、方法、变量和构造器的可见性和可访问范围。这里有四个主要的访问修饰符&#xff1a;private、default&#xff08;未显式指定&#xff09;、protected 和 public。下面分别解释它们的作用&#xff1a; 1.private 作用&#xff1a;使…

【C++指南】类和对象(四):类的默认成员函数——全面剖析 : 拷贝构造函数

引言 拷贝构造函数是C中一个重要的特性&#xff0c;它允许一个对象通过另一个已创建好的同类型对象来初始化。 了解拷贝构造函数的概念、作用、特点、规则、默认行为以及如何自定义实现&#xff0c;对于编写健壮和高效的C程序至关重要。 C类和对象系列文章&#xff0c;可点击下…

Vue+ECharts+iView实现大数据可视化大屏模板

Vue数据可视化 三个大屏模板 样式还是比较全的 包括世界地图、中国地图、canvas转盘等 项目演示&#xff1a; 视频&#xff1a; vue大数据可视化大屏模板

java多态

1 final 关键字 final关键可以用来修饰变量、成员方法以及类。 1.1. 修饰变量或字段&#xff0c;表示常量(即不能修改) 2. 修饰类&#xff1a;表示此类不能被继承 我们平时是用的 String 字符串类, 就是用 final 修饰的, 不能被继承. 3. 修饰方法&#xff1a;表示该方法不能…

Excel重新踩坑3:条件格式;基本公式运算符;公式中的单元格引用方式;公式菜单栏其他有用的功能说明;

0、前言&#xff1a;以下内容是学习excel公式的基础内容。 1、需求&#xff1a;将表格特定区域中数值大小大于等于30&#xff0c;小于等于80的单元格&#xff0c;颜色填充为红色&#xff0c;大于80的&#xff0c;颜色填充为黄色。 新建规则之后也可以通过该功能清除规则。 2、基…

使用InternVL、LMDeploy和GTE搭建多模态RAG系统

如何将视觉大模型&#xff08;VLM&#xff09;与 多模态RAG 结合起来&#xff0c;创建服装搜索和搭配推荐&#xff01;本文展示了InternVL模型在分析服装图像和提取颜色、款式和类型等关键特征方面的强大功能。 InternVL2是国内首个在MMMU(多学科问答)上突破60的模型&#xff0…

一次使用LD_DEBUG定位问题的经历

在实际工作中&#xff0c;当遇到段错误&#xff0c;我们会很容易的想到这是非法访问内存导致的&#xff0c;比如访问了已经释放的内存&#xff0c;访问数据越界&#xff0c;尝试写没有写权限的内存等。使用gdb进行调试&#xff0c;查看出异常的调用栈&#xff0c;往往可以定位到…

告别装机烦恼,IT小白到IT大神都在用的免费神器

作为USB启动盘制作工具中的佼佼者&#xff0c;Rufus凭借其卓越的性能和实用性&#xff0c;赢得了众多用户的信赖。这款精巧的实用程序不仅能够将系统ISO镜像完美转换为可引导的USB安装介质&#xff0c;还提供了全面的USB设备管理功能。 Rufus的安装包仅有1.5M大小&#xff0c;…