1. 希姆计算stc-smi使用说明

1.1. 版本历史

文档版本 对应产品版本 作者 日期 描述
V1.5.0 HPE V1.7.0 希姆计算 2024-01-15 新增超温关卡功能。新增在升级固件时对固件文件的数字签名进行检查。
V1.4.4 HPE V1.6.2 希姆计算 2023-07-24 验证文档内容。
V1.4.3 HPE V1.6.0 希姆计算 2023-04-07 验证文档内容。
V1.4.2 HPE V1.5.0 希姆计算 2022-11-30 验证文档内容。
V1.4.1 HPE V1.4.0 希姆计算 2022-08-29 验证文档内容。编辑优化。
V1.4.0 HPE V1.3.0 希姆计算 2022-07-07 验证文档内容。
V1.3.0 HPE V1.2.2 希姆计算 2022-06-23 增加显示芯片利用率和SN的位置。
V1.2.0 HPE V1.2.1 希姆计算 2022-06-02 整篇编辑优化。对齐最新的help message。
V1.1.1 HPE V1.2.0 希姆计算 2022-04-11 验证文档内容。
V1.1.0 Unknown 希姆计算 2021-11-15 增加正常工作显示值。
V1.0.0 Unknown 希姆计算 2021-11-01 初始版本。

1.2. 概述

希姆计算的异构编程环境为开发、编译、运行异构程序提供了完整的工具链。stc-smi(Stream Computing System Management Interface)用于管理和监视希姆计算的NPU设备,包括查看设备信息、资源使用情况等。

说明:希姆计算软硬件产品相关的基本概念,请参见希姆计算基本概念

1.3. 前提条件

在主机上部署希姆计算异构环境。具体的步骤,请参见希姆计算异构环境安装指南

安装HPE后,stc-smi的二进制文件位于/usr/local/hpe/bin目录中。

1.4. 命令说明

执行stc-smi --help获取stc-smi命令的使用方法:

$ stc-smi --help
Usage: stc-smi [OPTIONS]
  -h, --help           Print this help, and exit.
  <no arguments>       Display a summary of NPU devices connected to the system.
  --version            Print version number.
  -l, --list           Display NPU devices list.

DISPLAY OPTIONS:
  -q, --query          Display all info of all the NPU devices, the following options can be selected.
    [optional]
    -i, --id=          Specify the NPU device to be operated.
    -c, --cluster=     Specify cluster number.
    -p, --pci          Display NPU device pci info.
    --task             Display running tasks info.

  --query-npu=         Query information of the NPU devices, select the option from query list.
    [query list]
    index              Zero based index of the NPU.
    name               The official product name of the NPU.
    serial             This number matches the serial number physically printed on each board. It is a globally unique immutable alphanumeric value.
    power.draw         The last measured power draw for the entire board, in watts.
    temperature.npu    Core NPU temperature. in degrees C.
    utilization.npu    Percent of time over the past sample period during which one or more kernels was executing on the NPU.The sample period is 1 second.
    memory.total       Total installed NPU memory.
    memory.used        Total memory allocated by active contexts.
    [mandatory]
    --format=          Comma separated list of format options:
                       csv - comma separated values (MANDATORY).

  -r, --reset          Reset specified NPU device.
    -i, --id=          Specify the NPU device to be operated (MANDATORY).

  -m, --monitor        Set monitor related parameters.
    -i, --id=          Specify the NPU device to be operated (MANDATORY).
    --enable           Enable the temperature and voltage monitor.
    --disable          Disable the temperature and voltage monitor.
    --temperature=         Temperature threshold for alarm.
    --shutdown-threshold=  Temperature threshold for shutdown.
    --base=            Lower limit of voltage alarm value (Must set with -o, --offset).
    -o, --offset=      Voltage alarm value interval value (Must set with -b, --base).

  -S, --save           Save local config as default config.
    -i, --id=          Specify the NPU device to be operated (MANDATORY).

  -u, --upgrade=       Upgrade specified NPU ctrl firmware of specified device. This operation requires root rights.
    -i, --id=          Specify the NPU device to be operated (MANDATORY).

  --mcu-upgrade=       Upgrade specified MCU firmware of specified device. This operation requires root rights.
    -i, --id=          Specify the NPU device to be operated (MANDATORY).

stc-smi命令支持以下选项:

  • 获取信息的类型

选项 描述
-h, --help 显示stc-smi命令的帮助信息并退出,包括支持的选项以及描述。
显示连接到系统的NPU设备的摘要信息,包括设备索引、频率、功耗、内存使用、进程等。
--version 显示stc-smi的版本信息。
-l, --list 显示NPU设备列表。
  • 显示信息的方式

选项 描述
-q, --query 显示NPU设备的所有信息,可以与以下选项联合使用:
- -i, --id=:指定要查看的NPU设备,后跟NPU设备ID。例如,stc-smi -q -i 0查看NPU设备0。
- -c, --cluster=:指定要查看的NPC Cluster,后跟NPC Cluster ID。例如,stc-smi -q -c 0查看所有NPU设备的NPC Cluster 0。
- -p, --pci:显示NPU设备的PCI总线相关信息,包括Bus ID、板卡标识符、传输速率等。例如,stc-smi -q -i 0 -p查看NPU设备0的PCI总线相关信息。
- --task:显示任务信息,例如stc-smi -q -i 0 -c 0 --task查看NPU设备0的NPC Cluster 0上的任务。
--query-npu= 查询NPU设备的指定信息,需要同时指定信息项(--query-npu=)和显示格式(--format=)。如果希望查询多项信息,以英文逗号分隔即可,例如stc-smi --query-npu=index,name --format=csv查询NPU设备的索引和产品名称。 支持查询的信息项如下:
- index:NPU设备的索引,从0开始。
- name:NPU的产品名称。
- serial:全球唯一的不可变的字母数字编号,与实际印刷在每块板上的序列号相匹配。
- power.draw:整个板卡的功耗,单位为W。
- temperature.npu:NPU核心的温度,单位为℃。
- utilization.npu:在上个采样时间(1秒)内,NPU上执行核函数所占采样时间的百分比。
- memory.total:NPU全局内存的总大小。
- memory.used:运行任务的上下文占用的全局内存大小,包括软件栈占用的固定内存、运行代码占用的内存等。
支持的显示格式如下:
- csv:逗号分隔格式。
-r, --reset 重置指定的NPU设备,可以与以下选项联合使用:
- -i, --id=:指定要重置的NPU设备。
-m, --monitor 设置监视器相关参数,可以与以下选项联合使用:
-i, --id=:指定要监控的NPU设备。
--enable:开启温度和电压监视器。
--disable:关闭温度和电压监视器。
--temperature=:温度告警阈值。
--shutdown-threshold=:关卡温度阈值。
--base=:电压报警值下限(必须用配合-o,--offset设置)。
-o, --offset=:电压报警值间隔值(必须用配合-b,--base设置)。
-S, --save 保存当前监视器配置为默认配置。可以与以下选项联合使用:
-i, --id=:指定要保存配置的NPU设备。
-u, --upgrade 升级指定设备的NPU ctrl firmware固件,需要有root权限。要求与以下选项联合使用:
-i, --id=:指定要升级的NPU设备。
--mcu-upgrade 升级指定设备的MCU固件,需要有root权限。要求与以下选项联合使用:
-i, --id=:指定要升级的NPU设备。

1.5. 命令示例

本章节以在HPE V1.7.0中stc-smi命令为例演示执行效果。

1.5.1. 显示摘要信息

  1. 运行示例目标程序。

    $ cat hello_world.hc
    #include <npurt.h>
    #include <hpe.h>
    #include <unistd.h>
    
    #define NCORE 8
    
    int *global_data;
    
    __global__ void hello(void) {
        while (1) {
            printf("hello world from core %d/%d.\n", CoreID, CoreNum);
        }
    }
    
    int main(void) {
        stcMalloc((void **)&global_data, 1024 * 1024);
        hello<<<NCORE>>>();
        sleep(10);
        stcFree(global_data);
        stcDeviceSynchronize();
        return 0;
    }
    $ stcc --rtlib=compiler-rt hello_world.hc -o hello_world
    $ ./hello_world
    
  2. 查看摘要信息。

    $ stc-smi
    +------------------------------------------------------------------------------+
    |    STC-SMI: 1.7.0                            Driver Version: 1.7.0           |
    +------------------------------------------------------------------------------+
    |  NPU        Name     Frequency |         Bus-Id |                   NPU-Util |
    |  Sta        Temp         Power |   ClusterCount |        Memory Used / Total |
    +==============================================================================+
    |    0     STCP920         1000M |   0000:03:00.0 |                        0 % |
    |   on         29C    30W / 160W |              4 |           624.00M / 16.00G |
    +------------------------------------------------------------------------------+
    
    +------------------------------------------------------------------------------+
    | Processes:                                                                   |
    |  NPU  CLUSTER          Pid                          ProcessName   MemoryUsed |
    +==============================================================================+
    | There is no process.                                                         |
    +------------------------------------------------------------------------------+
    

    各项信息的描述如下:

项目 示例值 描述
STC-SMI 1.7.0 stc-smi工具的版本信息。
Driver Version 1.7.0 NPU Driver的版本信息。
NPU 0 NPU设备的索引。
Name STCP920 NPU设备的产品名称。
Frequency 1000M NPU设备的频率信息。
Sta N/A NPU设备板卡状态。
Temp 36.6℃ NPU设备核心的温度信息,合理范围为25℃~85℃。
Power 33.7W / 160W NPU设备的功耗信息,包括实时功耗/额定功耗。
Bus-Id 0:65:00.0 NPU设备所使用PCI总线的ID。
NPU-Util 25 % NPU设备的使用率,即使用的NPC占NPU设备内所有NPC的比例。
ClusterCount 4 NPU设备内NPC Cluster的数量。
Memory Used /Total 624.05M /16.00G NPU设备的内存信息,包括已用内存/总内存的大小。
NPU 0 执行中任务所使用NPU设备的ID。
CLUSTER 0 执行中任务所使用NPC Cluster的ID。
Pid 583900 执行中任务的系统进程ID。
processName hello_world 执行中任务的系统进程名称。
MemoryUsed 45.62K 执行中任务使用的内存大小。

示例摘要信息中,NPU设备的Memory Used为624.05M,其中624M是软件栈固定使用的内存大小,剩下的则是运行目标程序使用的内存,即Processes中的MemoryUsed。

1.5.2. 显示工具版本

$ stc-smi --version
stc-smi version: 1.7.0-g42a0300

示例结果显示版本号为1.7.0-g42a0300。

1.5.3. 显示设备列表

$ stc-smi --list
NPU: 0
        STCP920         BUS-ID: 0:65:00.0 (00PCK08700050605)

示例结果显示检测到一个NPU设备,产品名称为STCP920,所使用PCI总线的ID为0:65:00.0,设备序列号为00PCK08700050605。

1.5.4. 显示指定设备的信息

您可以根据需要查看指定NPU设备的信息:

  • 显示设备的所有信息。

    $ stc-smi -q
    NPU: 0
            Product name: STCP920
            Product brand: STREAMCOMPUTING
            Sn: 01PSF60000170610
            Chip count: 1
            Temperature:   29C
            AlertTemperature:   90C
            ShutdownTemperature:   90C
            Status: on
            Power:   30W
            Cluster count: 4
            Frequency: 1000M
            Bus: 0000:03:00.0
            Vendor: 23e2 Device: 0100
            Current link speed: 16.0 GT/s PCIe
            Max link speed: 16.0 GT/s PCIe
            Current link width: 16
            Max link width: 16
            Write bytes: 0B
            Read bytes: 0B
            HPE version: 1.7.0
            Driver: 1.7.0
            Chip version: 20200102
            MCU firmware: 1.0.8
            NPU ctrl firmware: 1.3.4
                    Cluster 0:
                    Frequency: 1000M        Core count: 8   DMA count: 2    Util: 0 %       Status: WORK    Memory Used / Total: 156.00M / 4.00G
                    Npc status:      IDLE    IDLE    IDLE    IDLE    IDLE    IDLE    IDLE    IDLE
                    Cluster 1:
                    Frequency: 1000M        Core count: 8   DMA count: 2    Util: 0 %       Status: WORK    Memory Used / Total: 156.00M / 4.00G
                    Npc status:      IDLE    IDLE    IDLE    IDLE    IDLE    IDLE    IDLE    IDLE
                    Cluster 2:
                    Frequency: 1000M        Core count: 8   DMA count: 2    Util: 0 %       Status: WORK    Memory Used / Total: 156.00M / 4.00G
                    Npc status:      IDLE    IDLE    IDLE    IDLE    IDLE    IDLE    IDLE    IDLE
                    Cluster 3:
                    Frequency: 1000M        Core count: 8   DMA count: 2    Util: 0 %       Status: WORK    Memory Used / Total: 156.00M / 4.00G
                    Npc status:      IDLE    IDLE    IDLE    IDLE    IDLE    IDLE    IDLE    IDLE
    
  • 显示NPC Cluster 0的信息。

    $ stc-smi -q -i 0 -c 0
    NPU: 0
                    Cluster 0:
                    Frequency: 1000M        Core count: 8   DMA count: 2    Util: 100 %     Status: WORK    Memory Used/Total: 156.05M/4.00G
                    Npc status:      RUNNING         RUNNING         RUNNING         RUNNING         RUNNING         RUNNING   RUNNING         RUNNING
                        Cluster: 0  Process: hello_world    Pid: 584348     Global mem used: 45.62K
    

    各项的含义如下:

项目 示例值 描述
Product Name STCP920 NPU设备的产品名称。
Product Brand STREAMCOMPUTING NPU设备的品牌名称。
Sn 01PSF60000170610 NPU设备的SN。每个NPU设备的SN是唯一的,不会重复。
Chip count 1 NPU设备的数量。
Temperature 29C NPU设备核心的温度信息,合理范围为25℃~85℃。
AlertTemperature 90C NPU设备告警温度。
ShutdownTemperature 90C NPU设备温度。
Status on NPU设备状态。
Power 30W NPU设备的实时功耗,额定功耗为160W。
Cluster count 4 NPU设备内NPC Cluster的数量。
Frequency 1000M NPU设备的频率信息。
Bus 0000:03:00.0 NPU设备所使用PCI总线的ID。
Vendor 23e2 PCIe厂商的ID。
Current link speed 16.0 GT/s PCIe PCIe设备当前的连接速度,视主机的PCIe插槽而定,可能值包括16GT/S(GEN4)、8GT/S(GEN3)、5GT/S (GEN2)。
Max link speed 16.0 GT/s PCIe PCIe设备支持的最高连接速度,视主机的PCIe插槽而定,可能值包括16GT/S(GEN4)、8GT/S(GEN3)、5GT/S (GEN2)。
Current link width 16 PCIe设备当前连接的通道数。
Max link width 16 PCIe设备支持连接的最大通道数。
Write bytes 0B PCIe设备的写数据大小统计,数值动态变化。
Read bytes 0B PCIe设备的读数据大小统计,数值动态变化。
HPE version 1.7.0 当前主机安装HPE异构编程环境的版本信息。
Driver 1.7.0 NPU Driver的版本信息。
Chip version 20200102 STCP920芯片的产品版本信息。
MCU firmware 1.0.8 MCU固件的版本信息。
NPU ctrl firmware 1.3.4 NPU ctrl固件的版本信息。
Cluster 0 NPC Cluster的ID。
Frequency 1000M NPC Cluster的频率。
Core count 8 当前NPC Cluster中NPC的数量。
DMA count 2 当前NPC Cluster中DMA通道的数量。
Util 0 % 当前NPC Cluster的使用率,即使用的NPC占当前NPC Cluster内所有NPC的比例。
Status WORK 当前NPC Cluster的状态信息,可能值: - WORK:正常工作状态。 - DEAD:错误状态。
Memory Used/Total 156.00M/4.00G 当前NPC Cluster的内存信息,包括已用内存/总内存的大小。
Npc status IDLE 当前NPC Cluster中各个NPC的状态信息,可能值:
- IDLE:闲置中,未执行任务。
- RUNNING:正在执行任务。
- STOP:停止使用NPC。例如终止运行中的任务时,会先让NPC进入STOP状态,然后再复位设备进入IDLE状态。
- NPC-EXCEPTION:软件错误导致NPC异常。
- UNKNOWN:未知错误导致NPC异常。

1.5.5. 查询设备的指定信息

您可以根据需要查看NPU设备的指定信息:

$ stc-smi --query-npu=index,utilization.npu,memory.used --format=csv
index, utilization.npu [%], memory.used [MiB]
0, 25 %, 625 MiB

$ stc-smi --query-npu=index,temperature.npu,power.draw --format=csv      
index, temperature.npu, power.draw [W]
0, 36, 33.55 W

说明:--query-npu支持指定的信息项,请参见命令说明章节。

按照逗号分隔格式显示查询的信息。各项的含义如下:

项目 示例值 描述
index 0 NPU设备的索引。
utilization.npu 25 % NPU设备的利用率,即使用的NPC占NPU设备内所有NPC的比例。
memory.used 625 MiB NPU设备已使用内存的大小。
temperature.npu 36 NPU设备核心的温度信息。
power.draw 33.55 W NPU设备的实时功耗。

1.5.6. 设置关卡温度阈值

为防止板卡长期在超过设计的最高温度下运行,从而影响板卡的使用寿命。您可以设置关卡温度阈值。当板卡的温度达到了关卡温度阈值时,将会清理当前板卡所有任务并设置为关卡状态。

  1. 温度监控功能默认不开启,需要先开启监控功能:

    #开启监控功能
    $ stc-smi -m --enable -i 0
    
  2. 设置NPU设备0的关卡温度阈值为90度:

    #设置
    $ stc-smi -m --shutdown-threshold=90 -i 0
    

如果板卡因超过温度阈值自动关卡,在重新使用板卡时您需要手动开卡才能解除关卡状态:

$ stc-smi --startup -i 0 

1.5.7. 复位设备

在NPU设备状态异常时,您可以尝试复位设备。复位NPU设备0的命令示例如下:

警告:执行设备复位命令前,请确认设备上没有正在执行的任务。复位是针对整个NPU设备的,而非单个NPC Cluster。

$ stc-smi -r -i 0