## 1.序言
在海光 DCU 加速卡整机交付、硬件验收、环境故障排查场景中,需要一套标准化手段验证加速卡的稳定性、带宽以及算力指标。HyQual作为海光官方推出的 DCU 专用检测工具,集成压力、带宽、峰值算力多类测试能力,可自动识别设备并输出量化测试结果。但终端输出的 PASS/FAIL 仅为初步判定,实际问题定位需要结合日志、硬件规格综合分析。本文对工具版本、部署方式、全部测试项目、输出日志路径及结果判读要点进行完整梳理,为硬件验收、运维排障提供参考依据。
## 2. HyQual 安装与配置
### 2.1 系统要求
| 名称 | HyQual |
| ---- | -------------------------------------------------------------------- |
| 版本 | v2.2.7 |
| 硬件要求 | 支持 DCU 硬件版本-Z100L/K100/K100-AI/K100-AI-ECO
16GB 以上内存
20GB 磁盘空间 |
| 软件要求 | Python>=3.10
驱动≥6.2.31
Glibc≥2.17
libstdc++-devel≥4.8.5 |
| OS支持 | linux 推荐UOS V2510 |
### 2.2本文环境软件版本说明
| 名称 | 版本 |
| ------- | ----------------------- |
| 服务器系统 | UOS V2510 |
| 服务器 | 浪潮 AI 服务器 (NF5468m6) |
| AI 加速卡 | K100_AI (4卡) |
| ROCm 版本 | rock-6.3.13-V1.12.0.run |
| Python | python3.10 |
### 2.3 HQual 安装包下载
安装包下载地址:
https://download.sourcefind.cn:65024/5/main/基础压力工具/K100-AI
~~~bash
# 下载工具安装包
wget https://download.sourcefind.cn:65024/file/5/基础压力工具/K100-AI/hyqual-v2.2.7.tar.gz
# 压缩包解压缩
tar -xvf hyqual-v2.2.7.tar.gz
# 进入工具安装包目录
cd hyqual_v2.2.7
~~~
### 2.4 HyQual 目录结构介绍

| 文件/目录 | 说明 |
| ------------ | ----------------------- |
| bin | 存放 HyQual 运行所调用的编译工具 |
| lib | 存放 HyQual 运行所需要的动态库 |
| miniconda3 | HyQual 工具的依赖环境 |
| result | HyQual 运行结果保存路径 |
| rocm_install | HyQual 运行需要的 runtime 环境 |
| run | HyQual 测试项目调用接口 |
## 3. 使用指南
HyQual 支持命令行和交互两种运行方式,它可以自动识别服务器上所有的
DCU 卡并进行相同的操作,目前测试项目如下图所示。
- 交互方式:
~~~bash
# 在hyqual_v2.2.7目录下执行如下命令启动交互界面
./run
~~~

- 命令行方式:
~~~bash
# 在终端直接执行命令./run 1,sec sec代表需要执行时间单位s(秒) 默认1800s
./run 1,600
~~~
### 3.1 工具参数说明
| 项目 | 名称 | 说明 |
| --- | --------------------------------------- | ------------------------------- |
| 1 | Thermal Core Qualification Test | 计算核心压力测试,记录 DCU 功耗、温度、频率等性能 |
| 2 | Thermal Mem Qualification Test | 显存压力测试,记录 DCU 功耗、温度、频率等性能 |
| 3 | Thermal Core and Mem Qualification Test | 计算核心和显存同时提供压力,记录 DCU功耗、温度、频率等性能 |
| 4 | PCIe Bandwidth Test | 测试 DCU 的 PCIe 带宽 |
| 5 | xHCL Bandwidth Test | 测试 DCU 的 XHMI 带宽 |
| 6 | Mem Bandwidth Test | 测试 DCU 的显存带宽 |
| 7 | Peak Performance Test | 测试 DCU 的不同精度的算力 |
| h | HYQual Version | 显示 HyQual 版本信息 |
| t | Generate System Topology | 输出 DCU 卡拓扑图 |
| q | Quit HYQual | 退出 HyQual 程序 |
### 3.2 Thermal Core 测试
#### 3.2.1 测试项介绍
该测试项是对 DCU 的计算核心进行长时间计算任务。会把 DCU 功耗压到 TDP 功耗,然后计算核心的利用率压到100%,由于采用的随机的数据,所以显存没有多大占用。如果散热有问题,该测试项目可能会不通过。
#### 3.2.2 测试项运行
~~~bash
# 执行测试
./run 1,600
~~~
#### 3.2.3 测试结果查看

./result/thermal 中会记录运行数据,命名为:thermal_test_core_x.xlsx,里面有详细的压测信息。首页记载了所有设备的压测总结,包含了计算核心与显存单元压测阶段的最大值,以及它们的门限值,如果温度超过了门限值的话,该测试失败,需要查看服务器的散热有没有问题。除此之外,首页还记载了所有 DCU 设备的监控信息的概览图。

其它 sheet 则记录了每一张 DCU 设备压测过程中的监控信息,包括每一项测试信息的记录以及总的信息概览图。

---
### 3.3 Thermal Mem测试
#### 3.3.1 测试项介绍
该测试项是对 DCU 的显存进行长时间读写任务,然后对读到的数据进行加和等基础操作。
该测试项目会把 DCU 功耗压到 TDP 功耗,显存占用在 4%左右,计算核心的利用率也会压到最大。该项也跟服务器的散热息息相关,如果散热有问题,该测试项目可能会不通过。
#### 3.3.2 测试项目运行
~~~bash
# 执行测试
./run 2,600
~~~
#### 3.3.3 测试结果查看

./result/thermal中会记录运行数据,命名为:thermal_test_mem_x.xlsx,里面有详细的压测信息。首页记载了所有设备的压测总结,包含了计算核心与显存单元压测阶段的最大值,以及它们的门限值,如果温度超过了门限值的话,该测试失败,需要查看服务器的散热有没有问题。除此之外,首页还记载了所有 DCU 设备的监控信息的概览图。

其它 sheet 则记录了每一张 DCU 设备压测过程中的监控信息,包括每一项
测试信息的记录以及总的信息概览图。

---
### 3.4 PCIe 带宽测试
#### 3.4.1 测试项介绍
该测试项目是测试 CPU 到 DCU 的数据传输速度,以及 DCU 到 CPU 的数据传输速度。目前 DCU 支持的是 PCIe4.0 以及 X16 的链路带宽。表 为 PCIe 的传输速率。
| PCIE | 5.0 | 4.0 | 3.0 | 2.0 | 1.0 |
| ---- | ------ | ------ | ------ | ------- | ------- |
| 速率 | 32GT/s | 16GT/s | 8GT/s | 5GT/s | 2.5GT/s |
| X16 | 64GB/s | 32GB/s | 16GB/s | 8GB/s | 4GB/s |
| X8 | 32GB/s | 16GB/s | 8GB/s | 4GB/s | 2GB/s |
| X4 | 16GB/s | 8GB/s | 4GB/s | 2GB/s | 1GB/s |
| X1 | 4GB/s | 2GB/s | 1GB/s | 500MB/s | 250MB/s |
DCU 实际上运行的 PCIe 版本既跟 CPU 有关,也跟服务器有关:CPU 的影响如下,其它条件满足的条件下,例如:如果采用 HG 7285 CPU,它最高支持 PCIe3.0的协议,则相关的 PCIe 带宽受PCIe3.0 的限制,单向理论带宽是 16GB/s;如果是 HG 7380 CPU,支持 PCIe4.0 的协议,单向理论带宽是 32GB/s。CPU 满足PCIe4.0 的条件,如果服务器仅支持到 PCIe3.0 的话,则 DCU 单向理论带宽是16GB/s;如果服务器支持到 PCIe4.0 的话,则 DCU 单向理论带宽能到 32GB/s。
#### 3.4.2 测试项目运行
~~~bash
# 执行测试
./run 4,600
~~~
#### 3.4.3 测试结果查看

一般 PCIe 的实际性能在理论性能的 80%左右,这属于正常的性能损失。测试结果中“Fb to Sys”表示 D2H(device to host)的带宽,“Sys to Fb”表示 H2D(host to device)带宽。
本次测试结果在理论性能的 70%-100%之间,都认为是满足需求,受不同OS、不同平台、不同硬件设备的影响,测试结果会略有差异。测试详细结果可以在 results/bandwidth/pcie_bandwidth_x.log 中查看。
---
### 3.5 xHMI 带宽测试
#### 3.5.1 测试项介绍
该测试项是针对 DCU互联的测试项目,主要是针对硬件是 DCU的 xHMI桥接卡,以及后续的 HYSwitch 等互联设备。目前支持该测试项的卡有 Z100L,像 K100、K100-AI 海光暂时取消了该接
口。执行测试前,需要先安装好 xHMI 桥接卡,并且冲刷 vbios,使能桥接卡。由于 Z100L 上的 XHMI 桥接卡已经停产,该测试项海光作为保留项目,用于后续卡的互联测试。
---
### 3.6 显存带宽测试
#### 3.6.1 测试项介绍
此项测试是基于 BabelStream 测试构建的,是在传统 CPU stream 测试的基础上,新增了几项跟 GPU 相关测。主要是在之前四种数组运算(数组的复制Copy、数组的尺度变换-Scale、数组的矢量求和-ADD、数组的复合矢量求和Triad)的基础上加了数组点乘-Dot 等操作。
#### 3.6.2 测试项目运行
~~~bash
# 执行测试
./run 6,600
~~~
#### 3.6.3 测试结果查看

该测试主要是基于 BabelStream 测试,关注点主要是在 Copy 测试上,要求Copy 带宽要在理论带宽的 70%-100%以内,表示环境正常。测试结果也会保存到./result/bandwidth/graphicmem_bandwidth_x.log。
---
### 3.7 硬件算力测试
#### 3.7.1 测试项介绍
本测试项基于通用矩阵乘(GEMM,General Matrix Multiplication)运算,根据不同精度的GEMM 运算,来计算 DCU 的实际算力值。基本原理是通过计算固定 size 的 gemm 运算需要的计算量,以及收集完成 gemm 运算的时间,来计算 DCU 的实际工作算力。根据不同的硬件支持的数据类型,该测试项目会测试不同的 GEMM 结果。
常见的 GEMM 如下:
dgemm:双精(double)gemm 运算,数据精度 fp64
sgemm:单精(single)gemm 运算,数据精度 fp32
hgemm:半精(half)gemm 运算,数据精度 fp16
bf16gemm:bf16(Brain Float 16)gemm 运算,数据精度 bf16
tf32gemm:tf32(Tensor Float 32) gemm 运算,数据精度 tf32
i8gemm:int8 gemm 运算,数据精度 int8
u8gemm:unsigned int8 gemm 运算,数据精度 unsigned int8
#### 3.7.2 测试项目运行
~~~bash
# 执行测试
./run 7,600
~~~
#### 3.7.3 测试结果查看

该测试会根据硬件,自动选择相应支持的 Gemm 运算,依次进行不同类型的 gemm运算,每一项 gemm运算会指定所有的卡运行。所有的 gemm运算会运行三次,取三次测试的最优结果。正常算力测试结果一般满足标称算力的 90%+
### 3.8 其它
#### 3.8.1 测试项目运行
输入 h 将提示 HyQual 的版本信息。
输入 t 将输基于 numa 的拓扑图,在 result/目录生成 topology.txt 文件。
输入 q 将退出 HyQual 程序。
#### 3.8.2 测试结果查看
