ROCm Bandwidth Test(RBT-Next Generation,简称 RBT-NG)是用于测试 AMD 平台上 CPU 与 GPU、GPU 与 GPU 之间带宽的工具,基于插件架构设计,支持灵活扩展。以下是其使用方法和测试流程的详细分析。
1. 安装与环境配置
1.1 安装方式
可以直接apt安装可执行程序,也可以下载源码自己编译安装。
直接安装:
sudo apt install rocm-bandwidth-test
源码编译安装:
RBT-NG 支持通过Makefile或CMake安装,默认安装路径为/opt/rocm/(可自定义):
git clone https://github.com/ROCm/rocm_bandwidth_test
# 使用Makefile安装
make install
# 使用CMake安装(自定义路径示例)
cmake --install . --prefix /path/to/install/location
1.2 环境变量配置
为确保工具能正确找到可执行文件、依赖库和插件,需配置以下环境变量(以默认安装路径/opt/rocm为例):
# 将可执行文件路径添加到PATH
export PATH=/opt/rocm/bin:$PATH
# 将依赖库路径添加到LD_LIBRARY_PATH(供插件加载)
export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
插件默认安装路径:/opt/rocm/lib/rocm_bandwidth_test/plugins/(扩展名为.amdplug)。
2. 基本使用命令
RBT-NG 的核心可执行文件为rocm_bandwidth_test,通过命令行参数控制测试行为,常用基础命令如下:
| 命令 | 功能 |
|---|---|
rocm_bandwidth_test --help | 查看基本帮助信息(选项和子命令) |
rocm_bandwidth_test --version | 查看工具版本(含 commit、分支、构建类型等) |
rocm_bandwidth_test --builtin-help | 查看内置插件的帮助信息 |
rocm_bandwidth_test --pcie-info | 显示 PCIe 版本、传输速率和带宽信息(如 PCIe 4.0 x16 的带宽为 31.508 GB/s) |
3. 插件与测试功能
RBT-NG 基于插件架构,核心测试功能通过插件实现。内置插件包括:
-
hello:简单的示例插件,验证插件加载功能。 -
tb(TransferBench):核心测试插件,用于带宽性能测试。
3.1 运行插件的方式
通过run或plugin --run子命令调用插件,两种方式等效:
# 方式1:直接运行插件
rocm_bandwidth_test run 插件名
# 方式2:通过plugin子命令运行(以tb插件为例)
rocm_bandwidth_test plugin --run tb
3.2 核心测试功能(以tb插件为例)
tb插件支持 CPU 与 GPU、GPU 与 GPU 之间的带宽测试,主要选项如下:
| 选项 | 功能 |
|---|---|
-a | 执行所有设备组合的单向复制测试(如 CPU→GPU、GPU→CPU、GPU→GPU) |
-A | 执行所有设备组合的双向复制测试(并发双向传输) |
-e | 列出当前平台上启用的 ROCm 设备(拓扑信息) |
-v, --version | 查看插件版本信息 |
3.3 测试示例
-
查看
tb插件帮助(需先运行插件并传递-h):rocm_bandwidth_test run tb -h -
执行单向复制测试(所有设备组合):
rocm_bandwidth_test run tb -a -
列出 ROCm 设备拓扑:
rocm_bandwidth_test run tb -e
4. 测试场景与扩展
RBT-NG 支持多种测试场景,满足不同需求:
-
CPU-GPU 带宽测试:测量主机内存与 GPU 显存之间的传输速率(如 PCIe 链路性能)。
-
GPU-GPU 带宽测试:针对多 GPU 系统,测试显卡之间的数据传输速率(如 NVLink 或 PCIe 互联)。
-
多线程测试:模拟真实应用中的并发数据传输,反映多任务场景下的带宽性能。
-
自定义扩展:通过编写自定义插件(
.amdplug格式),添加新的测试场景(如特定数据格式或传输模式)。
5. 参考文档
- 官方 RBT 文档
- TransferBench 文档(
tb插件的核心引擎)
通过以上步骤,可快速使用 RBT-NG 测试 AMD 平台的带宽性能,并根据需求扩展测试场景。
729

被折叠的 条评论
为什么被折叠?



