torch_npu版本: v2.1.0-5.0.rc3
CANN: 7.0.RC1
对torch_npu 的源码pytorch/third_party/op-plugin/op_plugin/ops/base_ops/opapi路径下进行修改算子,再使用源码编译安装torch_npu插件,输出算子的某些信息达到目的
例如修改pytorch/third_party/op-plugin/op_plugin/ops/base_ops/opapi/AddKernelNpuOpApi.cpp这个文件(如下图所示),测试脚本会在
torch_npu.npu.set_compile_mode(jit_compile=False)的模式下使用add,最终会在终端输出某些信息。
现在我构建的一个脚本中有调用到reshape算子,但是没有在pytorch/third_party/op-plugin/op_plugin/ops/base_ops/opapi下找到reshape算子,在pytorch/third_party/op-plugin/op_plugin/ops/base_ops/aclops中找到了,但是修改后,在torch_npu.npu.set_compile_mode(jit_compile=False)的模式下不会调用。
请问torch_npu.npu.set_compile_mode(jit_compile=False)状态下,reshape应该在哪里找呢!!!!!不仅仅是reshape,transpose、permute、expand 这几个算子都找不到
还有个疑问,torch_npu 的作用是衔接pytorch,让算子在能够在npu上下发且执行,如果脚本能够在npu上正常运行,可否说明脚本中所有算子都在torch_npu上有实现,应该不存在torch上的算子没有经过torch_npu就可以在npu上执行吧
reshape是view操作,使用的原生逻辑,其他算子也有类似情况,可以通过profiling观察算子调用信息
https://www.hiascend.com/document/detail/zh/canncommercial/80RC3/devaids/devtools/profiling/atlasprofiling_16_0006.html
请问原生逻辑指的是pytorch中原本定义的操作,不需要通过torch_npu吗
如果我想输出算子的输入输出地址需要修改pytorch的源码吗
profiling能看到算子调用的顺序,我看到后面有些算子最后去调用aclnnXX算子去实现aten:XX。但有些算子一开始是调用aten:XX,最终还是aten:XX,这是不是就意味着使用了pytorch的原生逻辑
是的,不需要torch_npu处理
python侧应该也可以打印tensor地址,如果你需要查看c++侧调用各阶段的地址,那需要修改pytorch的源码
大概可以这么理解,如果有torch_npu适配逻辑对应会有torch_npu这边的调用栈,如果在pytorch社区代码中完成调用就不会走到torch_npu这边
感谢您的回复,那这些view操作走的是原生逻辑的话,是说明pytorch是可以在npu上修改张量吗,也就是某些算子可以直接从pytorch下发给torch_npu
您好,针对之前的问题还有些疑问,那这些view操作走的是原生逻辑的话,是说明pytorch是可以在npu上修改张量吗,也就是某些算子可以直接从pytorch下发给npu执行吗?还是说他们是在cpu侧进行执行的,再把结果返回给npu。
view操作不会实际修改tensor的实际内存也就是storage,他只会修改上层的描述性信息
https://stackoverflow.com/questions/42479902/what-does-view-do-in-pytorch
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论