已合并
test(meta_registrations): add testcase for torch._meta_registrations.register_meta #42108
test(meta_registrations): add testcase for torch._meta_registrations.register_meta #42108
已合并
木路折创建于 7月19日
木路折
木路折
7月19日

【合入来源】

  • 关联 issue: https://gitcode.com/Ascend/pytorch/issues/2902

  • pytorch 社区没有针对 torch._meta_registrations.register_meta 的独立测试用例,故新增该测试文件,用于验证该 API 的正确性。

【修改方案】

一、API 功能说明

torch._meta_registrations.register_meta(op_or_ops) 是 PyTorch 内部装饰器,用于将一个函数注册为一个或多个 ATen 算子的 meta 内核,并写入全局 meta_table。注册后,调用对应算子的 meta 实现时会执行被装饰的函数。该 API 为 PyTorch 私有接口。

二、测试用例完备性说明

PyTorch 官方 test/ 目录中没有直接调用 torch._meta_registrations.register_meta 的测试用例,现有测试仅通过 elementwise_meta 等内部路径间接使用,无法验证装饰器本身的注册行为。本次新增 test/test_library_meta_registrations.py,直接验证:

  • 单算子注册到 meta_table
  • 多算子注册到同一 meta 内核;
  • 装饰器返回原函数;
  • 测试结束后恢复 meta_table 原状态,避免跨测试副作用。

三、版本适用范围

torch._meta_registrations.register_meta 为 PyTorch 内部私有接口,在 PyTorch v2.7.1、v2.9.0、v2.10.0、v2.11.0、v2.12.0、master 各目标分支均存在且函数签名一致,因此本测试用例需提交到上述全部分支。

四、NPU 适配

register_metameta_table 均为纯 Python 层注册逻辑,不涉及任何硬件相关计算、算子调用或设备内存操作,与 CPU/GPU/NPU 完全解耦。昇腾 NPU 环境下无需修改 API 源码,也不需要在测试中导入 torch_npu 或创建 NPU 张量,可直接复用。

【资料变更】

不涉及

torch._meta_registrations.register_meta 为 PyTorch 私有接口,按项目规范 docs/zh/api/native_api 中无需额外刷新资料。

【接口变更】

不涉及

仅新增测试用例,未修改任何业务代码。

【功能验证】

  • v2.7.1 本地运行

    • 环境:Ubuntu 22.04 / Python 3.11.15 / PyTorch 2.7.1+cpu / Torch-NPU 2.7.1.post4 / CANN 9.0 / Ascend 910B3
    • 命令:TORCH_DEVICE_BACKEND_AUTOLOAD=0 python test/test_library_meta_registrations.py
    • 结果:Ran 2 tests in 0.022s, OK
  • v2.9.0 / v2.11.0 / v2.12.0 / master

    • 未在本地运行,对应分支已推送,由目标分支 CI 验证。

【CheckList】

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 木路折 的贡献)
木路折木路折
7月19日 创建了 pull request,commit 6df953e1
木路折木路折
7月19日 关联了issue:【社区任务】7月社区任务第二期-Ascend for PyTorch API 一致性开发(3)
atomgit-bot
atomgit-bot
7月19日 评论:

变更摘要

此 PR 新增测试文件 test/test_library_meta_registrations.py,为 torch._meta_registrations.register_meta 装饰器添加单元测试,覆盖单个算子注册、多算子批量注册以及注册后 meta_table 的状态恢复等场景,确保该 API 的行为符合预期。

主要改动

  • 新增 TestLibraryMetaRegistrations 测试类:继承自 TestCase,包含两个测试用例,验证 register_meta 的核心行为
  • test_register_meta_adds_to_meta_table:验证 register_meta 装饰器将函数正确注册到 meta_table,并确认装饰器返回被装饰函数本身;测试结束后通过 finally 块恢复 meta_table 原状态
  • test_register_meta_supports_op_list:验证 register_meta 支持传入算子列表,将同一函数同时注册到多个算子(aten.sub.Tensoraten.mul.Tensor),并在测试结束后逐个恢复 meta_table 中的原始值
likedislike
atomgit-bot
atomgit-bot
7月19日 评论:

代码审查

✅ 未发现问题

likedislike
此处折叠了130条消息 查看更多
ascend-robotascend-robot成员
22 天前 添加了label:approved
Jingwei Huang
Jingwei Huang成员
21 天前 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
21 天前 添加了label:lgtm
ascend-robotascend-robot成员
21 天前 合入了pull request
ascend-robot
ascend-robot成员
21 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#13355 [ commitID:743dadf4 ] 已完成
likedislike