昇腾社区首页
中文
注册

DCMI_MAIN_CMD_LP命令说明

函数原型

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)

功能说明

获取LP相关信息。

参数说明

参数名称

输入/输出

类型

描述

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_LP

sub_cmd

输入

unsigned int

/* DCMI sub commond for Low power */

typedef enum {
      DCMI_LP_SUB_CMD_GET_WORK_TOPS = 8,              // 获取当前工作档位
    DCMI_LP_SUB_CMD_MAX,
} DCMI_LP_SUB_CMD;

buf

输出

void *

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

size

输入/输出

unsigned int *

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

返回值

类型

描述

int

处理结果:

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

异常处理

无。

约束说明

表1 sub_cmd对应的buf格式

sub_cmd

buf对应的数据类型

size

参数说明

DCMI_LP_SUB_CMD_GET_WORK_TOPS

DCMI_LP_CUR_TOPS_STRU

sizeof(DCMI_LP_CUR_TOPS_STRU)

typedef struct dcmi_lp_cur_tops_stru {
unsigned int work_tops;
unsigned int tops_nums;
} DCMI_LP_CUR_TOPS_STRU;

work_tops为当前工作档位。

tops_nums代表工作档位的总数。

20T的Atlas 200I A2 加速模块分为四档,8T的Atlas 200I A2 加速模块分为两档,具体算力档位如下:

20T:

  • 0:20T_1.6GHz
  • 1:8T_1.0GHz
  • 2:16T_1.6GHz
  • 3:8T_1.6GHz

8T:

  • 0:8T_1.0GHz
  • 1:4T_1.0GHz
表2 部署场景

Linux物理机

Linux物理机容器

root用户

运行用户组(非root用户)

root用户

Y

Y

Y

调用示例

… 
int ret = 0;
int card_id = 0;
int device_id = 0;
int buf = 0;
unsigned int size = sizeof(int);
unsigned int sub_cmd = 0;
ret = dcmi_get_device_info(card_id, device_id, DCMI_MAIN_CMD_LP, sub_cmd, &buf, &size);
if (ret != 0){
    //todo:记录日志
    return ret;
}
…