Skip to main content

aclmdlLoadWithConfig

aclmdlSetDump

函数功能

设置dump参数。同步接口。

约束说明

  • aclmdlInitDump接口需要与aclmdlSetDump接口、aclmdlFinalizeDump接口配合使用,用于将Dump数据记录到文件中。一个进程内,可以根据需求多次调用这些接口,基于不同的Dump配置信息,获取Dump数据。

    场景举例:

  • 只有在调用本接口之后加载模型,配置的Dump信息有效。在调用本接口之前已经加载的模型不受影响,除非用户在调用本接口后重新加载该模型。

    例如以下接口调用顺序中,加载的模型1不受影响,配置的Dump信息仅对加载的模型2有效:

    aclmdlInitDump接口-->模型1加载-->aclmdlSetDump接口-->模型2加载-->aclmdlFinalizeDump接口

  • 多次调用本接口对同一个模型配置了Dump信息,系统内处理时会采用覆盖策略。

    例如以下接口调用顺序中,第二次调用本接口配置的Dump信息会覆盖第一次配置的Dump信息:

    aclmdlInitDump接口-->aclmdlSetDump接口-->aclmdlSetDump接口-->模型1加载-->aclmdlFinalizeDump接口

函数原型

aclError aclmdlSetDump(const char *dumpCfgPath)

参数说明

参数名输入/输出说明
dumpCfgPath输入配置文件路径的指针,包含文件名。 配置文件格式为json格式,当前可配置dump数据的相关信息,示例请参见配置文件示例,详细配置说明请参见《精度比对工具使用指南》中的“比对数据准备>推理场景数据准备>准备离线模型dump数据文件(AscendCL接口方式)”。

配置文件示例

以Caffe ResNet-50网络为例,若需要比对Caffe ResNet-50网络与基于Caffe ResNet-50转换成的适配昇腾AI处理器的离线模型中某些层算子的输出结果,可以在配置文件中配置如下内容:

{
"dump":{
"dump_list":[
{
"model_name":"ResNet-50",
"layer":[
"conv1conv1_relu",
"res2a_branch2ares2a_branch2a_relu",
"res2a_branch1",
"pool1"
]
}
],
"dump_path":"/MyApp20/dump",
"dump_mode":"output"
}

}

返回值说明

返回0表示成功,返回其它值表示失败。

相关接口

AscendCL还提供了aclInit接口,在AscendCL初始化阶段,通过*.json文件传入Dump配置信息,运行应用后获取Dump数据的方式。该种方式,一个进程内,只能调用一次aclInit接口,如果要修改Dump配置信息,需修改*.json文件中的配置。

父主题: 模型加载与执行

aclmdlFinalizeDump

函数功能

Dump去初始化。同步接口。

约束说明

函数原型

aclError aclmdlFinalizeDump()

参数说明

返回值说明

返回0表示成功,返回其它值表示失败。

相关接口

AscendCL还提供了aclInit接口,在AscendCL初始化阶段,通过*.json文件传入Dump配置信息,运行应用后获取Dump数据的方式。该种方式,一个进程内,只能调用一次aclInit接口,如果要修改Dump配置信息,需修改*.json文件中的配置。

父主题: 模型加载与执行

aclmdlSetConfigOpt

函数功能

设置模型加载的配置对象中的各属性的取值,包括模型执行的优先级、模型的文件路径或内存地址、内存大小等。

本接口需要与以下其它接口配合,实现模型加载功能:

  1. 调用aclmdlCreateConfigHandle接口创建模型加载的配置对象。
  2. 多次调用aclmdlSetConfigOpt接口设置配置对象中每个属性的值。
  3. 调用aclmdlLoadWithConfig接口指定模型加载时需要的配置信息,并进行模型加载。
  4. 模型加载成功后,调用aclmdlDestroyConfigHandle接口销毁。

函数原型

aclError aclmdlSetConfigOpt(aclmdlConfigHandle *handle, aclmdlConfigAttr attr, const void *attrValue, size_t valueSize)

参数说明

参数名输入/输出说明
handle输出模型加载的配置对象的指针。需提前调用aclmdlCreateConfigHandle接口创建该对象。
attr输入指定需设置的属性。
attrValue输入指向属性值的指针,attr对应的属性取值。 如果属性值本身是指针,则传入该指针的地址。
valueSize输入attrValue部分的数据长度。 用户可使用C/C++标准库的函数sizeof(*attrValue)查询数据长度。

返回值说明

返回0表示成功,返回其它值表示失败。

相关接口

使用aclmdlSetConfigOpt接口、aclmdlLoadWithConfig接口时,是通过配置对象中的属性来区分,在加载模型时是从文件加载,还是从内存加载,以及内存是由系统内部管理,还是由用户管理。

当前AscendCL还提供了以下接口实现模型加载的功能,从使用的接口上区分从文件加载,还是从内存加载,以及内存是由系统内部管理,还是由用户管理。

父主题: 模型加载与执行

aclmdlLoadWithConfig

函数功能

指定模型加载时需要的配置信息,并进行模型加载。

本接口需要与以下其它接口配合,实现模型加载功能:

  1. 调用aclmdlCreateConfigHandle接口创建模型加载的配置对象。
  2. 多次调用aclmdlSetConfigOpt接口设置配置对象中每个属性的值。
  3. 调用aclmdlLoadWithConfig接口指定模型加载时需要的配置信息,并进行模型加载。
  4. 模型加载成功后,调用aclmdlDestroyConfigHandle接口销毁。

约束说明

在加载前,请先根据模型文件的大小评估内存空间是否足够,内存空间不足,会导致应用程序异常。

函数原型

aclError aclmdlLoadWithConfig(const aclmdlConfigHandle *handle, uint32_t *modelId)

参数说明

参数名输入/输出说明
handle输入模型加载的配置对象的指针。需提前调用aclmdlCreateConfigHandle接口创建该对象,与aclmdlSetConfigOpt中的handle保持一致。
modelId输出模型ID的指针。 系统成功加载模型后会返回的模型ID。

返回值说明

返回0表示成功,返回其它值表示失败。

相关接口

使用aclmdlSetConfigOpt接口、aclmdlLoadWithConfig接口时,是通过配置对象中的属性来区分,在加载模型时是从文件加载,还是从内存加载,以及内存是由系统内部管理,还是由用户管理。

当前AscendCL还提供了以下接口实现模型加载的功能,从使用的接口上区分从文件加载,还是从内存加载,以及内存是由系统内部管理,还是由用户管理。

父主题: 模型加载与执行

总体说明

本章主要介绍了如下几类算子API,提供了详细的接口介绍,包括接口原型、功能描述、参数说明、调用示例等,适合开发人员、测试人员。

  • NN类算子:主要包含实现数学基础运算(如加、减、乘、除等)、CNN相关操作(如卷积、池化、激活函数)等功能的算子接口。
  • DVPP类算子:主要包含实现图像缩放、JPEG图像解码、图像归一化等功能的算子接口。
  • **融合类算子:**主要将多个独立的“小算子”(向量Vector、矩阵Cube等)融合成一个“大算子”,达到提升算子性能的目的。

父主题: 单算子API执行

功能支持度说明

通过单算子API执行方式调用算子时,昇腾AI处理器对各类算子接口的支持度如下表所示。

版本NN类算子接口(aclnn)DVPP类算子接口(acldvpp)融合类算子接口(aclnn)
Atlas 200/500 A2推理产品xxx

父主题: 单算子API执行

两段式接口

单算子API执行的算子接口一般定义为“两段式接口”,以NN类算子接口定义为例:

<br>1<br>2<br><br>aclnnStatus aclnnXxxGetWorkspaceSize(const aclTensor *src, ..., aclTensor *out, ..., uint64_t workspaceSize, aclOpExecutor **executor);<br>aclnnStatus aclnnXxx(void* workspace, int64 workspaceSize, aclOpExecutor* executor, aclrtStream stream);<br>

其中aclnnXxxGetWorkspaceSize为第一段接口,主要用于计算本次API调用计算过程中需要多少的workspace内存。获取到本次API计算需要的workspace大小后,按照workspaceSize大小申请昇腾AI处理器内存,然后调用第二段接口aclnnXxx。

:::note 说明

  • workspace是指除输入/输出外,API在昇腾AI处理器上完成计算所需要的临时内存。

  • 第二段接口aclnnXxx(...)不能重复调用,如下调用方式会出现异常:

    aclnnXxxGetWorkspaceSize(...)
    aclnnXxx(...)
    aclnnXxx(...)

:::

父主题: 基本概念

在线提单