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。

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. 术语/缩略语

术语/缩略语

全称

说明

AppImage

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

DMA

Direct Memory Access

直接内存访问

FUSE

Filesystem in Userspace

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

MetaXLink

沐曦GPU D2D接口总线

mxvs

MetaX Validation Suite

沐曦验收测试套件

PCIe

Peripheral Component Interconnect Express

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