已合并
test(fx): add tests for symbolic shapes APIs #37573
chenlan114514创建于 6月4日
test(fx): add tests for symbolic shapes APIs #37573
已合并
chenlan114514
6月4日
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 ============================================================================
```

# 【CheckList】
- [x] 代码注释完备,正确记录错误日志
- [x] 代码实现进行了返回值、空指针等校验
- [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等
- [x] PR持续集成流水线(CI)执行通过,代码检查无异常


Pull Request已成功合入, 合并人@ascend-robot
(感谢 chenlan114514 的贡献)6月4日 创建了 pull request,commit 797e79eb
6月4日 关联了issue:【开源实习】Torch-NPU API一致性对齐:补齐测试用例、API功能对齐、补齐文档(15),API一致性说明:torch.fx.experimental.symbolic_shapes.ShapeEnv 系列方法在 NPU 环境无需适配
6月4日 关联了issue:【开源实习】Torch-NPU API一致性对齐:补齐测试用例、API功能对齐、补齐文档(15),API一致性说明:torch.fx.experimental.symbolic_shapes.ShapeEnv 系列方法在 NPU 环境无需适配
ascend-robot
6月4日 评论:
6月4日 评论:
6月4日 添加了label:ascend-cla/yes
ascend-robot
6月4日 评论:
6月4日 评论:
此处折叠了265条消息 查看更多
ascend-robot
6月23日 评论:
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 | ✅ | >>> |


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

