1. 概述

沐曦验收测试套件(MetaX Validation Suite,mxvs)是沐曦面向服务器合作伙伴以及开发者提供的测试软件集合,便于用户方便快捷地了解曦云® 系列GPU的硬件能力,它支持PCIe带宽测试和眼图报告获取、显存带宽测试、算力测试、压力测试等功能。

备注

  • 在使用mxvs工具之前,需确认已加载曦云系列GPU驱动。例如,在Ubuntu系统下,查看/lib/modules/5.4.0-xxx-generic/extra/目录下是否存在metax.ko文件。

  • 工具使用人员需要root权限才能执行mxvs工具命令。

  • 本文档中,输出结果均以曦云C500为示例。

2. 工具部署

  1. mxvs基于AppImage进行封装,请确保系统中正确安装FUSE。

    以Ubuntu为例,使用以下命令查看是否安装了FUSE用户空间工具:

    dpkg -l | grep fuse
    

    若未安装,可使用以下命令进行安装:

    sudo apt-get install fuse
    
  2. 从MXMACA 2.31.0版本起,MXMACA SDK包安装过程中会默认将mxvs工具放置在 /opt/maca/bin/ 目录下。

3. 设备信息显示

命令

mxvs devices

命令将列出设备中所有CPU和GPU的信息。

输出结果

_images/image1.png

图 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

输出结果

_images/image2.png

图 4.1 显示PCIe设备信息示例图

5. PCIe验收测试工具

5.1. PCIe实时速率查询

命令

mxvs pcie bandwidth --devices <DEVICE_ID>

命令查询获得系统中指定设备的实时PCIe速率。

命令参数

表 5.1 显卡工作状态显示命令参数表

参数

必填

描述

-d, --devices

测试对象PCIe设备编号(GPU ID),支持单个设备查询或多个设备同时查询。默认选择所有PCIe显卡设备。

-c, --continuous

持续监控速率开关

输出结果

_images/image3.png

图 5.1 实时PCIe速率查询结果示例图

5.2. PCIe单向带宽测试

命令

mxvs pcie benchmark unidirection --src-devices <SRC_DEVICE> --dst-devices <DST_DEVICE>

命令参数

表 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

输出结果

_images/image4.png

图 5.2 单向带宽测试结果示例图

备注

若不同NUMA节点下的设备带宽结果相差较大,且通过 --cpu-cores 指定合适的内核后,依旧是一样结果,则可以尝试执行以下命令清理缓存,避免cache导致的跨NUMA节点内存访问。

echo 3 > /proc/sys/vm/drop_caches

5.3. PCIe双向带宽测试

命令

mxvs pcie benchmark bidirection --devices <DEVICE_1>,<DEVICE_2>

命令参数

表 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

输出结果

_images/image5.png

图 5.3 双向带宽测试结果示例图

备注

若不同NUMA节点下的设备带宽结果相差较大,且通过 --cpu-cores 指定合适的内核后,依旧是一样结果,则可以尝试执行以下命令清理缓存,避免cache导致的跨NUMA节点内存访问。

echo 3 > /proc/sys/vm/drop_caches

5.4. PCIe眼图特性测试

命令

mxvs eye --devices <DEVICE_1> --phy <PHY_ID> --lane <LANE_ID>

命令参数

表 5.4 PCIe眼图特性测试命令参数表

参数

必填

描述

-d, --devices

测试对象PCIe设备编号,支持单个设备测试或多个设备同时测试。默认选择所有PCIe显卡设备。

-p, --phy

物理层编号,范围:0 - 3,默认选择所有物理层。

-l, --lane

差分信号组合编号,范围:0 - 3,默认选择所有差分信号组合。

--bref

仅显示测试结果,不显示MetaX GPU基本信息。

备注

  • 在眼图测试过程中,请勿中断测试(如按Ctrl+C),以免导致异常。

  • 眼图测试结束后,建议重启服务器。

输出结果

_images/image6.png

图 5.4 眼图特性测试结果示例图

6. Memory验收测试工具

6.1. Memory实时带宽查询

命令

mxvs memory bandwidth --devices <DEVICE_ID>

命令参数

表 6.1 Memory实时带宽查询命令参数表

参数

必填

描述

-d, --devices

测试对象PCIe设备编号,支持单个设备查询或多个设备同时查询。默认选择所有PCIe显卡设备。

-c, --continuous

持续监控带宽开关。

输出结果

_images/image7.png

图 6.1 Memory实时带宽查询结果示例图

6.2. Memory带宽测试

命令

mxvs memory benchmark --devices <DEVICE_ID>

命令参数

表 6.2 Memory带宽测试命令参数表

参数

必填

描述

-d, --devices

测试对象PCIe设备编号,支持单个设备测试或多个设备同时测试。默认选择所有PCIe显卡设备。

--bref

仅显示测试结果,不显示MetaX GPU基本信息

--json

将结果以JSON格式输出到文本中,可指定输出的文件名,如 --json result.json

备注

默认选择10GB的基准数据流进行测试。

输出结果

_images/image8.png

图 6.2 Memory带宽测试结果示例图

8. P2P验收测试工具

8.1. P2P带宽测试

命令

mxvs p2p --src-devices <SRC_DEVICE_ID1>, <SRC_DEVICE_ID2> --dst-devices <DST_DEVICE_ID1>, <DST_DEVICE_ID2>

命令参数

表 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

输出结果

_images/image12.png

图 8.1 P2P带宽测试示例图

9. 算力测试工具

命令

mxvs ops --devices <DEVICE_ID> --models <MODEL_NAME>

命令参数

表 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 <DEVICE_ID>

命令参数

表 10.1 XCore压力测试命令参数表

参数

必填

描述

--xcore

XCore压力测试开关。

--xcore-devices

测试对象PCIe设备编号,支持单个设备测试或多个设备同时测试。如果需要指定所有设备,可用all作为参数值,默认选择所有PCIe显卡设备。

--duration

以 “HH:MM”的格式,指定执行压力测试的持续时间,默认为 “00:30”。当进行长时间压力测试时,建议在后台执行,例:nohup mxvs stress --xcore --duration 12:00 &

输出结果

_images/image13.png

图 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 &

输出结果

_images/image14.png

图 10.2 MetaXLink压力测试结果示例图

11. 光模块验收测试工具(仅适用于C500X)

11.1. 单机MetaXLink带宽测试

命令

mxvs om client --src-devices <DEVICE_ID> --dst-devices <DEVICE_ID>

命令参数

表 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

开启结果校验,检查数据一致性。

输出结果

_images/image15.png

图 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。

--aer

开启AER错误监控。

Client命令

mxvs om client --dst-addr <DST_ADDR>--src-devices <DEVICE_ID> --dst-devices <DEVICE_ID> -w <0|1|2>

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文件查看)。

输出结果

_images/image16.png

图 11.2 跨机MetaXLink带宽测试结果示例图

12. 附录

12.1. 术语/缩略语

术语/缩略语

全称

说明

AER

Advanced Error Reporting

一种用于检测和报告PCIe设备中错误的机制

AppImage

一种把应用打包成单一文件的格式

DMA

Direct Memory Access

直接内存访问

FUSE

Filesystem in Userspace

一个面向类Unix计算机操作系统的软件接口

MetaXLink

沐曦GPU D2D接口总线

mxvs

MetaX Validation Suite

沐曦验收测试套件

PCIe

Peripheral Component Interconnect Express

一种高速串行计算机扩展总线标准