函数:set_dump
C函数原型 |
aclError aclmdlSetDump(const char *dumpCfgPath) |
---|---|
Python函数 |
ret = acl.mdl.set_dump(dump_cfg_path) |
函数功能 |
设置dump参数。 |
输入说明 |
dump_cfg_path:string,配置文件所在的路径,包含文件名。 当前支持以下Dump信息配置:
|
返回值说明 |
ret:int,错误码。
|
约束说明 |
|
相关接口 |
pyACL还提供了acl.init接口,在pyACL初始化阶段,通过*.json文件传入Dump配置信息,运行应用后获取Dump数据的方式。该种方式,一个进程内,只能调用一次acl.init接口,如果要修改Dump配置信息,需修改*.json文件中的配置。 |
配置文件示例(算子Dump Watch模式配置)
将dump_scene参数设置为watcher,开启算子Dump Watch模式,详细配置说明及约束如下:
- 若开启算子Dump Watch模式,则不支持同时开启溢出算子Dump(配置dump_debug参数)或开启单算子模型Dump(配置dump_op_switch参数),否则报错。
- 在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数据文件”章节。