1.1 ROCr 测试集 (rocrtst) 完整使用指南

使用的ROCm 版本为最新7.3.0。

1. 概述

rocrtst 是 ROCr Runtime 的测试套件,基于 Google Test (gtest) 框架构建。所有测试用例统一编译为一个可执行文件 rocrtst64,通过 gtest 的 --gtest_filter 参数选择性运行。测试覆盖功能验证、性能评估、负面测试和压力测试四大类。

2. 目录结构

复制代码
rocrtst/
├── README.md                # 官方构建说明
├── Kernels/                 # GPU kernel 源码 (.cl),编译为 .hsaco
├── common/                  # 测试公共基础代码
├── gtest/                   # Google Test 框架
├── thirdparty/              # 第三方依赖 (hwloc 等)
├── config/                  # 配置文件
├── samples/                 # 独立示例程序 (各自有 CMakeLists.txt)
│   ├── rocm_async/          # 异步内存拷贝示例
│   ├── binary_search/       # 二分查找示例
│   ├── ipc/                 # 进程间通信示例
│   └── rocrinfo/            # ROCr 信息查询工具
└── suites/                  # 测试套件 (统一构建)
    ├── test_common/         # 主入口,CMakeLists.txt 在此
    ├── functional/          # 功能测试
    ├── performance/         # 性能测试
    ├── negative/            # 负面测试
    └── stress/              # 压力测试

3. 测试套件详情

3.1 功能测试 (functional/)

验证 ROCr API 的正确性,包含以下测试模块:

模块 说明
svm_memory SVM (共享虚拟内存) 功能验证
virtual_memory 虚拟内存管理 API 测试
memory_basic 基本内存分配/释放
memory_allocation 内存分配策略测试
memory_access 内存访问权限测试
memory_alignment 内存对齐验证
memory_atomics 内存原子操作
metadata_prefetch 内存预取功能
cu_masking CU (计算单元) 掩码测试
signal_kernel / signal_concurrent HSA 信号机制
ipc 进程间共享内存
agent_props GPU Agent 属性查询
counted_queues 队列计数管理
reference_count 引用计数机制
concurrent_init / concurrent_shutdown 并发初始化/关闭
debug_basic 调试功能基础测试
deallocation_notifier 内存释放通知
filter_devices 设备过滤
gpu_coredump GPU coredump 功能
cuid CU ID 相关
time_stamp 时间戳功能
test_fault_example 故障处理示例
aql_barrier_bit AQL 屏障位测试

3.2 性能测试 (performance/)

模块 说明
dispatch_time GPU 任务分发延迟
enqueueLatency 队列入队延迟
memory_async_copy 异步内存拷贝性能
memory_async_copy_numa NUMA 架构下的异步拷贝
memory_async_copy_on_engine 指定引擎的异步拷贝
agent_preload Agent 预加载性能

3.3 负面测试 (negative/)

模块 说明
memory_allocate_negative_tests 内存分配异常场景
queue_validation 队列参数验证

3.4 压力测试 (stress/)

模块 说明
memory_concurrent_tests 并发内存操作压力
queue_write_index_concurrent_tests 队列写索引并发压力

4. 构建方法

4.1 前置依赖

bash 复制代码
sudo apt-get install libhwloc-dev libnuma-dev libyaml-cpp-dev

4.2 环境变量

确保 ROCM_DEV_PREFIX 已设置,通常为 ROCm 安装路径(如 /opt/rocm-7.3.0)。

4.3 构建

bash 复制代码
ROCM_PREFIX = 'your ROCm path'

cd rocrtst/suites/test_common
mkdir -p build && cd build

cmake \
    -DCMAKE_PREFIX_PATH="$ROCM_PREFIX" \
    -DCMAKE_INSTALL_PREFIX="$ROCM_PREFIX" \
    -DOPENCL_DIR="$ROCM_PREFIX" \
    ..

make -j$(nproc)
make rocrtst_kernels
sudo make install

4.5 构建 samples(可选)

samples 下的程序需单独构建:

bash 复制代码
ROCM_PREFIX = 'your ROCm path'

cd rocrtst/samples/<sample_name>
mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH="$ROCM_PREFIX" ..
make

5. 运行测试

5.1 基本运行

bash 复制代码
# 确保能找到 ROCr 库
export LD_LIBRARY_PATH=$ROCM_PREFIX/lib:$LD_LIBRARY_PATH

# 运行所有测试
sudo $ROCM_PREFIX/bin/rocrtst64

# 或从安装目录的 ASIC 子目录运行(推荐,可自动找到对应 kernel)
cd $ROCM_PREFIX/share/rocrtst/gfx942  # 替换为你的 GPU 型号
sudo $ROCM_PREFIX/bin/rocrtst64

5.2 筛选测试

bash 复制代码
# 列出所有测试用例
rocrtst64 --gtest_list_tests

# 运行特定测试
rocrtst64 --gtest_filter="*SVM*"
rocrtst64 --gtest_filter="*VirtualMemory*"
rocrtst64 --gtest_filter="*AsyncCopy*"

# 运行某一类测试
rocrtst64 --gtest_filter="*Memory*"

5.3 rocrtst 专用参数

bash 复制代码
rocrtst64 -h                     # 查看帮助
rocrtst64 -i 100                 # 设置迭代次数
rocrtst64 -v 2                   # 设置详细级别 (0=最少, 1=中间值, 2=进度, ≥3=调试)
rocrtst64 -m 1                   # GPU 监控信息级别 (0=关闭, 1=打印, ≥2=更多)

5.4 组合使用

bash 复制代码
# 运行 SVM 测试,迭代 10 次,显示进度
sudo rocrtst64 --gtest_filter="*SVM*" -i 10 -v 2

6. 常见问题

  • 找不到 kernel 文件 :确保从对应 GPU 的 ASIC 目录运行,或 kernel .hsaco 文件在正确路径。
  • cmake 报 yaml-cpp 缺失 :执行 sudo apt-get install libyaml-cpp-dev
  • 权限问题 :大多数测试需要 sudo 运行以访问 GPU 设备。
相关推荐
DeeplyMind3 个月前
09 - SVM缺页处理机制
svm·amdgpu·rocm·kfd·rocr
DeeplyMind3 个月前
07 - SVM内存迁移机制
svm·amdgpu·rocm·kfd·rocr
DeeplyMind3 个月前
ROCm rocr-libhsakmt分析系列4: HsaMemFlags分析
rocm·rocr·libhsakmt·hsamemflags
DeeplyMind5 个月前
AMD rocr-libhsakmt分析系列3-1: Apertures
linux·amdgpu·rocm·kfd·rocr
DeeplyMind5 个月前
AMD rocr-libhsakmt分析系列6-2:共享机制-import
linux·amdgpu·dma-buf·rocm·kfd·rocr
DeeplyMind7 个月前
AMD rocr-libhsakmt分析系列3-4:svm-reserve模式实现分析
linux·驱动开发·1024程序员节·amdgpu·kfd·rocr
DeeplyMind7 个月前
rocr专栏介绍
linux·ai·amdgpu·rocm·rocr·libhsakmt·thunk