已合并
test(fx): add tests for symbolic shapes APIs #37573
test(fx): add tests for symbolic shapes APIs #37573
已合并
chenlan114514创建于 6月4日
chenlan114514
6月4日
# 【合入来源】 任务:[【开源实习】Torch-NPU API一致性对齐:补齐测试用例、API功能对齐、补齐文档(15) #1621 ](https://gitcode.com/Ascend/pytorch/issues/1621) 关联issue:[API一致性说明:torch.fx.experimental.symbolic_shapes.ShapeEnv 系列方法在 NPU 环境无需适配](https://gitcode.com/Ascend/pytorch/issues/2226) > **请勿携带内部流程信息(需求链接、问题单、内部issue等)** - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 本次提交对应 Torch-NPU API 补齐任务,涉及以下 5 个 API: - `torch.fx.experimental.symbolic_shapes.ShapeEnv.create_symbol` - `torch.fx.experimental.symbolic_shapes.ShapeEnv.bound_sympy` - `torch.fx.experimental.symbolic_shapes.ShapeEnv.check_equal` - `torch.fx.experimental.symbolic_shapes.ShapeEnv.cleanup` - `torch.fx.experimental.symbolic_shapes.ShapeEnv.bind_symbols` ## 【API 功能介绍】 - `create_symbol`:在ShapeEnv中创建一个带初始值的符号变量,返回sympy.Symbol对象。属于符号形状管理基础操作。 - `bound_sympy`:计算符号表达式的上下界,返回包含lower和upper属性的边界对象。属于符号表达式分析操作。 - `check_equal`:校验两个ShapeEnv实例的符号状态是否完全一致。属于符号环境对比操作。 - `cleanup`:清理ShapeEnv中未使用的符号变量,释放内存。属于符号环境管理操作。 - `bind_symbols`:将符号变量与具体值绑定,返回绑定后的映射字典。属于符号变量绑定操作。 ## 【社区用例分析】 所有5个API均属于**1.3类API(上游无专门测试用例,需自行编写并提交PR到test目录)**: 1. 上游PyTorch仓库中,`test/fx/`目录下无任何针对`ShapeEnv`核心方法的独立测试文件 2. 虽然在`test/dynamo/`、`test/export/`等目录中有间接使用ShapeEnv的代码,但都是作为其他功能的依赖组件调用 3. 没有针对上述5个API的参数合法性、返回值正确性、异常处理等核心行为进行独立验证 4. 因此需要新增专门的测试文件,覆盖所有API的基础功能场景 # 【修改方案】 1. 新增测试文件`test/fx/test_shape_env_methods.py`,为每个API编写独立的测试用例 2. 测试用例严格遵循PyTorch单元测试规范,使用`torch.testing._internal.common_utils.TestCase`基类 3. 每个测试用例聚焦核心功能,无冗余逻辑: - `test_create_symbol`:验证符号变量的类型和命名规则 - `test_bound_sympy`:验证简单符号表达式的边界计算正确性 - `test_check_equal`:验证空ShapeEnv实例的相等性校验 - `test_cleanup`:验证环境清理后可以正常创建新的符号变量 - `test_bind_symbols`:验证空符号列表的绑定行为 4. 测试用例无硬件强相关代码,同时兼容昇腾NPU环境与CPU环境 # 【资料变更】 不涉及。本PR仅补充测试用例,不包含文档修改。 # 【接口变更】 不涉及。未修改任何跨仓接口,也未改变用户可见的API行为。 # 【功能验证】 ## 测试环境 - 硬件:昇腾910B NPU - 软件:CANN 8.5.0 + torch 2.10.0 + torch-npu 2.10.0 - 测试平台:HiDevLab在线开发环境 ## 测试场景1:新增测试用例验证 执行命令: ```bash python -m pytest test/fx/experimental/test_symbolic_shapes.py::TestShapeEnvCoreMethods -v ``` 测试日志: ```bash =========================================================================== test session starts =========================================================================== platform linux -- Python 3.11.13, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python cachedir: .pytest_cache rootdir: /workspace/pytorch_2373 configfile: pyproject.toml collected 5 items test/fx/experimental/test_symbolic_shapes.py::TestShapeEnvCoreMethods::test_bind_symbols PASSED [ 20%] test/fx/experimental/test_symbolic_shapes.py::TestShapeEnvCoreMethods::test_bound_sympy PASSED [ 40%] test/fx/experimental/test_symbolic_shapes.py::TestShapeEnvCoreMethods::test_check_equal PASSED [ 60%] test/fx/experimental/test_symbolic_shapes.py::TestShapeEnvCoreMethods::test_cleanup PASSED [ 80%] test/fx/experimental/test_symbolic_shapes.py::TestShapeEnvCoreMethods::test_create_symbol PASSED [100%] ============================================================================ 5 passed in 4.22s ============================================================================ ``` ![v2.10.0.jpg](https://raw.gitcode.com/user-images/assets/7404318/5e3c7e4d-8efb-4ef3-9e7c-8cac3be8c70c/v2.10.0.jpg 'v2.10.0.jpg') # 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常
likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 chenlan114514 的贡献)
chenlan114514chenlan114514
6月4日 创建了 pull request,commit 797e79eb
chenlan114514chenlan114514
6月4日 关联了issue:【开源实习】Torch-NPU API一致性对齐:补齐测试用例、API功能对齐、补齐文档(15),API一致性说明:torch.fx.experimental.symbolic_shapes.ShapeEnv 系列方法在 NPU 环境无需适配
ascend-robotascend-robot成员
6月4日 添加了label:ascend-cla/yes
ascend-robot
ascend-robot成员
6月4日 评论:

CLA Signature Pass

zhufu-2026, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了265条消息 查看更多
ascend-robot
ascend-robot成员
6月23日 评论:
流水线 PR-pipeline_pytorch#38653 已完成
阶段 任务名 状态 详情
编译构建 Build_X86 >>>
Build_ARM >>>
Build_LibTorch_x86 >>>
Build_LibTorch_ARM >>>
Build_X86_torchair 🛑 >>>
Build_ARM_torchair 🛑 >>>
patch_test 🛑 >>>
恶意代码检查 Antipoison >>>
编码安全与规范检查 CodeCheck >>>
check_error >>>
CodeCheck_lintrunner >>>
开源片段检查 SCA >>>
开发者测试 UT_X86_Part_01 🛑 >>>
UT_X86_Part_02 🛑 >>>
UT_ARM_A3_Part_01 🛑 >>>
UT_ARM_A3_Part_02 🛑 >>>
UT_ARM_A2_Part_01 >>>
UT_ARM_A2_Part_02 >>>
UT_ARM_A2_Part_03 >>>
UT_inductor_Part_01 🛑 >>>
UT_inductor_Part_02 🛑 >>>
UT_inductor_Part_03 🛑 >>>
UT_inductor_Part_04 🛑 >>>
UT_DIST_ARM_Part_01 🛑 >>>
UT_DIST_ARM_Part_02 🛑 >>>
UT_DIST_ARM_Part_03 🛑 >>>
UT_DIST_ARM_Part_04 🛑 >>>
UT_ARM_A2_Select_Part_01 >>>
UT_ARM_A2_Select_Part_02 >>>
流水线 PR-pipeline_pytorch >>>
likedislike
liwei386成员
6月25日 评论:

/approve

likedislike
ascend-robotascend-robot成员
6月25日 添加了label:approvedlgtm
ascend-robotascend-robot成员
6月25日 合入了pull request
ascend-robot
ascend-robot成员
6月25日 评论:
流水线 pytorch_gitcode_PR_multiVersion#11305 [ commitID:d1edbdb9 ] 已完成
likedislike