1. 概述
沐曦验收测试套件(MetaX Validation Suite,mxvs)是沐曦面向服务器合作伙伴以及开发者提供的测试软件集合,便于用户方便快捷地了解曦云® 系列GPU的硬件能力,它支持PCIe带宽测试和眼图报告获取、显存带宽测试、算力测试、压力测试等功能。
备注
在使用mxvs工具之前,需确认已加载曦云系列GPU驱动。例如,在Ubuntu系统下,查看/lib/modules/5.4.0-xxx-generic/extra/目录下是否存在metax.ko文件。
工具使用人员需要root权限才能执行mxvs工具命令。
本文档中,输出结果均以曦云C500为示例。
2. 工具部署
mxvs基于AppImage进行封装,请确保系统中正确安装FUSE。
以Ubuntu为例,使用以下命令查看是否安装了FUSE用户空间工具:
dpkg -l | grep fuse
若未安装,可使用以下命令进行安装:
sudo apt-get install fuse
从MXMACA 2.31.0版本起,MXMACA SDK包安装过程中会默认将mxvs工具放置在 /opt/maca/bin/ 目录下。
3. 设备信息显示
命令
mxvs devices
命令将列出设备中所有CPU和GPU的信息。
输出结果
图 3.1 显示设备信息示例图
4. 显卡工作状态显示
命令
mxvs dashboard
命令将动态刷新显示系统中所有显卡的工作状态。
命令参数
表 4.1 显卡工作状态显示命令参数表
参数
必填
描述
-d, --devices
否
测试对象PCIe设备编号(GPU ID),支持单个设备查询或多个设备同时查询。默认选择所有PCIe显卡设备。
-p, --panels
否
默认显示BOARD POWER、TEMPERATURE及USAGE,可选择监控的信息:
0: BOARD POWER
1: TEMPERATURE
2: USAGE
3: HBM BANDWIDTH
4: PCIE BANDWIDTH
5: METAXLINK BANDWIDTH
6: PMBUS POWER
例如,仅显示设备0和设备1的USAGE、HBM BANDWIDTH及PCIE BANDWIDTH状态: mxvs dashboard -d 0,1 -p 2,3,4
输出结果
图 4.1 显示PCIe设备信息示例图
5. PCIe验收测试工具
5.1. PCIe实时速率查询
命令
mxvs pcie bandwidth --devices
命令查询获得系统中指定设备的实时PCIe速率。
命令参数
表 5.1 显卡工作状态显示命令参数表
参数
必填
描述
-d, --devices
否
测试对象PCIe设备编号(GPU ID),支持单个设备查询或多个设备同时查询。默认选择所有PCIe显卡设备。
-c, --continuous
否
持续监控速率开关
输出结果
图 5.1 实时PCIe速率查询结果示例图
5.2. PCIe单向带宽测试
命令
mxvs pcie benchmark unidirection --src-devices
命令参数
表 5.2 PCIe单向带宽测试命令参数表
参数
必填
描述
--src-devices
是
单向带宽测试起点PCIe设备编号,支持单个设备测试或多个设备同时测试。如果需要指定所有设备,可用all作为参数值。
--dst-devices
是
单向带宽测试终点PCIe设备编号,支持单个设备测试或多个设备同时测试。如果需要指定所有设备,可用all作为参数值。
-s, --data-sizes
否
指定测试的基准数据流,支持单个基准数据流测试或多个基准数据流同时进行测试。可选单位有KB、MB、GB,示例: --data-sizes 1KB,1MB,1GB。默认选择10GB的基准数据流进行测试。
--cpu-cores
否
指定GPU与CPU之间带宽测试时使用的CPU内核编号。如果需要指定多个内核,可通过逗号分隔。
--mode
否
指定D2D带宽测试时,数据拷贝的模式:
ingress:从目的设备向源设备拷贝数据
egress:从源设备向目的设备拷贝数据
默认选择egress
--bref
否
仅显示测试结果,不显示MetaX GPU基本信息。
--json
否
将结果以JSON格式输出到文本中,可指定输出的文件名,如 --json result.json
输出结果
图 5.2 单向带宽测试结果示例图
备注
若不同NUMA节点下的设备带宽结果相差较大,且通过 --cpu-cores 指定合适的内核后,依旧是一样结果,则可以尝试执行以下命令清理缓存,避免cache导致的跨NUMA节点内存访问。
echo 3 > /proc/sys/vm/drop_caches
5.3. PCIe双向带宽测试
命令
mxvs pcie benchmark bidirection --devices
命令参数
表 5.3 PCIe双向带宽测试命令参数表
参数
必填
描述
-d, --devices
是
双向带宽测试对象PCIe设备编号,选择两个以上设备测试。如果需要指定所有设备,可用all作为参数值。
-s, --data-sizes
否
指定测试的基准数据流,支持单个基准数据流测试或多个基准数据流同时进行测试。可选单位有KB、MB、GB,示例:--data-sizes 1KB,1MB,1GB。默认选择10GB的基准数据流进行测试。
--cpu-cores
否
指定GPU与CPU之间带宽测试时使用的CPU内核编号。如果需要指定多个内核,可通过逗号分隔。
--bref
否
仅显示测试结果,不显示MetaX GPU基本信息。
--json
否
将结果以JSON格式输出到文本中,可指定输出的文件名,如 --json result.json
输出结果
图 5.3 双向带宽测试结果示例图
备注
若不同NUMA节点下的设备带宽结果相差较大,且通过 --cpu-cores 指定合适的内核后,依旧是一样结果,则可以尝试执行以下命令清理缓存,避免cache导致的跨NUMA节点内存访问。
echo 3 > /proc/sys/vm/drop_caches
5.4. PCIe眼图特性测试
命令
mxvs eye --devices
命令参数
表 5.4 PCIe眼图特性测试命令参数表
参数
必填
描述
-d, --devices
否
测试对象PCIe设备编号,支持单个设备测试或多个设备同时测试。默认选择所有PCIe显卡设备。
-p, --phy
否
物理层编号,范围:0 - 3,默认选择所有物理层。
-l, --lane
否
差分信号组合编号,范围:0 - 3,默认选择所有差分信号组合。
--bref
否
仅显示测试结果,不显示MetaX GPU基本信息。
备注
在眼图测试过程中,请勿中断测试(如按Ctrl+C),以免导致异常。
眼图测试结束后,建议重启服务器。
输出结果
图 5.4 眼图特性测试结果示例图
6. Memory验收测试工具
6.1. Memory实时带宽查询
命令
mxvs memory bandwidth --devices
命令参数
表 6.1 Memory实时带宽查询命令参数表
参数
必填
描述
-d, --devices
否
测试对象PCIe设备编号,支持单个设备查询或多个设备同时查询。默认选择所有PCIe显卡设备。
-c, --continuous
否
持续监控带宽开关。
输出结果
图 6.1 Memory实时带宽查询结果示例图
6.2. Memory带宽测试
命令
mxvs memory benchmark --devices
命令参数
表 6.2 Memory带宽测试命令参数表
参数
必填
描述
-d, --devices
否
测试对象PCIe设备编号,支持单个设备测试或多个设备同时测试。默认选择所有PCIe显卡设备。
--bref
否
仅显示测试结果,不显示MetaX GPU基本信息
--json
否
将结果以JSON格式输出到文本中,可指定输出的文件名,如 --json result.json
备注
默认选择10GB的基准数据流进行测试。
输出结果
图 6.2 Memory带宽测试结果示例图
7. MetaXLink验收测试工具
7.1. MetaXLink实时带宽查询
mxvs metaxlink bandwidth --devices
命令参数
表 7.1 MetaXLink实时带宽查询命令参数表
参数
必填
描述
-d, --devices
否
测试对象PCIe设备编号,支持单个设备查询或多个设备同时查询。默认选择所有PCIe显卡设备。
输出结果
图 7.1 MetaXLink实时带宽查询示例图
7.2. MetaXLink带宽测试
命令
mxvs metaxlink benchmark --devices
命令参数
表 7.2 MetaXLink带宽测试命令参数表
参数
必填
描述
--devices
否
带宽测试对象PCIe设备编号,支持单个设备测试或多个设备同时测试。如果需要指定所有设备,可用all作为参数值,默认选择所有PCIe显卡设备。
--mode
否
指定D2D带宽测试时,数据拷贝的模式:
ingress:从目的设备向源设备拷贝数据
egress:从源设备向目的设备拷贝数据
默认选择egress。
--bref
否
仅显示测试结果,不显示MetaX GPU基本信息。
--json
否
将结果以JSON格式输出到文本中,可指定输出的文件名,如 --json result.json
输出结果
图 7.2 MetaXLink带宽测试示例图
7.3. MetaXLink眼图特性测试
命令
mxvs eye --metaxlink --metaxlink-ports
命令参数
表 7.3 MetaXLink眼图特性测试命令参数表
参数
必填
描述
--metaxlink
是
MetaXLink眼图测试开关
--metaxlink-ports
否
测试对象MetaXLink端口编号,支持单个端口测试或多个端口同时进行测试,默认选择所有端口(1-7)。
不能指定非连接状态的端口,需确认所选端口为连接状态。可通过命令 mx-smi topo --show-mxlk 查看MetaXLink已连接端口信息。
如果需要指定多个端口,可通过逗号隔开,示例:--metaxlink-ports 4,5
-d, --devices
否
测试对象PCIe设备编号,支持单个设备测试或多个设备同时测试。默认选择所有PCIe显卡设备。
-l, --lanes
否
差分信号组合编号,范围:0 - 3,默认选择所有差分信号组合。
-p, --phys
否
物理层编号,范围:0 - 3,默认选择所有物理层。
--bref
否
仅显示测试结果,不显示MetaX GPU基本信息。
备注
在眼图测试过程中,请勿中断测试(如按Ctrl+C),以免导致异常。
眼图测试结束后,建议重启服务器。
输出结果
图 7.3 MetaXLink眼图特性测试示例图
8. P2P验收测试工具
8.1. P2P带宽测试
命令
mxvs p2p --src-devices
命令参数
表 8.1 P2P带宽测试命令参数表
参数
必填
描述
--src-devices
是
P2P测试起点PCIe设备编号,支持单个设备测试或多个设备同时测试。如果需要指定所有设备,可用all作为参数值。
--dst-devices
是
P2P测试终点PCIe设备编号,支持单个设备测试或多个设备同时测试。如果需要指定所有设备,可用all作为参数值。
--mode
否
指定D2D带宽测试时,数据拷贝的模式:
ingress:从目的设备向源设备拷贝数据
egress:从源设备向目的设备拷贝数据
默认选择egress。
--unidirection
否
P2P测试单向数据发送使能开关。
--parallel
否
并行执行一对多,多对一,多对多P2P单向数据发送,需与 --unidirection 一同使用。
--json
否
将结果以JSON格式输出到文本中,可指定输出的文件名,如 --json result.json
输出结果
图 8.1 P2P带宽测试示例图
9. 算力测试工具
命令
mxvs ops --devices
命令参数
表 9.1 算力测试命令参数表
参数
必填
描述
--models
否
测试对象精度,可指定精度:int8、bf16、fp16、fp32_vector、fp32_matrix、tf32。默认测试以上所有精度。
-d, --devices
否
测试对象PCIe设备编号,支持单个设备测试或多个设备同时测试。如果需要指定所有设备,可用all作为参数值,默认选择所有PCIe显卡设备。
若为sgpu场景,则需传入具体的sgpu设备编号,如 -d 0-s0,即被测对象为设备0上的子设备0。
--bref
否
仅显示测试结果,不显示MetaX GPU基本信息。
--json
否
将结果以JSON格式输出到文本中,可指定输出的文件名,如 --json result.json
备注
若要测试sGPU场景,需先将主机设备进行切分,具体方法参见《曦云® 系列通用计算GPU mx-smi使用手册》中“sGPU切分选项”章节。
设备一旦开启切分功能,无论是否创建子设备,父设备不可用,即无算力测试结果。
算力结果因调度策略不同而不同。
10. 压力测试
10.1. XCore压力测试
命令
mxvs stress --xcore --xcore-devices
命令参数
表 10.1 XCore压力测试命令参数表
参数
必填
描述
--xcore
是
XCore压力测试开关。
--xcore-devices
否
测试对象PCIe设备编号,支持单个设备测试或多个设备同时测试。如果需要指定所有设备,可用all作为参数值,默认选择所有PCIe显卡设备。
--duration
否
以 “HH:MM”的格式,指定执行压力测试的持续时间,默认为 “00:30”。当进行长时间压力测试时,建议在后台执行,例:nohup mxvs stress --xcore --duration 12:00 &
输出结果
图 10.1 XCore压力测试结果示例图
10.2. MetaXLink压力测试
命令
mxvs stress --metaxlink
命令参数
表 10.2 MetaXLink压力测试命令参数表
参数
必填
描述
--metaxlink
是
MetaXLink压力测试开关。
--duration
否
以 “HH:MM”的格式,指定执行压力测试的持续时间,默认为 “00:30”。
当进行长时间压力测试时,建议在后台执行,例如:nohup mxvs stress --metaxlink --duration 12:00 &
输出结果
图 10.2 MetaXLink压力测试结果示例图
11. 光模块验收测试工具(仅适用于C500X)
11.1. 单机MetaXLink带宽测试
命令
mxvs om client --src-devices
命令参数
表 11.1 单机MetaXLink带宽测试命令参数表
参数
必填
描述
--src-devices
是
测试起点PCIe设备编号,支持单个设备测试或多个设备同时测试。测试设备间需为MetaXLink连接。
--dst-devices
是
测试终点PCIe设备编号,支持单个设备测试或多个设备同时测试。测试设备间需为MetaXLink连接。
--data-sizes
否
指定测试的基准数据流,支持单个基准数据流测试或多个基准数据流同时进行测试。
可选单位有KB、MB,示例:--data-sizes 1KB,1MB,1024MB。默认选择128MB的基准,最大支持1024MB。
-l, --loop
否
指定DMA copy次数,默认为1,若值为N,则测试结果取N次平均值。
-c, --continually
否
持续监控速率开关,仅支持单一的data-size值。
--check
否
开启结果校验,检查数据一致性。
输出结果
图 11.1 单机MetaXLink带宽测试结果示例图
11.2. 跨机MetaXLink带宽测试
跨机MetaXLink带宽测试需要在远端服务器先启动OM Server。
Server命令
mxvs om server
Server命令参数
表 11.2 跨机MetaXLink带宽测试命令参数表
参数
必填
描述
-P, --mxvs-port
否
Server用于测试请求转发的服务端口,默认为9601。
-p, --mem-port
否
Server用于测试内存分配的服务端口,默认为9600。
Client命令
mxvs om client --dst-addr
Client命令参数
表 11.3 跨机MetaXLink带宽测试命令参数表
参数
必填
描述
--src-devices
是
测试起点PCIe设备编号,支持单个设备测试或多个设备同时测试。测试设备间需为MetaXLink连接。
--dst-devices
是
测试终点PCIe设备编号,支持单个设备测试或多个设备同时测试。测试设备间需为MetaXLink连接。
--data-sizes
否
指定测试的基准数据流,支持单个基准数据流测试或多个基准数据流同时进行测试。
可选单位有KB、MB,示例:--data-sizes 1KB,1MB,1024MB。默认选择128MB的基准,最大支持1024MB。
-l, --loop
否
指定DMA copy次数,默认为1,若值为N,则测试结果取N次平均值。
-c, --continually
否
持续监控速率开关,仅支持单一的data-size值。
--check
否
开启结果校验,检查数据一致性。
--dst-addr
是
指定目的服务器IP地址。
--src-addr
否
非本机进行测试时需指定,默认为本机测试。
-w, --switch
是
当前跨机MetaXLink支持3种形态,对应参数值为:
0:双机测试,默认值。
1:新华三交换机switch box。
2:浪潮交换机switch box,此外还需指定 --bar 的值。浪潮交换机的switch box配置完成后,服务器上生成/etc/metax.conf文件,该文件记录了服务器之间的设备信息及BAR信息。
-b, --bars
否
仅当使用浪潮交换机switch box时需指定BAR地址(在/etc/metax.conf文件查看)。
输出结果
图 11.2 跨机MetaXLink带宽测试结果示例图
12. 附录
12.1. 术语/缩略语
术语/缩略语
全称
说明
AppImage
一种把应用打包成单一文件的格式
DMA
Direct Memory Access
直接内存访问
FUSE
Filesystem in Userspace
一个面向类Unix计算机操作系统的软件接口
MetaXLink
沐曦GPU D2D接口总线
mxvs
MetaX Validation Suite
沐曦验收测试套件
PCIe
Peripheral Component Interconnect Express
一种高速串行计算机扩展总线标准