初始化和去初始化

总体说明

支持的型号

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等相关资源,需与全局初始化接口(MxInitMxInitFromConfig)配套使用。相关使用流程请参考初始化与去初始化

Note

  • 涉及申请Device侧资源的类(TensorModelImageImageProcessorVideoEncoderVideoDecoder)与MxDeInit的作用域冲突,因此,这些类的作用域不能大于或等于MxDeInit的作用域。
  • 执行完MxDeInit后,日志级别将会失效,且日志无法落盘。

函数原型

APP_ERROR MxDeInit();

返回参数说明

数据结构 说明
APP_ERROR 程序执行返回的错误码,请参考APP_ERROR说明