请提供一下自动安装编译出来的run包的日志呢?当前使用的CANN和torch_npu版本是多少?




python侧的日志,两种设置方式如下:
1、TorchAir Python层日志
2、图编译完整Debug信息保存功能


我们更换了cann包为4月13日最新cann包后,可以自动安装了,之前用的cann包为4月3日的。另外想咨询一下,我们是自定义新算子开发,在python调用脚本中如果不使用静态编译,也就是设置model = torch.compile(model, backend="npugraph_ex", options={"static_kernel_compile": False}, dynamic=False),算子的精度是正确的,如果设置model = torch.compile(model, backend="npugraph_ex", options={"static_kernel_compile": True}, dynamic=False),算子静态编译没有ERROR,但是算子的精度是错误的,请问可能是什么原因呢,或者有什么定位方式呢,静态编译场景下有什么方法可以打印算子kernel实现内部的数据吗。


可以参考:算子Data Dump功能


感谢,我们用这个dump功能发现,在静态编译场景下会dump出现两次输入一次输出,在非静态编译场景下只有一次输入一次输出。我们的算子中有一个原地更新入参,导致静态编译场景下两次输入的原地更新入参不一致,最终导致了最后一次静态执行的精度与cpu相比不一样,因为最后一次执行的原地更新输入不同。在plog中,我们发现静态编译确实会出现两次执行算子,一次动态执行,一次静态执行。请问这两次执行之间是什么导致了原地更新入参被更新呢。


感谢,我们用这个dump功能发现,在静态编译场景下会dump出现两次输入一次输出,在非静态编译场景下只有一次输入一次输出。我们的算子中有一个原地更新入参,导致静态编译场景下两次输入的原地更新入参不一致,最终导致了最后一次静态执行的精度与cpu相比不一样,因为最后一次执行的原地更新输入不同。在plog中,我们发现静态编译确实会出现两次执行算子,一次动态执行,一次静态执行。请问这两次执行之间是什么导致了原地更新入参被更新呢。
@fengqiuyue
可以提供下脚本,根据fx图与日志一起分析一下


感谢,我们用这个dump功能发现,在静态编译场景下会dump出现两次输入一次输出,在非静态编译场景下只有一次输入一次输出。我们的算子中有一个原地更新入参,导致静态编译场景下两次输入的原地更新入参不一致,最终导致了最后一次静态执行的精度与cpu相比不一样,因为最后一次执行的原地更新输入不同。在plog中,我们发现静态编译确实会出现两次执行算子,一次动态执行,一次静态执行。请问这两次执行之间是什么导致了原地更新入参被更新呢。
@fengqiuyue
可以提供下脚本,根据fx图与日志一起分析一下


另外想咨询一下如何打开FX图,我们设置了export TORCH_COMPILE_DEBUG=1,得到了一些txt文件




结论:静态编译场景会执行两次算子,第一次动态执行,第二次静态执行,我们的算子中存在原地更新入参,静态编译场景下,原地更新入参被更新了两次,而对标的golden函数仅执行了一次算子,原地更新入参仅被更新了一次,导致精度错误。


在提交问题之前,请通过搜索现有和历史问题确保该问题尚未被提出并解决。
您的环境信息
🐛 请描述bug
aclgraph 静态编译无法自动安装编译出来的run包,想咨询一下aclgraph 静态编译是否已经稳定支持,是否可以提供稳定版本的CANN包和torch_npu包