跳到主要内容

aclmdlSetDump

aclmdlCreateAndGetOpDesc

函数功能

获取指定算子的描述信息,包括算子名、输入tensor描述、输出tensor描述,如果查询不到指定算子,则返回报错。该接口不支持动态Shape场景。同步接口。

约束说明

使用场景****举例:执行整网模型推理时,如果产生AI Core报错,可以调用本接口获取报错算子的描述信息,再做进一步错误排查。

推荐的接口调用顺序如下:

  1. 定义并实现异常回调函数fn(aclrtExceptionInfoCallback类型),回调函数原型请参见aclrtSetExceptionInfoCallback

    实现回调函数的关键步骤如下:

    1. 在异常回调函数fn内调用aclrtGetDeviceIdFromExceptionInfoaclrtGetStreamIdFromExceptionInfoaclrtGetTaskIdFromExceptionInfo接口分别获取Device ID、Stream ID、Task ID。

    2. 在异常回调函数fn内调用aclmdlCreateAndGetOpDesc接口获取算子的描述信息。

    3. 在异常回调函数fn内调用aclGetTensorDescByIndex接口获取指定算子输入/输出的tensor描述。

    4. 在异常回调函数fn内如下接口获取tensor描述中的数据,进行进一步分析。

      例如,调用aclGetTensorDescAddress接口获取tensor数据的内存地址(用户可从该内存地址中获取tensor数据)、调用aclGetTensorDescType接口获取tensor描述中的数据类型、调用aclGetTensorDescFormat接口获取tensor描述中的Format、调用aclGetTensorDescNumDims接口获取tensor描述中的Shape维度个数、调用aclGetTensorDescDimV2接口获取Shape中指定维度的大小。

  2. 调用aclrtSetExceptionInfoCallback接口设置异常回调函数。

  3. 执行模型推理。

    如果存在AI Core报错,则触发回调函数fn,获取算子的信息,进行进一步分析。

函数原型

aclError aclmdlCreateAndGetOpDesc(uint32_t deviceId, uint32_t streamId, uint32_t taskId, char *opName, size_t opNameLen, aclTensorDesc **inputDesc, size_t *numInputs, aclTensorDesc **outputDesc, size_t *numOutputs)

参数说明

参数名输入/输出说明
deviceId输入Device ID。 调用aclrtGetDeviceIdFromExceptionInfo接口获取异常信息中的Device ID,作为本接口的输入。
streamId输入Stream ID。 调用aclrtGetStreamIdFromExceptionInfo接口获取异常信息中的Stream ID,作为本接口的输入。
taskId输入Task ID。 调用aclrtGetTaskIdFromExceptionInfo接口获取异常信息中的Task ID,作为本接口的输入。
opName输出算子名称字符串的指针。
opNameLen输入算子名称字符串长度。 若用户指定的长度比实际算子名称的长度短,则返回报错。
inputDesc输出算子所有输入的tensor描述的指针,指向一块连续内存的首地址。
numInputs输出输入个数的指针。
outputDesc输出算子所有输出的tensor描述的指针,指向一块连续内存的首地址。
numOutputs输出输出个数的指针。

返回值说明

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

参考资源

接口调用示例,参见AI Core异常信息获取

父主题: 模型加载与执行

aclmdlInitDump

函数功能

Dump初始化。同步接口。

约束说明

函数原型

aclError aclmdlInitDump()

参数说明

返回值说明

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

相关接口

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

父主题: 模型加载与执行

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还提供了以下接口实现模型加载的功能,从使用的接口上区分从文件加载,还是从内存加载,以及内存是由系统内部管理,还是由用户管理。

父主题: 模型加载与执行

在线提单