pyACL初始化与去初始化
关于pyACL初始化与去初始化的接口调用流程,请参见主要接口调用流程。
基本原理
您必须调用acl.init接口初始化pyACL,配置文件内容为json格式,当前支持以下配置:
- dump信息配置,示例、配置说明及约束请参见《CANN 开发工具指南》中的“精度比对工具使用指南”章节中的“比对数据准备>准备离线模型dump数据文件”。默认不启动dump配置。
- Profiling采集信息配置,示例、配置说明及约束请参见《CANN 开发工具指南》中的“Profiling工具使用指南”章节。默认不启用Profiling采集信息配置。
- 算子缓存信息老化配置,为节约内存和平衡调用性能,可通过max_opqueue_num参数配置“算子类型-单算子模型”映射队列的最大长度,如果长度达到最大,则会先删除长期未使用的映射信息以及缓存中的单算子模型,再加载最新的映射信息以及对应的单算子模型。如果不配置映射队列的最大长度,则默认最大长度为10000。示例及约束说明请参见配置文件示例。
有初始化就有去初始化,在确定完成了pyACL的所有调用之后,或者进程退出之前,需调用acl.finalize接口实现pyACL去初始化。
示例代码
您可以从样例介绍中获取完整样例代码。
调用接口后,需增加异常处理的分支,并记录报错日志、提示日志,此处不一一列举。以下是关键步骤的代码示例,不可以直接拷贝运行,仅供参考。
1 2 3 4 5 6 7 8 9 10 11 |
import acl # ...... # 初始化基本配置。 # 此处的..表示相对路径,相对可执行文件所在的目录 acl_config_path = "../src/acl.json" ret = acl.init(acl_config_path) # ...... # 去初始化 ret = acl.finalize() # ...... |
配置文件示例
- 算子缓存信息老化配置
- 对于静态加载的算子,调用acl.op.set_model_dir接口加载指定目录下的单算子模型或调用acl.op.load接口加载指定单算子模型时,老化配置无效,不会对该部分的算子信息做老化。
- pyACL内部分开维护固定Shape和动态Shape算子的映射队列,最大长度都为max_opqueue_num参数值。
- max_opqueue_num参数值为静态加载算子的单算子模型个数和在线编译算子的单算子模型个数的总和,因此max_opqueue_num参数值应大于当前进程中可用的、静态加载算子的单算子模型个数,否则会导致在线编译算子的信息无法老化。
配置文件中的示例内容如下:{ "max_opqueue_num": "10000" }
父主题: 初级功能