跳到主要内容
版本:1.9.0

NPU-Viewer使用指南

NPU-Viewer概述

NPU-Viewer用于验证NPU设备的功能和性能,支持PCIe带宽、DDR带宽、NPU算力以及压力测试。

使用NPU-Viewer测试NPU设备

前提条件

  • 主机配置满足以下要求:

    • Intel/AMD的64位CPU。

    • 系统内存大小不低于2GiB。

    • NPU ctrl firmware版本为V10.3.6。

    • MCU firmware版本为V10.0.11。

    • HPE版本为V1.9.1。

  • 获取NPU-Viewer工具包。

  • 推荐以root用户登录主机,使用NPU-Viewer时需要访问一些系统目录。

  • 主机已安装依赖包,以Ubuntu为例:

    $ sudo apt-get install bc vim-common numactl 
  • 主机已安装编译C/C++程序所需的工具包,以Ubuntu为例:

    $ sudo apt-get install make
    $ sudo apt-get install build-essential

使用流程

  1. 停止运行任何依赖HPE驱动的程序。在使用NPU-Viewer之前,建议NPU设备处于初始状态。执行lsmod | grep stc命令查看正在依赖HPE驱动的程序。示例如下,stc模块正在被48个其他模块依赖。

    $ lsmod | grep stc
    stc 512000 48
  2. 如果存在依赖HPE驱动的程序,可以执行stc-smi命令查看程序的Pid,然后视情况等待程序执行完成或者自行终止程序。

  3. 解压NPU-Viewer工具包并进入工具目录。以工具包名称为npu-viewer_STC-v1.0.2-*_x86_64.tar.gz为例,工具目录中包含了若干目录和文件。

    $ tar -zxvf npu-viewer_STC-v1.0.2-*_x86_64.tar.gz
    $ ls npu-viewer_STC
    build_info cases driver pub_key README.md script stress tools viewer_start
  4. 执行测试。NPU-Viewer为PCIe带宽、DDR带宽、NPU算力、压力测试提供了测试用例,您可以通过命令方便地选择测试用例,详细说明,请参见命令说明命令示例章节。测试完成后,会自动生成log和result目录并存储日志和结果文件。

    注意:部分测试可能耗时较长,例如压力测试耗时约5分钟。在测试过程中请不要通过Ctrl+C等方式强制退出,否则会导致系统不稳定。

  5. 完成测试后,切换回HPE驱动,恢复NPU设备至正常工作状态。

    $ sudo rmmod stc
    $ sudo modprobe stc

文件说明

NPU-Viewer工具目录中包含了若干目录和文件,建议您关注的目录和文件如下:

名称类型描述
log目录在执行测试时自动生成的目录,保存测试过程中产生的日志。
result目录保存测试结果文件,例如DDR压力测试过程中输出的bin文件。
README.md文件NPU-Viewer工具的使用说明。

命令说明

了解NPU-Viewer命令的使用方法:

$ cd npu-viewer_STC/
$ ./viewer_start -h
------------------------------------------------------------
NPU viewer - A capability viewer for NPU product.
------------------------------------------------------------

Option list:
-h, --help: Print usage
-v, --version: NPU viewer version info
-l, --list: Show list of currently detected NPUs on the host.
-t, --test: Specify the test to be run [1-4].
-i, --index: Specify the NPU ID for the test
--loops: Provide number of loops for specified test
--set_freq: Specify the frequence NPU running at (1200 1100 1000 900 800 624,default 1000)Mhz

------------------------------------------------
Test list:
[1] PCIe bandwidth test
[2] DDR bandwidth test
[3] Computing power (TOPS) test
[4] Computing stress test

NPU-Viewer命令支持以下选项:

选项描述
-h, --help查看NPU-Viewer支持的选项和测试集。
-v, --version查看NPU-Viewer的版本信息。
-l, --list查看主机中检测到的NPU设备。
-t, --test通过编号指定测试集,取值范围为1~4。
-i, --index在指定NPU上执行测试。如果未指定NPU,PCIe带宽测试、DDR带宽测试、NPU算力测试会串行测试每个NPU,压力测试则并行测试所有NPU。
--loops指定循环测试的次数,默认值为1。
--set_freq设置测试时的NPU核心频率,仅在NPU算力测试时生效。

NPU-Viewer支持以下测试集:

测试集编号测试集名称描述
1PCIe bandwidth testPCIe带宽测试,通过PCIe DMA通道在主机端内存和设备端内存之间传输数据,根据传输的最大数据量和传输时间计算出PCIe的带宽。
2DDR bandwidth testDDR带宽测试,通过NPU内部的sysDMA通道在设备端DDR与LLB之间传输数据,根据传输的最大数据量和传输时间(基于clock数)计算出DDR的带宽。
3Computing power (TOPS) testNPU算力测试,运行指定的MAC运算,根据运算消耗的时间(基于clock数)评估NPU的算力。
4Computing stress test压力测试,对NPU设备进行压力测试并输出NPU设备满载运行时的相关信息。压力测试单轮耗时约5分钟,日志文件存放在log/npu-stress下。

命令示例

查看NPU设备

查看主机中检测到的NPU设备,回显内容和驱动类型有关,以STCP920为例:

$ ./viewer_start --list
NPU: 0
STCP920 BUS-ID: 0:1b:00.0 (01PVK389K0030806)

示例为检测到1个NPU设备,产品类型为STCP920。

PCIe带宽测试

在NPU 0上执行PCIe带宽测试:

$ ./viewer_start --test 1 --index 0

DDR带宽测试

在NPU 0上执行DDR带宽测试:

$ ./viewer_start --test 2 --index 0

NPU算力测试

在NPU 0上执行NPU算力测试:

$ ./viewer_start --test 3 --index 0

压力测试

在NPU 0上执行压力测试:

说明:压力测试回显中会列出所有卡,其中NPU 0的利用率(NPU-Util)达到100%进行了压力测试。

$ ./viewer_start --test 4 --index 0

循环测试

在NPU 1上循环执行5次DDR带宽测试:

$ ./viewer_start --test 2 --index 1 --loops 5