初始化和去初始化
总体说明
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Atlas 800I A2推理产品
MxInit
全局初始化,申请Device资源与日志资源,Vision SDK接口全部执行完毕后,用户需调用MxDeInit()接口对初始化的全局资源进行去初始化操作。相关使用流程请参考初始化与去初始化。
- 对于Atlas 200I/500 A2 推理产品:使用MxInit()。
- 对于Atlas 推理系列产品:可以使用MxInit的全部函数原型。调用MxInit()后,在初次调用ImageProcessor类图像处理接口和TensorOperations的部分接口会初始化DVPP资源池,再次调用接口时不会进行初始化,会直接使用DVPP通道资源池,其中DVPP资源池大小可通过“globalCfg”或“globalCfgExtra”进行设置。第一次调用ImageProcessor和TensorOperations的部分接口时间会包含DVPP资源池初始化的时间,导致接口调用的总体时间增长。
- 对于Atlas 800I A2 推理服务器:可以使用MxInit的全部函数原型。调用MxInit()后,可直接使用DVPP通道资源池,其中DVPP通道资源池大小可通过“globalCfg”或“globalCfgExtra”进行设置。
Note
- 一个进程内只能调用一次MxInit接口。
- DVPP资源池所申请的底层通道资源为进程共享,多进程场景可能导致资源耗尽,请谨慎使用。
- DVPP资源池与VideoEncoder及VideoDecoder共享底层通道资源,极端场景可能导致资源耗尽,建议根据实际场景的需要进行资源池大小的初始化。
- 该接口会注册监测日志数量和监测日志时间的线程,线程命名分别为“log_filenum”和“log_time”。
APP_ERROR MxInit();
APP_ERROR MxInit(const AppGlobalCfg &globalCfg);
APP_ERROR MxInit(const AppGlobalCfgExtra &globalCfgExtra);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| globalCfg | 输入 | AppGlobalCfg类型,应用全局配置。 |
| globalCfgExtra | 输入 | AppGlobalCfgExtra类型,应用全局配置。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MxInitFromConfig
全局初始化,申请设备资源与日志资源并通过输入的预加载配置JSON文件进行算子预加载操作,配置文件编写规则参考如下,完整配置文件示例请参见初始化算子预加载文件示例。Vision SDK接口全部执行完毕后,用户需调用MxDeInit()接口对初始化的全局资源进行去初始化操作。相关使用流程请参考初始化与去初始化。
该接口不支持Atlas 800I A2推理产品。
-
预加载的算子配置,需包含以下字段。
- 算子名称(name)
- 算子预加载列表(preload_list)
- 算子类型(type),预留字段,暂不建议使用。
-
预加载列表中,需包含以下字段。
-
算子输入形状(input_shape)
-
输入类型(input_type)
-
输出形状(output_shape)
-
输出类型(output_type)
若算子预加载时需要设置属性,还需包含以下字段。
- 属性名称(attr_name)
- 属性数据类型(attr_type)
- 属性值(attr_val)
-
-
各算子输入输出形状及数据类型限制条件参照TensorOperations中对应算子限制条件,各Tensor的形状与对应的类型数量应保持一致并用分号分割,Tensor中的各个维度用逗号分割。
-
调用MxInitFromConfig后,在初次调用ImageProcessor类图像处理接口和TensorOperations的部分接口会初始化DVPP资源池,再次调用接口时不会进行初始化,会直接使用DVPP通道资源池,其中DVPP资源池大小可通过“globalCfg”或“globalCfgExtra”进行设置。第一次调用ImageProcessor和TensorOperations的部分接口时间会包含DVPP资源池初始化的时间,导致接口调用的总体时间增长。
Note
- 一个进程内只能调用一次MxInitFromConfig接口。
- DVPP资源池所申请的底层通道资源为进程共享,多进程场景可能导致资源耗尽,请谨慎使用。
- DVPP资源池与VideoEncoder及VideoDecoder共享底层通道资源,极端场景可能导致资源耗尽,建议根据实际场景的需要进行资源池大小的初始化。
- 该接口会注册监测日志数量和监测日志时间的线程,线程命名分别为“log_filenum”和“log_time”。
APP_ERROR MxInitFromConfig(const std::string &configFile);
APP_ERROR MxInitFromConfig(const std::string &configFile, const AppGlobalCfg &globalCfg);
APP_ERROR MxInitFromConfig(const std::string &configFile, const AppGlobalCfgExtra &globalCfgExtra);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| configFile | 输入 | std::string类型,预加载配置JSON文件路径,JSON要求属主为当前用户且权限不大于640。 |
| globalCfg | 输入 | AppGlobalCfg类型,应用全局配置。 |
| globalCfgExtra | 输入 | AppGlobalCfgExtra类型,应用全局配置。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MxDeInit
全局去初始化,释放Log、Device等相关资源,需与全局初始化接口(MxInit或MxInitFromConfig)配套使用。相关使用流程请参考初始化与去初始化。
Note
- 涉及申请Device侧资源的类(Tensor、Model、Image、ImageProcessor、VideoEncoder和VideoDecoder)与MxDeInit的作用域冲突,因此,这些类的作用域不能大于或等于MxDeInit的作用域。
- 执行完MxDeInit后,日志级别将会失效,且日志无法落盘。
APP_ERROR MxDeInit();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |