已合并
fix: support to_sparse on non-default NPU devices #35947
fix: support to_sparse on non-default NPU devices #35947
已合并
hz893创建于 5月18日
hz893成员
5月18日

【合入来源】

如有社区issue,请关联issue链接
请勿携带内部流程信息(需求链接、问题单、内部issue等)

【修改方案】

  1. aten::_to_sparseaten::_to_sparse.sparse_dim 加入 NPU supported 注册,避免 dense NPU Tensor 转 sparse 时走 CPU fallback。
  2. 新增 NPU 侧 _to_sparse 实现,复用 at::native::dense_to_sparse,使 sparse tensor、indices、values 保持在输入 Tensor 所在 NPU 设备上。
  3. 新增非默认 NPU 设备场景 UT,覆盖输入位于 npu:1to_sparse 结果的 device 和数值一致性。

【资料变更】

不涉及。

【接口变更】

不涉及。

【功能验证】

  • 已在 v2.7.1 环境完成 torch_npu 编包并安装验证,torch_npu.__version__2.7.1.post5
  • 已确认 aten::_to_sparseaten::_to_sparse.sparse_dimPrivateUse1 dispatcher 注册到 RegisterNPU.cpp [kernel],不再走 CPU fallback。
  • python -m pytest test_ops.py -v -k test_multiple_devices_to_sparse_npu_float32:1 passed。
  • python -m pytest test/test_sparse_coo.py -v -k test_sparse_to_sparse_non_default_npu_device:1 passed。
  • v2.9.0、v2.10.0、v2.11.0、v2.12.0、master 目标分支已完成 cherry-pick,无冲突;未分别编包验证。

补充验证:

  • 已在 fix_to_sparse_master 分支完成编译并安装生成的 torch_npu-2.13.0-cp311-cp311-manylinux_2_28_aarch64.whl
  • 通过临时 C++ 扩展直接调用新增 AOT shim aoti_torch_npu__to_sparse,在当前 device 为 npu:0、输入 tensor 位于 npu:1 的场景下验证返回 sparse tensor、indices、values 均保持在 npu:1,且 to_dense() 与输入一致。
  • 测试结果:PASS aoti_torch_npu__to_sparse device=npu:1 nnz=3

【CheckList】

PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 hz893 的贡献)
Hhz893成员
5月18日 创建了 pull request,commit 34ac2266
ascend-robot
ascend-robot成员
5月18日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-Ascend/pytorch liujunzhu, chujinjin (2/2) liujunzhu (1/1)
test chujinjin, wanglijun55, liujunzhu (3/2) liujunzhu (1/1)
torch_npu/csrc/inductor liujunzhu, chujinjin (2/2) liujunzhu (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

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

likedislike
ascend-robotascend-robot成员
5月18日 添加了label:ascend-cla/yes
ascend-robot
ascend-robot成员
5月18日 评论:

当前仓库存在以下 保护分支

Protected Branch Version Release
master
v2.7.1
v2.11.0
v2.10.0
v2.9.0
v2.12.0

评论 /sync <branch1> <branch2> ... 可将当前 PR 修改同步到其它分支(创建同步 PR):
a) 如果当前 PR 是 Open 状态,同步操作将延迟到 PR 被合并时执行
b) 如果当前 PR 已经 Merged,将立即执行同步操作

注意:

  1. /sync 命令可以指定同步到多个分支,仅最后一个 /sync 命令生效
  2. 如果创建的同步 PR 不正确,可通过向同步 PR 的源分支提交轻量级 PR 完善,或使用 /close 命令关闭
likedislike
hz893成员
5月18日 评论:

compile

likedislike
hz893成员
5月18日 评论:

compile

likedislike
ascend-robotascend-robot成员
5月18日 添加了label:ci-pipeline-running
ascend-robotascend-robot成员
5月18日 删除了label:ci-pipeline-running
ascend-robotascend-robot成员
5月18日 添加了label:ci-pipeline-failed
ascend-robot
ascend-robot成员
5月18日 评论:
流水线 PR-pipeline_pytorch#23339 运行失败
阶段 任务名 状态 详情
编译构建 Build_X86 >>>
Build_ARM >>>
Build_LibTorch_x86 >>>
Build_LibTorch_ARM >>>
Build_X86_torchair 🛑 >>>
Build_ARM_torchair 🛑 >>>
patch_test 🛑 >>>
恶意代码检查 Antipoison >>>
编码安全与规范检查 CodeCheck >>>
check_error >>>
开源片段检查 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_pool 🕚 >>>
UT_inductor_Part_02_pool 🕚 >>>
UT_inductor_Part_03_pool 🕚 >>>
UT_inductor_Part_04_pool 🕚 >>>
UT_DIST_ARM_Part_01 🕚 >>>
UT_DIST_ARM_Part_02 🕚 >>>
UT_DIST_ARM_Part_03 🕚 >>>
UT_DIST_ARM_Part_04 🕚 >>>
流水线 PR-pipeline_pytorch >>>
likedislike
Hhz893成员
5月19日 update merge request[project id: 7404318, iid: 35947, commit_id: 3467d2711341db60661391e143824c7ff27ccdbb] virtual merging success
Hhz893成员
5月19日 推送  1 个提交:e6a0b5b5-fix: update AOTI C shim for _to_sparse
Hhz893成员
5月19日 update merge request[project id: 7404318, iid: 35947, commit_id: 76b17faa298f4fd4df01dad0f58f346f6877eb95] virtual merging success
ascend-robotascend-robot成员
5月19日 添加了label:stat/needs-squash
ascend-robot
ascend-robot成员
5月19日 评论:

Ascend docs pipeline is running...

likedislike
ascend-robotascend-robot成员
5月19日 添加了label:docs-ci-pipeline-running
ascend-robot
ascend-robot成员
5月19日 评论:

✅ 跳过 docs ci 检查,没有需要检查的文档文件

likedislike
ascend-robotascend-robot成员
5月19日 删除了label:docs-ci-pipeline-running
ascend-robotascend-robot成员
5月19日 添加了label:docs-ci-pipeline-success
hz893成员
5月19日 评论:

compile

likedislike
ascend-robotascend-robot成员
5月19日 删除了label:ci-pipeline-failed
ascend-robotascend-robot成员
5月19日 添加了label:ci-pipeline-running
Hhz893成员
5月19日 update merge request[project id: 7404318, iid: 35947, commit_id: 685ef735926e5b319858fa7376243d0b95b1d238] virtual merging success
Hhz893成员
5月19日 强制推送  1 个提交:9f519489-fix: support to_sparse on non-default NPU devices
Hhz893成员
5月19日 update merge request[project id: 7404318, iid: 35947, commit_id: 78241de0661fed61a363cb6e31cf44acda41f0be] virtual merging success
ascend-robotascend-robot成员
5月19日 删除了label:stat/needs-squash
hz893成员
5月19日 评论:

compile

likedislike
ascend-robot
ascend-robot成员
5月19日 评论:

Ascend docs pipeline is running...

likedislike
ascend-robotascend-robot成员
5月19日 删除了label:docs-ci-pipeline-success
ascend-robotascend-robot成员
5月19日 添加了label:docs-ci-pipeline-running
ascend-robot
ascend-robot成员
5月19日 评论:

✅ 跳过 docs ci 检查,没有需要检查的文档文件

likedislike
ascend-robotascend-robot成员
5月19日 删除了label:docs-ci-pipeline-running
ascend-robotascend-robot成员
5月19日 添加了label:docs-ci-pipeline-success
ascend-robotascend-robot成员
5月19日 删除了label:ci-pipeline-running
ascend-robot
ascend-robot成员
5月19日 评论:
流水线 PR-pipeline_pytorch#23468 已终止运行
阶段 任务名 状态 详情
编译构建 Build_X86 🟨 >>>
Build_ARM 🟨 >>>
Build_LibTorch_x86 🟨 >>>
Build_LibTorch_ARM 🟨 >>>
Build_X86_torchair 🛑 >>>
Build_ARM_torchair 🛑 >>>
patch_test 🛑 >>>
恶意代码检查 Antipoison >>>
编码安全与规范检查 CodeCheck >>>
check_error >>>
开源片段检查 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_pool 🕚 >>>
UT_inductor_Part_02_pool 🕚 >>>
UT_inductor_Part_03_pool 🕚 >>>
UT_inductor_Part_04_pool 🕚 >>>
UT_DIST_ARM_Part_01 🕚 >>>
UT_DIST_ARM_Part_02 🕚 >>>
UT_DIST_ARM_Part_03 🕚 >>>
UT_DIST_ARM_Part_04 🕚 >>>
流水线 PR-pipeline_pytorch 🟨 >>>
likedislike
ascend-robotascend-robot成员
5月19日 添加了label:ci-pipeline-running
ascend-robotascend-robot成员
5月19日 删除了label:ci-pipeline-running
ascend-robotascend-robot成员
5月19日 添加了label:ci-pipeline-passed
ascend-robot
ascend-robot成员
5月19日 评论:
流水线 PR-pipeline_pytorch#23484 已完成
阶段 任务名 状态 详情
编译构建 Build_X86 >>>
Build_ARM >>>
Build_LibTorch_x86 >>>
Build_LibTorch_ARM >>>
Build_X86_torchair 🛑 >>>
Build_ARM_torchair 🛑 >>>
patch_test 🛑 >>>
恶意代码检查 Antipoison >>>
编码安全与规范检查 CodeCheck >>>
check_error >>>
开源片段检查 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_pool 🛑 >>>
UT_inductor_Part_02_pool 🛑 >>>
UT_inductor_Part_03_pool 🛑 >>>
UT_inductor_Part_04_pool 🛑 >>>
UT_DIST_ARM_Part_01 🛑 >>>
UT_DIST_ARM_Part_02 🛑 >>>
UT_DIST_ARM_Part_03 🛑 >>>
UT_DIST_ARM_Part_04 🛑 >>>
流水线 PR-pipeline_pytorch >>>
likedislike
wanglijun55成员
5月30日 评论:

/lgtm

likedislike
Hhz893成员
5月30日 修改了pull request 的描述
Hhz893成员
5月30日 修改了pull request 的描述
liujunzhu
liujunzhu成员
5月30日 评论:

/approve

likedislike
ascend-robotascend-robot成员
5月30日 添加了label:approved
Hhz893成员
5月30日 修改了pull request 的描述
chujinjin成员
6月1日 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
6月1日 添加了label:lgtm
ascend-robotascend-robot成员
6月1日 合入了pull request
ascend-robot
ascend-robot成员
6月1日 评论:
流水线 pytorch_gitcode_PR_multiVersion#9748 [ commitID:9f519489 ] 已完成
likedislike