下载
中文
注册

DCMI_MAIN_CMD_LP命令说明

函数原型

int dcmi_set_device_info(int card_id, int device_id, enum dcmi_main_cmd main_cmd, unsigned int sub_cmd, const void *buf, unsigned int buf_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_SET_WORK_TOPS = 7,       // 设置工作档位
} DCMI_LP_SUB_CMD;

buf

输入

const void *

详细见本节约束说明。

buf_size

输入

unsigned int

buf数组的长度。

返回值

类型

描述

int

处理结果:

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

异常处理

无。

约束说明

表1 sub_cmd对应的buf格式

sub_cmd

buf对应的数据类型

size

参数说明

DCMI_LP_SUB_CMD_SET_WORK_TOPS

DCMI_LP_WORK_TOPS_STRU

sizeof(DCMI_LP_WORK_TOPS_STRU)

#define DCMI_LP_WORK_TOPS_RESERVE 32
typedef struct dcmi_lp_work_tops_stru {
unsigned int work_tops;
unsigned int is_in_flash;
unsigned char reserve[DCMI_LP_WORK_TOPS_RESERVE];
} DCMI_LP_WORK_TOPS_STRU;

work_tops的值来源于DCMI_LP_SUB_CMD_TOPS_DETAILS查询结果中的档位列表。

is_in_flash设置非0时,会写入到flash;否则不会写入flash中。

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

N

N

调用示例

…
int ret;
int card_id = 0;
int device_id = 0;
DCMI_MAIN_CMD main_cmd = DCMI_MAIN_CMD_LP;
unsigned int sub_cmd = DCMI_LP_SUB_CMD_SET_WORK_TOPS;
DCMI_LP_WORK_TOPS_STRU set_works_tops_lv = {0};
set_works_tops_lv.work_tops = 1;
set_works_tops_lv.is_in_flash = 0;
unsigned int size = sizeof(DCMI_LP_WORK_TOPS_STRU);
ret = dcmi_set_device_info(card_id, device_id, main_cmd, sub_cmd, (void *)&set_works_tops_lv, size);
if (ret) {
// todo
}
// todo