带宽测试
测试项功能
带宽测试主要用于测试总线带宽、内存带宽和总耗时。
注意事项
- 为了避免频繁输出日志影响测试结果,测试前确认Host和Device的日志级别设置为ERROR,确认及设置方法如下:
- d2d带宽测试结果通过数据读写总量/消耗时间获取。因为d2d带宽测试和实际训练或推理一样,存在缓存、预取等内在优化,由此计算得到的带宽结果有可能超过标称带宽。
- Atlas 300I Duo 推理卡的测试数据流向为h2d和d2h方式时,受数据传输方式的影响,从芯片的带宽值相比于主芯片偏低,属于正常现象。
- Atlas 200I SoC A1 核心板的测试数据流向为h2d和d2h方式时,由于架构的特殊性,测试结果是从CPU直接拷贝获取的,结果和其他产品形态不一致,属于正常现象。
- Atlas 200T A2 Box16 异构子框在虚拟机场景下,执行两个8p之间的p2p测试时,因为数据传输通道的特殊性,带宽测试偏低属于正常现象。
- 为确保带宽测试结果达到最佳,用户需在裸机上进行测试。带宽测试搬运数据时,受硬件资源复用性影响,比如在拷贝次数(-et)或传输数据大小(-s)较低的情况下,复用性会比较低,进而将可能导致带宽测试结果偏低。
- 为确保带宽测试效果准确性,建议在训练或推理业务开局的时候执行本测试项,因为例如CCAE或npu-exporter组件会调用dcmi接口监测环境状态,会占用一定的带宽,导致带宽测试的结果存在误差。
- 在执行带宽测试前,建议提前在环境上安装fuser软件,以便Ascend DMI对NPU进程进行监测。
支持的场景
带宽测试支持的设备及场景如表1所示。(在下表中,Y表示支持,N表示不支持。)
测试项参数查询
用户可任选以下指令之一查看带宽测试命令的可用参数。
ascend-dmi --bw -h
ascend-dmi --bw --help
命令各参数解释如表2所示。
参数 |
说明 |
约束 |
是否必填 |
---|---|---|---|
[-bw, --bw, --bandwidth] |
使用该参数测试芯片的带宽。支持-bw,但建议使用--bw或--bandwidth。 |
- |
是 |
[-t, --type] |
指测试数据流向的分类。
当使用带宽测试功能时,测试的数据流可以分为以下方向,若不填写数据流方向则默认返回h2d、d2h、d2d三个方向的带宽和总耗时。
|
|
否 |
[-s, --size] |
指传输数据大小并指定测试结果显示方式.
|
|
否 |
[-et, --et, --execute-times] |
指迭代次数,即内存拷贝次数。 取值范围为[1, 1000],若不填写,步长模式下拷贝次数则默认为5,定长模式下拷贝次数则默认为40。 |
Atlas 200I/500 A2推理产品、Atlas 800I A2 推理服务器、Atlas A2 训练系列产品在d2d模式下,不支持使用该参数,拷贝次数默认为1。 |
否 |
[-d, --device] |
指定需要测试带宽的Device ID,Device ID是指昇腾AI处理器的逻辑ID,若不填写Device ID则默认返回Device 0带宽信息。 |
|
否 |
[-ds, --ds, --device-src] |
指定p2p测试的源头Device的ID号。必须与[-dd, --dd, --device-dst]参数成对指定;若与[-dd, --dd, --device-dst]参数同时不指定时,测试全量的昇腾NPU芯片。 |
Atlas 200/300/500 推理产品、Atlas 推理系列产品、Atlas 800I A2 推理服务器、Atlas 200I/500 A2推理产品、不支持使用该参数。 |
否 |
[-dd, --dd, --device-dst] |
指定p2p测试的目标Device的ID号。必须与[-ds, --ds, --device-src]参数成对指定;若与[-ds, --ds, --device-src]参数同时不指定时,测试全量的昇腾NPU芯片。 |
Atlas 200/300/500 推理产品、Atlas 推理系列产品、Atlas 800I A2 推理服务器、Atlas 200I/500 A2推理产品、不支持使用该参数。 |
否 |
[-fmt, --fmt, --format] |
指定输出格式,可以为normal或json。若未指定则默认为normal。 |
- |
否 |
[-q, --quiet] |
指定该参数时,将不再进行防呆提示,用户将默认允许该操作。 |
若不指定该参数,将进行防呆提示,用户需要输入Y或N(y或n)确认是否进行测试。 |
否 |
注:
|
- --ds与--dd参数需要配合使用,单独使用是错误用法,使用时参数后的数值不能相同。
- ascend-dmi --bw后使用-t,-s等多个二级参数时,可任意指定这些参数的排列顺序,不影响命令结果输出。例如:ascend-dmi --bw -t h2d -d 0 --et 100和ascend-dmi --bw -t h2d --et 100 -d 0输出结果相同。
- 由于NPU的工作模式会影响p2p带宽测试的计算方式,若出现p2p带宽测试结果与标称带宽相差过大,建议用户使用SMP模式。操作如下:用户登录IBMC,执行如下命令设置为SMP模式,其中1为SMP,0为AMP。
- 使用-s和-et参数指定的数据搬运量和数据拷贝的次数较小时,可能无法获取最佳性能,如需稳定测得最佳性能,建议-s指定为512M,-et指定为>10。
使用实例
p2p测试命令截图取自训练服务器。
- 以不带参数为例(不带参数则默认查询在Device 0,以h2d、d2h、d2d三个数据流向和步长模式显示的带宽耗时信息)。
- 以测试数据从Host侧传输到Device 0,迭代100次的带宽与总耗时为例。
- 以测试数据从Device侧传输到同一Device侧的带宽与总耗时为例。
若返回如图3、图4、图5所示信息,表示工具运行正常,图中参数介绍如表3所示。
ascend-dmi --bw -d 0
- 测试指定源头Device到目标Device的传输速率和总耗时。
- 以测试数据从源头Device 0传输到目标Device 1的p2p测试为例。
ascend-dmi --bw -t p2p --ds 0 --dd 1 -s 6 -q
若返回如图6所示信息,表示工具运行正常,图中参数介绍如表3所示。
表3 显示界面参数介绍 参数
说明
Host to Device Test
带宽数据流方向。有以下显示可能:- Host to Device Test
- Device to Host Test
- Device to Device Test
- Unidirectional Peer to Peer Test
- Bidirectional Peer to Peer Test
Device X : Ascend XXX
Device X为当前测试的设备ID,Ascend XXX为处理器类型。
0表示源头设备,1表示目标设备。
ID
0→1表示测试Device 0到Device 1的单向P2P带宽。
0↔1表示测试Device 0和Device 1的双向p2p带宽。
Size(Bytes)
传输数据大小,单位为字节。
Execute Times
迭代次数
Bandwidth(GB/s)
芯片的带宽
Elapsed Time(us)
总执行时长
- 不指定源头Device和目标Device的p2p样例。
若返回如图7所示信息,表示工具运行正常。
- 以测试数据从源头Device 0传输到目标Device 1的p2p测试为例。
FAQ
- 带宽测试时间较长,测试结果未达到预期时可参考带宽测试时间较长,测试结果低于预期。
- Atlas A2 训练系列产品的h2d带宽测试结果未达到预期时,建议在host侧修改Max Payload Size值为512B,具体操作可参考BIOS上设置Payload。
- Atlas 200T A2 Box16 异构子框执行p2p测试结果未达到预期时,可参考Atlas 200T A2 Box16 异构子框执行p2p带宽测试结果低于预期。