下载
中文
注册

DCMI_MAIN_CMD_TS命令说明

函数原型

int dcmi_get_device_info(int card_id, int device_id, enum dcmi_main_cmd main_cmd, unsigned int sub_cmd, void *buf, unsigned int *size)

功能说明

获取系统中TS相关信息。

参数说明

参数名称

输入/输出

类型

描述

card_id

输入

int

指定NPU管理单元的ID,当前实际支持的ID通过dcmi_get_card_list接口获取。

device_id

输入

int

指定设备编号,通过dcmi_get_device_id_in_card接口获取。取值范围如下:

NPU芯片:[0, device_id_max-1]。

main_cmd

输入

enum dcmi_main_cmd

DCMI_MAIN_CMD_TS

sub_cmd

输入

unsigned int

typedef enum {
// 获取 AICORE 的单核利用率,正常值范围0-100
DCMI_TS_SUB_CMD_AICORE_UTILIZATION_RATE = 0,
// 获取 VECTOR CORE 的单核利用率/获取AICORE单核中Vector单元利用率,正常值范围0-100    DCMI_TS_SUB_CMD_VECTORCORE_UTILIZATION_RATE,
// 获取FFTS或者FFTS+的类型,0表示FFTS,1表示FFTS+
DCMI_TS_SUB_CMD_FFTS_TYPE,
// 设置硬件屏蔽AICORE ERR的掩码  DCMI_TS_SUB_CMD_SET_FAULT_MASK,
// 获取硬件屏蔽AICORE ERR的掩码  DCMI_TS_SUB_CMD_GET_FAULT_MASK,
DCMI_TS_SUB_CMD_MAX,
} DCMI_TS_SUB_CMD;

不支持DCMI_TS_SUB_CMD_SET_FAULT_MASK、DCMI_TS_SUB_CMD_GET_FAULT_MASK。

说明:

开启profiling时,查询单核利用率结果为0xEF。

buf

输出

void *

用于接收设备信息的返回值。

size

输入/输出

unsigned int *

buf数组的输入/输出长度。

返回值

类型

描述

int

处理结果:

  • 成功:返回0。
  • 失败:返回码请参见返回码

异常处理

无。

约束说明

查询Vector Core的单核利用率时,buf至少为50字节内存空间,查询AI Core的单核利用率时,buf至少为25字节空间。

表1 sub_cmd对应的buf格式

sub_cmd

buf对应的数据类型

size

DCMI_TS_SUB_CMD_AICORE_UTILIZATION_RATE、DCMI_TS_SUB_CMD_VECTORCORE_UTILIZATION_RATE

查询Vector Core的单核利用率时, buf至少为50字节内存空间,查询AI Core的单核利用率时,buf至少为25字节空间。

异常值:

0xEE:表示对应的core损坏;

0xEF:无效值;

出参时每个字节表示一个核的利用率,正常范围0-100

  • 作为入参时表示 buf 的大小。
  • 作为出参时表示 buf 内填充的有效值的个数。

DCMI_TS_SUB_CMD_FFTS_TYPE

unsigned int

unsigned int

表2 部署场景

Linux物理机

Linux物理机容器

root用户

运行用户组(非root用户)

root用户

Y

Y

Y

调用示例


int ret;
int card_id = 0;
int dev_id = 0;
void *buf = NULL;
int buf_size = 10;
buf = calloc(buf_size, sizeof(char));
if (buf == NULL) {
printf("calloc buf failed.\n");
return -1;
}
ret = dcmi_get_device_info(card_id,dev_id,DCMI_MAIN_CMD_TS, DCMI_TS_SUB_CMD_AICORE_UTILIZATION_RATE, buf, &buf_size);
if (ret != 0) {
printf("dcmi_get_device_info failed, ret = %d.\n", ret);
return -1;
}
return 0;