aclOpCompileFlag
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
} aclmdlConfigAttr;
表1 模型加载选项配置
| 选项 | 取值说明 |
|---|---|
| ACL_MDL_PRIORITY_INT32 | 模型执行的优先级,数字越小优先级越高,取值[0,7],可选项。默认值为0。 |
| ACL_MDL_LOAD_TYPE_SIZET | 模型加载方式,必选项。 ACL_MDL_LOAD_TYPE_SIZET(表示模型加载方式)的取值使用如下宏: - ACL_MDL_LOAD_FROM_FILE text<br> #define ACL_MDL_LOAD_FROM_FILE 1<br> - ACL_MDL_LOAD_FROM_FILE_WITH_MEM text<br> #define ACL_MDL_LOAD_FROM_FILE_WITH_MEM 2<br> - ACL_MDL_LOAD_FROM_MEM text<br> #define ACL_MDL_LOAD_FROM_MEM 3<br> - ACL_MDL_LOAD_FROM_MEM_WITH_MEM text<br> #define ACL_MDL_LOAD_FROM_MEM_WITH_MEM 4<br> - ACL_MDL_LOAD_FROM_FILE_WITH_Q text<br> #define ACL_MDL_LOAD_FROM_FILE_WITH_Q 5<br> |
| ACL_MDL_PATH_PTR | 离线模型文件路径的指针,如果选择从文件加载模型,则该选项必选。 |
| ACL_MDL_MEM_ADDR_PTR | 模型在内存中的起始地址,如果选择从内存加载模型,则该选项必选。 |
| ACL_MDL_MEM_SIZET | 模型在内存中的大小,如果选择从内存加载模型,则该选项必选,与ACL_MDL_MEM_ADDR_PTR选项配合使用。 |
| ACL_MDL_WEIGHT_ADDR_PTR | Device上模型权值内存(存放权值数据)的指针,如果需要由用户管理权值内存,则该选项必选。若不配置该选项,则表示由系统管理内存。 |
| ACL_MDL_WEIGHT_SIZET | 权值内存大小,单位为Byte,如果需要由用户管理权值内存,则该选项必选,与ACL_MDL_WEIGHT_ADDR_PTR选项配合使用。 |
| ACL_MDL_WORKSPACE_ADDR_PTR | Device上模型所需工作内存(存放模型执行过程中的临时数据)的指针,如果需要由用户管理工作内存,则该选项必选。若不配置该选项,则表示由系统管理内存。 |
| ACL_MDL_WORKSPACE_SIZET | 模型所需工作内存的大小,单位为Byte,如果需要由用户管理工作内存,则该选项必选,与ACL_MDL_WORKSPACE_ADDR_PTR选项配合使用。 |
| ACL_MDL_INPUTQ_NUM_SIZET | 模型输入队列大小 ,带队列加载模型时,该选项必选,与ACL_MDL_INPUTQ_ADDR_PTR选项配合使用。 |
| ACL_MDL_INPUTQ_ADDR_PTR | 模型输入队列ID的指针,带队列加载模型时,该选项必选,一个模型输入对应一个队列ID。 |
| ACL_MDL_OUTPUTQ_NUM_SIZET | 模型输出队列大小,带队列加载模型时,该选项必选,与ACL_MDL_OUTPUTQ_ADDR_PTR选项配置使用。 |
| ACL_MDL_OUTPUTQ_ADDR_PTR | 模型输出队列ID的指针,带队列加载模型时,该选项必选,一个模型输出对应一个队列ID。 |
| ACL_MDL_WORKSPACE_MEM_OPTIMIZE | 是否开启模型工作内存优化功能,1开启,0不开启。 若关注内存规划或内存资源有限时,建议在模型加载前,开启工作内存优化功能,此时工作内存中不包含存放模型输入、输出数据的内存,工作内存大小会减小,达到节省内存的目的。 在模型执行前,还需要由用户申请存放模型输入、输出数据的内存,因此即使在模型加载时开启工作内存优化功能,也不会影响后续的模型执行。 |
:::note 说明
-
关于如何获取om文件,请参见《ATC工具使用指南》。
-
对om模型文件大小有限制的场景下,如果使用ATC工具生成om文件时,将--external_weight参数设置为1(1表示将原始网络中的Const/Constant节点的权重保存在单独的文件中,且该文件保存在与om文件同级的weight目录下),那么在使用本接口加载om文件时,需将weight目录与om文件放在同级目录下,这时AscendCL会自行到weight目录下查找权重文件,否则可能会导致单独的权重文件加载不成功。 :::
父主题: 数据类型及其操作接口
aclMemType
typedef enum {
ACL_MEMTYPE_DEVICE = 0, //Device内存
ACL_MEMTYPE_HOST = 1, //Host内存
ACL_MEMTYPE_HOST_COMPILE_INDEPENDENT = 2 //Host内存
}
ACL_MEMTYPE_HOST和ACL_MEMTYPE_HOST_COMPILE_INDEPENDENT都标识Host内存,但在使用上有区别:
- ACL_MEMTYPE_HOST:若通过aclSetCompileopt接口将ACL_OP_JIT_COMPILE设置为disable,设置该选项时,算子输入或输出的值的变化,不会触发算子重新编译;若通过aclSetCompileopt接口将ACL_OP_JIT_COMPILE设置为enable,算子输入或输出的值的变化,会触发算子重新编译。
- ACL_MEMTYPE_HOST_COMPILE_INDEPENDENT :设置该选项时,算子输入或输出的值的变化,都不会触发算子重新编译。若算子编译时依赖其输入或输出的值,此时如果设置为 ACL_MEMTYPE_HOST_COMPILE_INDEPENT,则可能会导致编译失败。
父主题: 数据类型及其操作接口
aclOpCompileFlag
该参数已废弃,请勿配置,否则后续版本可能存在兼容性问题。
typedef enum aclCompileFlag {
ACL_OP_COMPILE_DEFAULT, //精确编译,不设置编译flag时,默认是精确编译
ACL_OP_COMPILE_FUZZ
}
父主题: 数据类型及其操作接口
aclrtEventWaitStatus
aclrtEventWaitStatus{
ACL_EVENT_WAIT_STATUS_COMPLETE = 0, //完成
ACL_EVENT_WAIT_STATUS_NOT_READY = 1, //未完成
ACL_EVENT_WAIT_STATUS_RESERVED = 0xffff, //预留
}
父主题: 数据类型及其操作接口
aclprofStepTag
typedef enum{
ACL_STEP_START = 0, //step start
ACL_STEP_END = 1 //step end
} aclprofStepTag
:::note 说明 同一个aclprofStepInfo对象、同一个tag只能设置一次,否则Profiling解析会出错。 :::
父主题: 数据类型及其操作接口
在线提单