函数:set_dump
产品支持情况
产品 |
是否支持 |
---|---|
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
功能说明
设置dump参数。
函数原型
- C函数原型
1
aclError aclmdlSetDump(const char *dumpCfgPath)
- python函数
1
ret = acl.mdl.set_dump(dump_cfg_path)
参数说明
参数名 |
说明 |
---|---|
dump_cfg_path |
当前支持以下Dump信息配置:
|
返回值说明
返回值 |
说明 |
---|---|
ret |
int,错误码,返回0表示成功,返回其它值表示失败。 |
约束说明
- acl.mdl.init_dump接口需要与acl.mdl.set_dump接口、acl.mdl.finalize_dump接口配合使用,用于将Dump数据记录到文件中。一个进程内,可以根据需求多次调用这些接口,基于不同的Dump配置信息,获取Dump数据。
- 场景举例:
- 两次模型执行,需要设置不同的Dump配置信息,接口调用顺序:acl.init接口 --> acl.mdl.init_dump接口 --> acl.mdl.set_dump接口 --> 模型加载 --> 模型执行 --> acl.mdl.finalize_dump接口 --> 模型卸载 --> acl.mdl.init_dump接口 --> acl.mdl.set_dump接口 --> 模型加载 --> 模型执行 --> acl.mdl.finalize_dump接口 --> 模型卸载 --> 执行其它任务 --> acl.finalize接口
- 同一个模型执行两次,第一次需要Dump,第二次无需Dump,接口调用顺序:acl.init接口 --> acl.mdl.init_dump接口 --> acl.mdl.set_dump接口 --> 模型加载 --> 模型执行 --> acl.mdl.finalize_dump接口 --> 模型卸载 --> 模型加载 --> 模型执行 --> 执行其它任务 --> acl.finalize接口
- 只有在调用本接口开启Dump之后加载模型,配置的Dump信息有效。在调用本接口之前已经加载的模型不受影响,除非用户在调用本接口后重新加载该模型。
例如以下接口调用顺序中,加载的模型1不受影响,配置的Dump信息仅对加载的模型2有效:
acl.mdl.init_dump接口 --> 模型1加载 --> acl.mdl.set_dump接口 --> 模型2加载 --> acl.mdl.finalize_dump接口
- 多次调用本接口对同一个模型配置了Dump信息,系统内处理时会采用覆盖策略。
例如以下接口调用顺序中,第二次调用本接口配置的Dump信息会覆盖第一次配置的Dump信息:
acl.mdl.init_dump接口 --> acl.mdl.set_dump接口 --> acl.mdl.set_dump接口 --> 模型1加载 --> acl.mdl.finalize_dump接口
资源参考
还提供了acl.init接口,在初始化阶段,通过*.json文件传入Dump配置信息,运行应用后获取Dump数据的方式。该种方式,一个进程内,只能调用一次acl.init接口,如果要修改Dump配置信息,需修改*.json文件中的配置。
配置文件示例(算子Dump Watch模式配置)
将dump_scene参数设置为watcher,开启算子Dump Watch模式,详细配置说明及约束如下:
- 若开启算子Dump Watch模式,则不支持同时开启溢出算子Dump(配置dump_debug参数)或开启单算子模型Dump(配置dump_op_switch参数),否则报错。该模式在单算子API Dump场景下不生效。
- 在dump_list中,通过layer参数配置可能踩踏其它算子内存的算子名称,通过watcher_nodes参数配置可能被其它算子踩踏输出内存导致精度有问题的算子名称。
- 若不指定layer,则模型内所有支持Dump的算子在执行后,都会将watcher_nodes中配置的算子的输出Dump出来。
- layer和watcher_node处配置的算子都必须是静态图、静态子图中的算子,否则不生效。
- 若layer和watcher_node处配置的算子名称相同,或者layer处配置的是集合通信类算子(算子类型以Hcom开头,例如HcomAllReduce),则不导出dump文件。
- 对于融合算子,watcher_node处配置的算子名称必须是融合后的算子名称,若配置融合前的算子名称,则不导出dump文件。
- dump_list内暂不支持配置model_name。
- 开启算子Dump Watch模式,则dump_path必须配置,表示导出dump文件的存储路径。
- 通过dump_mode参数控制导出watcher_nodes中所配置算子的哪部分数据,当前仅支持配置为output。
配置文件中的示例内容如下,配置效果为:当执行完A算子和B算子时,会把C算子和D算子的输出Dump出来,导出C算子opType.A_To_C.*、D算子opType.A_To_D.*、C算子opType.B_To_C.*、D算子opType.B_To_D.*四个dump文件,用于排查A算子、B算子是否会踩踏C算子、D算子的输出内存。
{
"dump":{
"dump_list":[
{
"layer":["A", "B"],
"watcher_nodes":["C", "D"]
}
],
"dump_path":"/home/",
"dump_mode":"output",
"dump_scene":"watcher"
}
}
此处收集的dump文件无法通过文本工具直接查看其内容,若需查看dump文件内容,先将dump文件转换为numpy格式文件后,再通过Python查看numpy格式文件,详细转换步骤请参见《精度调试工具用户指南》中的“扩展功能>查看dump数据文件”章节。