已合并
【API一致性任务】test: add torch._C._host_emptyCache consistency cases on NPU #43547
cuiyunhao-2026创建于 8月1日
【API一致性任务】test: add torch._C._host_emptyCache consistency cases on NPU #43547
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 cuiyunhao-2026 的贡献)8月1日 创建了 pull request,commit 7f3ec3d1
ascend-robot
8月1日 评论:
8月1日 评论:
atomgit-bot
8月1日 评论:
8月1日 评论:
变更摘要
该 PR 新增了一个 NPU 上的 API 一致性测试文件 test/contrib/test_host_empty_cache_api.py,用于验证 torch._C._host_emptyCache(由 torch_npu.contrib.transfer_to_npu 绑定到 C++ 实现 torch_npu._C._npu_hostEmptyCache)在 torch-npu 各版本间的映射关系与可调用行为保持一致。测试通过 TestHostEmptyCacheApi 用例类分别校验 API 的绑定映射与无参调用,并在 NPU 构建未映射该 API 时跳过测试;后续同类 torch._C._* 一致性检查可追加到该文件。
主要改动
- 新增一致性测试文件:新增
test/contrib/test_host_empty_cache_api.py(+49 行),包含TestHostEmptyCacheApi测试类、import torch_npu与from torch_npu.contrib import transfer_to_npu导入以及测试入口run_tests()。 - 映射关系校验:
test_host_empty_cache_is_mapped用例断言torch._C._host_emptyCache与torch_npu._C._npu_hostEmptyCache相等,验证transfer_to_npu导入后 API 指向 NPU 实现。 - 可调用性校验:
test_host_empty_cache_is_callable用例直接无参调用torch._C._host_emptyCache(),验证其在 NPU 环境下可调用且不抛异常,镜像torch_npu.npu.empty_cache()的 host-cache 路径。 - 环境适配处理:两个用例均通过
hasattr(torch._C, "_host_emptyCache")判断映射是否存在,未映射时调用self.skipTest(...)跳过测试,避免在不支持的构建中报错。


不准确?
atomgit-bot
8月1日 评论:
8月1日 评论:
8月1日 添加了label:ascend-cla/yes
此处折叠了541条消息 查看更多
AtlasAccount
17 天前 评论:
17 天前 评论:
流水线 PR-pipeline_pytorch#64757 [ commitID:236ad6e1 ] 已完成
>>>代码风格自动修复执行成功(无修复内容)
| 阶段 | 任务名 | 状态 | 详情 |
|---|---|---|---|
| 编译构建 | Build_X86 | ✅ | >>> |
| Build_ARM | ✅ | >>> | |
| Build_X86_torchair | 🛑 | >>> | |
| Build_ARM_torchair | 🛑 | >>> | |
| patch_test | 🛑 | >>> | |
| Build_X86_213 | 🛑 | >>> | |
| Build_ARM_213 | 🛑 | >>> | |
| 恶意代码检查 | 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 | ✅ | >>> | |
| UT_ARM_A2_Part_213 | 🛑 | >>> | |
| UT_inductor_Part_213 | 🛑 | >>> | |
| UT_DIST_ARM_Part_213 | 🛑 | >>> | |
| UT_ARM_A2_Select_Part_213 | 🛑 | >>> | |
| 流水线 | PR-pipeline_pytorch | ✅ | >>> |
- compile、compile_inductor、compile_torchair : 运行流水线
- retry : 重试流水线所有失败子任务
- retry <任务名> : 仅重试指定失败子任务
- stop : 停止流水线


梁松伟
16 天前 评论:
16 天前 评论:
/approve


16 天前 添加了label:approvedlgtm
16 天前 合入了pull request
AtlasAccount
16 天前 评论:
16 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#14766 [ commitID:236ad6e1 ] 已完成


【合入来源】
关联 Issue:https://gitcode.com/Ascend/pytorch/issues/2754
【修改方案】
适配 API:
torch._C._host_emptyCache(torch-npu 已通过torch_npu.contrib.transfer_to_npu注入该镜像映射,但缺少独立的一致性验证用例,本 PR 自写用例补齐,按规范 1.3)。0. 按导师最新要求的保留判定
导师公告:资料 PR 已全部打回,且不再接收 NPU 适配 patch 与非硬件相关 API 的新增用例。本 PR 经复核属于硬件相关用例,予以保留:
torch._C._host_emptyCache是 torch-npu 通过torch_npu.contrib.transfer_to_npu注入的 NPU 专属镜像映射(绑定torch._C._host_emptyCache = torch_npu._C._npu_hostEmptyCache),直接对应昇腾硬件的主机侧缓存释放路径,是典型的硬件相关接口;TypeError拒绝,属于规范 1.2②「涉及硬件接口,在 test 目录新增用例」的保留范围,不属于被关闭的非硬件相关用例;test/自写用例,非test_upstreamNPU 适配 patch,符合"不再接收 NPU 适配 patch"的要求。1. 上游社区用例情况分析
torch._C._host_emptyCache是 torch-npu 通过torch_npu.contrib.transfer_to_npu注入的 NPU 专属镜像映射(绑定torch._C._host_emptyCache = torch_npu._C._npu_hostEmptyCache),并非 PyTorch 上游原生 API,上游社区无对应用例。仓库内现有test/contrib/test_transfer_to_npu.py:399的test_host_empty_cache_is_patched仅做一次性等式断言,未覆盖映射缺失时的优雅跳过与可调用性验证。结论:该 API 属 NPU 侧自写用例场景,按规范 1.3(test 目录自写用例) 在
test/目录新增独立的一致性守护用例文件,不做 test_upstream patch、不做 API 补齐。2. NPU 适配方案
torch._C._host_emptyCache由import torch_npu.contrib.transfer_to_npu注入(昇腾环境import torch自动导入 torch_npu,但映射需显式 import transfer_to_npu 触发,因此本用例保留该导入,符合规范 8.9「不导入不必要 torch_npu」的例外情形)。本 PR 仅补充用例,覆盖:torch._C._host_emptyCache与torch_npu._C._npu_hostEmptyCache指向同一实现(self.assertEqual);torch._C._host_emptyCache()无参调用不抛异常,镜像torch_npu.npu.empty_cache()的主机缓存释放路径;非法位置/关键字参数必须被TypeError拒绝;self.skipTest(...)优雅跳过,避免无该绑定环境误报。3. 提交方式(test 目录自写用例,规范 1.3)
按规范 1.3,在
test/目录新增test/contrib/test_host_empty_cache_api.py(同类torch._C._*NPU 镜像映射一致性用例可归集于此,便于扩展)。文件遵循 torch-npu 测试规范:Huawei BSD-3 版权头、模块 docstring 说明用途与可扩展、从torch.testing._internal.common_utils导入run_tests/TestCase(不直接 import unittest)、导入顺序 torch → torch.testing → torch_npu、类前后空 2 行、方法间空 1 行、self.assert*断言、无 print / 无 try-except / 无裸 assert。按规范 1.3,提交到
2.7.1 / 2.11.0 / 2.12.0 以及 master四个分支。各分支基线对应目标分支 HEAD,新增文件内容逐字节一致。2.9.0 / 2.10.0 已转入维护阶段,不作补齐要求。4. API 补齐
不需要。
torch._C._host_emptyCache由torch_npu.contrib.transfer_to_npu注入,本 PR 仅补充测试用例,不提交任何 API 实现代码(映射本身由 torch-npu 提供)。5. 多版本分支合入
【资料变更】
不涉及。
依据:
torch._C._host_emptyCache为 PyTorch 私有(下划线前缀)接口,且属 NPU 专属镜像映射,按规范 2.3「PyTorch 私有接口不需要补充资料」。经核查docs/zh/native_apis/未收录该 API,故不在 PR 中补资料。【接口变更】
不涉及。
依据:
torch._C._host_emptyCache由 torch-npu 注入的镜像映射提供,本 PR 仅补充测试用例,无跨代码仓或客户面可见接口变更。【功能验证】
python test/contrib/test_host_empty_cache_api.py;test_host_empty_cache_is_mapped—— PASSEDtest_host_empty_cache_is_callable—— PASSED