已关闭
test(dynamo): cover assume_constant_result on NPU #42034
2501_93637465创建于 7月18日关闭于 27 天前
test(dynamo): cover assume_constant_result on NPU #42034
已关闭
2501_93637465创建于 7月18日关闭于 27 天前
2501_93637465
2501_93637465
7月18日

【合入来源】

任务来源:https://gitcode.com/Ascend/pytorch/issues/2990

关联 Issue:https://gitcode.com/Ascend/pytorch/issues/3036

Fixes #3036

API:torch.compiler.assume_constant_result

目标分支:v2.9.0

【修改方案】

torch.compiler.assume_constant_result 补充独立的 NPU 功能测试,验证:

  • API 返回原函数对象;
  • 使用 NPU Tensor 时可被 torch.compile 正常捕获;
  • 编译函数连续执行结果正确;
  • 被标记函数的结果在编译期间被视为常量,只计算一次;
  • 同步 NPU 执行,确保异步报错被测试及时捕获。

该 API 由 PyTorch TorchDynamo 提供,不需要新增 torch_npu 算子实现。

新增测试文件:

test/dynamo/test_assume_constant_result.py

【资料变更】

不涉及。

【接口变更】

不涉及接口定义变更,仅新增兼容性测试。

【功能验证】

测试项 结果
test/dynamo/test_assume_constant_result.py PASS
NPU Tensor 连续编译执行 PASS
常量函数只计算一次 PASS
python -m py_compile PASS
git diff --check PASS

本地验证环境:

  • Ascend 910
  • PyTorch 2.10.0+cpu
  • torch_npu 2.10.0

测试结果:

test_assume_constant_result (TestAssumeConstantResult.test_assume_constant_result) ... ok

----------------------------------------------------------------------
Ran 1 test in 1.069s

OK
likedislike
当前Pull Request已关闭, 关闭人@2501_93637465
2501_936374652501_93637465
7月18日 创建了 pull request,commit 0c3125d6
2501_936374652501_93637465
7月18日 关联了issue:【社区任务】7月社区任务第二期-Ascend for PyTorch API 一致性开发(93),[API一致性] torch.compiler.assume_constant_result NPU兼容性测试补齐
atomgit-bot
atomgit-bot
7月18日 评论:

变更摘要

此 PR 为 torch.compiler.assume_constant_result API 新增独立的 NPU 兼容性测试文件 test/dynamo/test_assume_constant_result.py,验证该 API 在 Ascend NPU 设备上的核心行为:返回值恒定性、torch.compile 捕获能力、连续执行正确性,以及常量函数仅计算一次的特性。

主要改动

  • 新增测试类 TestAssumeConstantResult:定义在 test/dynamo/test_assume_constant_result.py 中,继承自 TestCase,包含一个完整的端到端测试用例 test_assume_constant_result
  • 验证 API 返回原函数对象:通过 self.assertIs(marked_constant_scale, constant_scale) 断言 assume_constant_result 返回的是原始函数对象本身。
  • 验证 torch.compile 捕获与 NPU 执行正确性:将被标记函数用于 torch.compile(fn, backend="eager", fullgraph=True) 编译,使用 NPU Tensor 作为输入,连续两次调用后通过 torch.equal 断言结果符合预期。
  • 验证常量仅计算一次:通过 nonlocal call_count 计数器,断言被 assume_constant_result 标记的函数在编译后仅被调用一次(self.assertEqual(call_count, 1)),证明其结果在编译期间被视作常量。
  • NPU 同步保障:在断言前调用 torch_npu.npu.synchronize() 确保异步 NPU 操作完成,使潜在错误能被及时捕获。
likedislike
atomgit-bot
atomgit-bot
7月18日 评论:

代码审查

Closing Summary

优先级 数量
P0 0
P1 0
P2 0
P3 1

审查文件test/dynamo/test_assume_constant_result.py — 发现 1 个 P3 问题(NPU 同步调用与 CPU fallback 逻辑不一致)。

总体风险评估:该变更是低风险的。测试逻辑正确,覆盖了 torch.compiler.assume_constant_result 在 NPU 上的核心功能验证。唯一的 P3 问题是一个边界条件守卫缺失,在非 NPU 环境下理论上可能导致不必要的问题,但对该测试的目标运行环境(NPU CI)无实际影响。

⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。

likedislike
此处折叠了51条消息 查看更多
ascend-robotascend-robot成员
7月27日 添加了label:docs-ci-pipeline-running
ascend-robot
ascend-robot成员
7月27日 评论:

✅ 跳过 docs ci 检查,没有需要检查的文档文件

likedislike
ascend-robotascend-robot成员
7月27日 删除了label:docs-ci-pipeline-running
ascend-robotascend-robot成员
7月27日 添加了label:docs-ci-pipeline-success
2501_936374652501_93637465
27 天前 关闭了 pull request