# aclmdlSetDump

#### 函数功能

设置dump参数。同步接口。


#### 约束说明

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

  - 两次模型执行，需要设置不同的Dump配置信息，接口调用顺序：    aclInit
接口-->    aclmdlInitDump
接口-->    aclmdlSetDump
接口-->模型加载-->模型执行-->    aclmdlFinalizeDump
接口-->模型卸载-->    aclmdlInitDump
接口-->    aclmdlSetDump
接口-->模型加载-->模型执行-->    aclmdlFinalizeDump
接口-->模型卸载-->执行其它任务-->    aclFinalize
接口
  - 同一个模型执行两次，第一次需要Dump，第二次无需Dump，接口调用顺序：    aclInit
接口-->    aclmdlInitDump
接口-->    aclmdlSetDump
接口-->模型加载-->模型执行-->    aclmdlFinalizeDump
接口-->模型卸载-->模型加载-->模型执行-->执行其它任务-->    aclFinalize
接口
- 只有在调用本接口之后加载模型，配置的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数据的相关信息，示例请参见配置文件示例，详细配置说明请参见《精度比对工具使用指南(https://www.hiascend.com/document/detail/zh/canncommercial/700/devtools/auxiliarydevtool/atlasaccuracy\_16\_0002.html)》中的“比对数据准备>推理场景数据准备>准备离线模型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文件中的配置。
