报错截图举例:
由于NPU模型训练时默认算子异步执行,导致算子执行过程中出现报错时,打印的报错堆栈信息并不是实际的调用栈信息。如上图所示,调用栈打印ReadQueue()接口报错,但是实际是算子报错。如果需要获取到与实际错误相对应的堆栈报错信息,需要设置环境变量,强制NPU模型训练时使用算子同步执行,这样在算子执行报错时,能够打印正确的调用栈信息。
export ASCEND_LAUNCH_BLOCKING=1
再次运行模型,即可得到与实际错误一致的堆栈报错信息。