在模型运行时将多任务下发关闭(export ASCEND_LAUNCH_BLOCKING=1)后仍然遇到报错“HelpACLExecute.”
问题描述
- 报错文本
443 ---Thread- --281468173898208: device=0, write_idx=1, read_idx=0, status=0, ret = 500000 444 terminate called after throwing an instance of 'c10::Error' 445 what() _HelpACLExecute:/home/***/pytorch/c10/npu/NPUStream.cpp:158 (HelpACLExecute at /home/***/pytorch/c10/npu/NPUStream.cpp:159) …… 457 2020-11-18 11:27:09,398 190002 PCOMPILE Master process dead. worker process quiting..
问题分析
PyTorch算子在NPU上运行,通过AscendCL接口调用底层经过优化的算子。由于在上层报错信息显示为HelpACLExecute. 时,内部也正在对报错信息与日志进行完善,导致部分算子发生错误时,报错信息获取异常。
处理方法
查看host日志,确定报错算子和位置。查找对应时间的log文件,搜索ERROR字段,查找错误信息。如对上述的错误,查询日志中的ERROR字段为下图所示。
从日志信息EEROR部分可以发现,报错算子为topKD,报错原因为“The number of attrs in op desc and op store does not match. ”,定位到错误原因为topKD算子参数不匹配。
在模型代码中查找topKD算子调用位置,确定该算子是否可由其他算子代替。若可由其他算子代替,暂时使用代替方案,并将算子报错信息报告华为工程师。若无替代算子,请将算子报错信息通知华为工程师解决。
父主题: 模型运行常见问题