---
title: aclmdlConfigAttr
description: "```"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendgraphapi/aclcppdevg_03_1375.html
sourcePath: /source/zh/canncommercial/900/API/ascendgraphapi/aclcppdevg_03_1375.html
indexId: 12d6c4a3cdd475665417b226777e895b833c68dc9d85c6cbe8c83b044434987f72
---
# aclmdlConfigAttr

#### 定义

```
typedef enum {
    ACL_MDL_PRIORITY_INT32 = 0,    
    ACL_MDL_LOAD_TYPE_SIZET,       
    ACL_MDL_PATH_PTR,              
    ACL_MDL_MEM_ADDR_PTR,          
    ACL_MDL_MEM_SIZET,             
    ACL_MDL_WEIGHT_ADDR_PTR,        
    ACL_MDL_WEIGHT_SIZET,          
    ACL_MDL_WORKSPACE_ADDR_PTR,     
    ACL_MDL_WORKSPACE_SIZET,        
    ACL_MDL_INPUTQ_NUM_SIZET,      
    ACL_MDL_INPUTQ_ADDR_PTR,        
    ACL_MDL_OUTPUTQ_NUM_SIZET,     
    ACL_MDL_OUTPUTQ_ADDR_PTR,      
    ACL_MDL_WORKSPACE_MEM_OPTIMIZE,
    ACL_MDL_WEIGHT_PATH_PTR,
    ACL_MDL_MODEL_DESC_PTR, 
    ACL_MDL_MODEL_DESC_SIZET,
    ACL_MDL_KERNEL_PTR, 
    ACL_MDL_KERNEL_SIZET,
    ACL_MDL_KERNEL_ARGS_PTR, 
    ACL_MDL_KERNEL_ARGS_SIZET,
    ACL_MDL_STATIC_TASK_PTR, 
    ACL_MDL_STATIC_TASK_SIZET,
    ACL_MDL_DYNAMIC_TASK_PTR,
    ACL_MDL_DYNAMIC_TASK_SIZET,
    ACL_MDL_MEM_MALLOC_POLICY_SIZET,
    ACL_MDL_FIFO_PTR,
    ACL_MDL_FIFO_SIZET,
    ACL_MDL_WITHOUT_GRAPH_INT32
} aclmdlConfigAttr;
```


#### ACL_MDL_PRIORITY_INT32取值说明

模型执行的优先级，可选项。该选项对应的值为int32类型。

数字越小优先级越高，取值[0,7]，默认值为0。

Atlas 训练系列产品 ，docker容器内安装CANN，且配置算力分组的场景，该枚举值不生效。


#### ACL_MDL_LOAD_TYPE_SIZET取值说明

模型加载方式，必选项。该选项对应的值为size_t类型。

ACL_MDL_LOAD_TYPE_SIZET（表示模型加载方式）的取值如下：

- ACL_MDL_LOAD_FROM_FILE

```
#define ACL_MDL_LOAD_FROM_FILE 1
```


- ACL_MDL_LOAD_FROM_FILE_WITH_MEM

```
#define ACL_MDL_LOAD_FROM_FILE_WITH_MEM 2
```


- ACL_MDL_LOAD_FROM_MEM

```
#define ACL_MDL_LOAD_FROM_MEM 3
```


- ACL_MDL_LOAD_FROM_MEM_WITH_MEM

```
#define ACL_MDL_LOAD_FROM_MEM_WITH_MEM 4
```


- ACL_MDL_LOAD_FROM_FILE_WITH_Q

```
#define ACL_MDL_LOAD_FROM_FILE_WITH_Q 5
```


- ACL_MDL_LOAD_FROM_MEM_WITH_Q

```
#define ACL_MDL_LOAD_FROM_MEM_WITH_Q 6
```


注意：如果将ACL_MDL_LOAD_TYPE_SIZET设置为ACL_MDL_LOAD_FROM_MEM，表示从内存加载模型数据，还支持使用ACL_MDL_WEIGHT_PATH_PTR选项指定权重文件目录。


#### ACL_MDL_PATH_PTR取值说明

om模型文件路径的指针，如果选择从文件加载模型，则该选项必选。关于如何获取模型文件，请参见《ATC离线模型编译工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/atctool/atlasatc_16_0001.html)》中的“参数说明 > 基础功能参数 > 总体选项 > --mode参数(https://www.hiascend.comdocument/detail/zh/canncommercial/900/devaids/atctool/atlasatcparam_16_0009.html)”。


#### ACL_MDL_MEM_ADDR_PTR取值说明

模型在内存中的起始地址，如果选择从内存加载模型，则该选项必选。


#### ACL_MDL_MEM_SIZET取值说明

模型在内存中的大小，如果选择从内存加载模型，则该选项必选，与ACL_MDL_MEM_ADDR_PTR选项配合使用。该选项对应的值为size_t类型。


#### ACL_MDL_WEIGHT_ADDR_PTR取值说明

Device上模型权值内存（存放权值数据）的指针，如果需要由用户管理权值内存，则该选项必选。若不配置该选项，则表示由系统管理内存。


#### ACL_MDL_WEIGHT_SIZET取值说明

权值内存大小，单位为Byte，如果需要由用户管理权值内存，则该选项必选，与ACL_MDL_WEIGHT_ADDR_PTR选项配合使用。该选项对应的值为size_t类型。


#### ACL_MDL_WORKSPACE_ADDR_PTR取值说明

Device上模型所需工作内存（存放模型执行过程中的临时数据）的指针，如果需要由用户管理工作内存，则该选项必选。若不配置该选项，则表示由系统管理内存。


#### ACL_MDL_WORKSPACE_SIZET取值说明

模型所需工作内存的大小，单位为Byte，如果需要由用户管理工作内存，则该选项必选，与ACL_MDL_WORKSPACE_ADDR_PTR选项配合使用。该选项对应的值为size_t类型。


#### ACL_MDL_INPUTQ_NUM_SIZET取值说明

模型输入队列大小 ,带队列加载模型时，该选项必选，与ACL_MDL_INPUTQ_ADDR_PTR选项配合使用。该选项对应的值为size_t类型。


#### ACL_MDL_INPUTQ_ADDR_PTR取值说明

模型输入队列ID的指针，带队列加载模型时，该选项必选，一个模型输入对应一个队列ID。


#### ACL_MDL_OUTPUTQ_NUM_SIZET取值说明

模型输出队列大小，带队列加载模型时，该选项必选，与ACL_MDL_OUTPUTQ_ADDR_PTR选项配合使用。该选项对应的值为size_t类型。


#### ACL_MDL_OUTPUTQ_ADDR_PTR取值说明

模型输出队列ID的指针，带队列加载模型时，该选项必选，一个模型输出对应一个队列ID。


#### ACL_MDL_WORKSPACE_MEM_OPTIMIZE取值说明

是否开启模型工作内存优化功能，1开启，0不开启。若关注内存规划或内存资源有限时，建议选择由系统管理内存的方式加载模型，并开启工作内存优化功能，此时工作内存中不包含存放模型输入、输出数据的内存，工作内存大小会减小，达到节省内存的目的。在模型执行前，还需要由用户申请存放模型输入、输出数据的内存，因此即使在模型加载时开启工作内存优化功能，也不会影响后续的模型执行。


#### ACL_MDL_WEIGHT_PATH_PTR取值说明

权重文件所在目录的指针。对om模型文件大小有限制的场景下，通过本参数可实现权重文件外置功能。

如果将ACL_MDL_LOAD_TYPE_SIZET设置为ACL_MDL_LOAD_FROM_MEM，表示从内存加载模型数据，则支持使用ACL_MDL_WEIGHT_PATH_PTR指定权重文件目录。

一般对om模型文件大小有限制或模型文件加密的场景下，需单独加载权重文件，因此需在构建模型时，将权重保存在单独的文件中。例如在使用ATC工具生成om文件时，将--external_weight参数设置为1（1表示将原始网络中的Const/Constant节点的权重保存在单独的文件中）。


注意：通过ACL_MDL_WEIGHT_PATH_PTR配置权重文件所在目录的指针后，在模型加载过程中，图引擎（Graph Engine，简称GE）将自行申请一块Device内存，读取外置权重文件，并将外置权重数据拷贝至该Device内存中，模型卸载时会释放该内存。若已调用aclmdlSetExternalWeightAddress接口配置存放外置权重的Device内存，由用户自行管理Device内存，则无需配置ACL_MDL_WEIGHT_PATH_PTR；若针对同一个模型，既配置了ACL_MDL_WEIGHT_PATH_PTR，也调用了aclmdlSetExternalWeightAddress接口，则aclmdlSetExternalWeightAddress接口的优先级更高。


#### ACL_MDL_MODEL_DESC_PTR取值说明

存放模型描述信息的内存指针。

当前版本不支持该配置。


#### ACL_MDL_MODEL_DESC_SIZET取值说明

存放模型描述信息所需的内存大小，单位Byte。该选项对应的值为size_t类型。

可提前调用aclmdlQueryExeOMDesc接口获取存放模型描述信息所需的内存大小，且本选项需与ACL_MDL_MODEL_DESC_PTR选项配合使用。

当前版本不支持该配置。


#### ACL_MDL_KERNEL_PTR取值说明

存放TBE算子kernel（算子的*.o与*.json）的内存指针。

当前版本不支持该配置。


#### ACL_MDL_KERNEL_SIZET取值说明

存放TBE算子kernel（算子的*.o与*.json）所需的内存大小，单位Byte。该选项对应的值为size_t类型。

可提前调用aclmdlQueryExeOMDesc接口获取存放TBE算子kernel（算子的*.o与*.json）所需的内存大小，且本选项需与ACL_MDL_KERNEL_PTR选项配合使用。

当前版本不支持该配置。


#### ACL_MDL_KERNEL_ARGS_PTR取值说明

存放TBE算子kernel参数的内存指针。

当前版本不支持该配置。


#### ACL_MDL_KERNEL_ARGS_SIZET取值说明

存放TBE算子kernel参数所需的内存大小，单位Byte。该选项对应的值为size_t类型。

可提前调用aclmdlQueryExeOMDesc接口获取存放TBE算子kernel参数所需的内存大小，且本选项需与ACL_MDL_KERNEL_ARGS_PTR选项配合使用。

当前版本不支持该配置。


#### ACL_MDL_STATIC_TASK_PTR取值说明

存放静态shape任务描述信息的内存指针。

当前版本不支持该配置。


#### ACL_MDL_STATIC_TASK_SIZET取值说明

存放静态shape任务描述信息所需的内存大小，单位Byte。该选项对应的值为size_t类型。

可提前调用aclmdlQueryExeOMDesc接口获取存放静态shape任务描述信息所需的内存大小，且本选项需与ACL_MDL_STATIC_TASK_PTR选项配合使用。

当前版本不支持该配置。


#### ACL_MDL_DYNAMIC_TASK_PTR取值说明

存放动态shape任务描述信息的内存指针。

当前版本不支持该配置。


#### ACL_MDL_DYNAMIC_TASK_SIZET取值说明

存放动态shape任务描述信息所需的内存大小，单位Byte。该选项对应的值为size_t类型。

可提前调用aclmdlQueryExeOMDesc接口获取存放动态shape任务描述信息所需的内存大小，且本选项需与ACL_MDL_DYNAMIC_TASK_PTR选项配合使用。

当前版本不支持该配置。


#### ACL_MDL_MEM_MALLOC_POLICY_SIZET取值说明

内存分配规则，该选项对应的值为size_t类型。

当前版本不支持该配置。


#### ACL_MDL_FIFO_PTR取值说明

模型级别全局内存的起始地址。此处是指Device上的内存。

当前版本不支持该配置。


#### ACL_MDL_FIFO_SIZET取值说明

模型级别全局内存的大小，该选项对应的值为size_t类型。

当前版本不支持该配置。


#### ACL_MDL_WITHOUT_GRAPH_INT32取值说明

模型加载后是否保留计算图及其预缓存信息，只支持输入为静态Shape的场景。该选项对应的值为INT32类型，取值范围如下：

- 0：默认值，保留计算图及其预缓存信息。
- 1：不保留计算图及其预缓存信息。设置为1时，模型加载成功后会释放计算图及其预缓存信息，用于节省内存，但预缓存信息被释放，会影响Profiling数据采集以及异常场景下的算子信息获取，因此：

  - Profiling数据采集场景下，需在模型加载前调用    aclprofStart(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclcppdevg_03_1260.html)
接口打开Profling开关，否则Profiling功能不可用。
  - 异常场景下，调用    aclmdlCreateAndGetOpDesc
接口获取算子描述信息时会失败。
