已合并
test(refs): add test cases for torch._refs._maybe_broadcast #42126
木路折创建于 7月19日
test(refs): add test cases for torch._refs._maybe_broadcast #42126
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 木路折 的贡献)7月19日 关联了issue:【社区任务】7月社区任务第二期-Ascend for PyTorch API 一致性开发(8)
atomgit-bot
7月19日 评论:
7月19日 评论:
变更摘要
本 PR 新增测试文件 test/test_library_refs.py,为 PyTorch 私有 API torch._refs._maybe_broadcast 补充官方缺失的直接测试用例。测试类 TestLibraryRefs 覆盖了该函数的 8 种核心广播行为,包括同形状返回、兼容形状广播、Number/None 参数透传、CPU scalar 张量的保留与展开、NPU scalar 张量的广播以及不兼容形状的异常抛出。非 scalar 参与计算的张量均放置在 NPU 设备上以验证设备正确性,CPU scalar 张量仅在测试 preserve_cpu_scalar_tensors 行为时保留在 CPU。
主要改动
- 新增
TestLibraryRefs测试类:在test/test_library_refs.py中定义继承自TestCase的测试类,并提供_npu_device辅助方法获取默认 NPU 设备。 - 新增同形状与兼容形状广播测试:
test_maybe_broadcast_same_shape_npu验证相同形状 NPU Tensor 直接返回原对象,test_maybe_broadcast_different_shapes_npu验证兼容形状 Tensor 被expand到共同形状。 - 新增非张量类型参数测试:
test_maybe_broadcast_number和test_maybe_broadcast_none分别验证Number和None类型参数被原样返回,不参与广播。 - 新增
preserve_cpu_scalar_tensors行为测试:test_maybe_broadcast_cpu_scalar_preserved和test_maybe_broadcast_cpu_scalar_expanded分别验证该参数为True时 CPU scalar 张量被保留、为False时被展开到共同形状。 - 新增 NPU scalar 与不兼容形状测试:
test_maybe_broadcast_npu_scalar验证 0 维 NPU scalar 张量被广播到共同形状,test_maybe_broadcast_incompatible_shapes验证不兼容形状抛出RuntimeError。


ascend-robot
7月19日 评论:
7月19日 评论:
atomgit-bot
7月19日 评论:
7月19日 评论:
此处折叠了190条消息 查看更多
ascend-robot
19 天前 评论:
19 天前 评论:
流水线 PR-pipeline_pytorch#53255 [ commitID:0fa87746 ] 已完成
>>>代码风格自动修复执行成功(无修复内容)
| 阶段 | 任务名 | 状态 | 详情 |
|---|---|---|---|
| 编译构建 | Build_X86 | ✅ | >>> |
| Build_ARM | ✅ | >>> | |
| Build_LibTorch_x86 | ✅ | >>> | |
| Build_LibTorch_ARM | ✅ | >>> | |
| Build_X86_torchair | 🛑 | >>> | |
| Build_ARM_torchair | 🛑 | >>> | |
| patch_test | 🛑 | >>> | |
| 恶意代码检查 | Antipoison | ✅ | >>> |
| 编码安全与规范检查 | codecheck_pre-commit | ✅ | >>> |
| check_error | ✅ | >>> | |
| lintrunner | ✅ | >>> | |
| 开源片段检查 | SCA | ✅ | >>> |
| 开发者测试 | 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 | ✅ | >>> |
- compile、compile_inductor、compile_torchair : 运行流水线
- retry : 重试流水线所有失败子任务
- retry <任务名> : 仅重试指定失败子任务
- stop : 停止流水线


li_jing_hw
17 天前 评论:
17 天前 评论:
/approve


17 天前 添加了label:approvedlgtm
17 天前 合入了pull request
ascend-robot
17 天前 评论:
17 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#13581 [ commitID:0fa87746 ] 已完成


【合入来源】
关联 issue: https://gitcode.com/Ascend/pytorch/issues/2911
任务分类:1.3(PyTorch 官方缺少对
torch._refs._maybe_broadcast的直接测试)pytorch 社区没有针对
torch._refs._maybe_broadcast的独立测试用例,故新增该测试文件,用于验证该 API 的正确性。【修改方案】
一、API 功能说明
torch._refs._maybe_broadcast(*args, preserve_cpu_scalar_tensors=True)是 PyTorch 内部辅助函数,用于将一组TensorLike/Number/None参数广播到共同形状。它计算各 Tensor 输入的公共广播形状,对兼容形状的张量调用.expand(),对 CPU scalar 张量根据preserve_cpu_scalar_tensors决定是否保留,对不兼容形状抛出RuntimeError。该 API 为 PyTorch 私有接口。二、测试用例完备性说明
PyTorch 官方
test/目录中没有直接调用torch._refs._maybe_broadcast的测试用例,现有测试仅通过elementwise_meta等内部路径间接使用,无法验证广播行为、CPU scalar 保留/展开策略及异常路径。本次新增test/test_library_refs.py,直接验证:Number参数原样返回;None参数原样返回;preserve_cpu_scalar_tensors=True时 CPU scalar 张量被保留;preserve_cpu_scalar_tensors=False时 CPU scalar 张量被展开;preserve_cpu_scalar_tensors=False时被广播到共同形状;RuntimeError。三、版本适用范围
torch._refs._maybe_broadcast为 PyTorch 内部私有接口,在 PyTorch v2.7.1、v2.9.0、v2.10.0、v2.11.0、v2.12.0、master 各目标分支均存在且函数签名一致,因此本测试用例需提交到上述全部分支。四、NPU 适配
测试涉及 Tensor 创建与广播,非 scalar 参与计算的 Tensor 均通过
device_type = acc.type if (acc := torch.accelerator.current_accelerator()) else "cpu"迁移到 NPU;CPU scalar 张量仅在测试preserve_cpu_scalar_tensors行为时保留在 CPU,这是该参数的测试目的。【资料变更】
【接口变更】
【功能验证】
test-refs-maybe-broadcast-v2.12.0推送到 fork,由 CI 进行运行时验证【CheckList】