函数:init
C函数原型 |
aclError aclInit(const char *configPath) |
---|---|
Python函数 |
ret = acl.init(config_path) |
函数功能 |
pyACL初始化函数。 |
输入说明 |
config_path:str,配置文件所在的路径,包含文件名。 配置文件内容为JSON格式(JSON文件内的“{”的层级最多为10,“[”的层级最多为10)。如果以下的默认配置已满足需求,无需修改,可直接调用acl.init接口不传入参数或者可将配置文件配置为空JSON串(即配置文件中只有{})。 配置文件格式为JSON格式,当前支持以下配置:
建议不要同时配置dump信息和Profiling采集信息,否则dump操作会影响系统性能,导致Profiling采集的性能数据指标不准确。 |
返回值说明 |
ret:int,错误码。
|
约束说明 |
|
相关接口 |
pyACL还提供了其它使能Dump或Profiling的接口,如下,与acl.init不同的是,以下这些接口相对灵活,可以在一个进程内调用多次接口,每次调用接口时可以基于不同的Dump配置或Profiling配置。
|
参考资源 |
配置文件示例(算子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数据文件”章节。
默认Device配置示例
default_device参数处设置Device ID,Device ID可设置为0或十进制正整数,用户可调用aclrtGetDeviceCount接口获取可用的Device数量后,这个Device ID的取值范围:[0, (可用的Device数量-1)]。
配置文件中的示例内容如下:
{ "defaultDevice":{ "default_device":"0" } }
相关接口
AscendCL还提供了其它使能Dump或Profiling的接口,如下,与aclInit不同的是,以下这些接口相对灵活,可以在一个进程内调用多次接口,每次调用接口时可以基于不同的Dump配置或Profiling配置。
- 获取Dump数据,参见函数:init_dump、函数:set_dump、函数:finalize_dump。
- 获取Profiling数据,参见Profiling数据采集。