已合并
[feat] 支持 torch.nested.to_padded_tensor 在 Ascend NPU 上的算子注册与原生实现复用 #5879
[feat] 支持 torch.nested.to_padded_tensor 在 Ascend NPU 上的算子注册与原生实现复用 #5879
已合并
yucaopanmu创建于 25 天前
yucaopanmu成员
25 天前

【合入来源】

【修改方案】

采用 双仓联动 的方式打通该路径:

  • pytorch(torch_npu)仓 在 codegen 层(torchnpugen/gen_backend_stubs.py)为 NestedTensorRegister 补充 to_padded_tensor 的注册,并引入 op_plugin/OpApiInterface.h 头文件,将算子注册到 NestedTensorPrivateUse1 dispatch key。
  • op-plugin 仓 在 op_api 命名空间中提供 to_padded_tensor 的 kernel 实现,复用 PyTorch 原生设备泛化实现 at::native::NestedTensor_to_padded_tensor_generic,完成实际的补齐转换。

【资料变更】

不涉及

【接口变更】

不涉及

【功能验证】

本地端到端验证已通过

【CheckList】

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

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 yucaopanmu 的贡献)
Yyucaopanmu成员
25 天前 创建了 pull request,commit 6095fec3
atomgit-bot
atomgit-bot
25 天前 评论:

变更摘要

本 PR 为 to_padded_tensor 算子新增 NPU op_api 支持:在 op_plugin_functions.yaml 中注册该算子的 op_api 接口配置,并新增 NestedTensorToPaddedTensorKernelNpuOpApi.cpp 实现文件,在 op_api 命名空间中提供 to_padded_tensor 实现,将 SymInt[]? 参数转换为 OptionalIntArrayRef 后调用 PyTorch 原生实现 NestedTensor_to_padded_tensor_generic。

主要改动

  • 注册算子接口: 在 op_plugin/config/op_plugin_functions.yaml 中新增 to_padded_tensor(Tensor self, float padding, SymInt[]? output_size=None) -> Tensor 的接口注册,配置 op_api: [v2.1, newest] 版本支持。
  • 新增 opapi 内核实现: 新增文件 op_plugin/ops/opapi/NestedTensorToPaddedTensorKernelNpuOpApi.cpp,在 op_api 命名空间中实现 to_padded_tensor 函数,接收 at::OptionalSymIntArrayRef 类型的 output_size 参数。
  • 参数类型转换与实现委托: 将 SymInt[]? 通过 expect_int() 逐元素转换为 std::vector<int64_t>,构造 at::OptionalIntArrayRef(无值时使用 c10::nullopt),最终委托给 at::native::NestedTensor_to_padded_tensor_generic 执行。
likedislike
不准确?
atomgit-bot
atomgit-bot
25 天前 评论:

🤖 AI Code Review

⚠️ 审查未能完成

本次代码审查未能完成,可能是临时性故障。

你可以在评论区输入 /ai review 重新发起审查。若多次失败,请联系管理员并附上下方追踪 ID。

追踪 ID: task-281381

likedislike
不准确?
ascend-robotascend-robot成员
25 天前 添加了label:ascend-cla/yes
此处折叠了106条消息 查看更多
ascend-robot
ascend-robot成员
23 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike
action-bot
23 天前 评论:
🚀 CI 流水线已启动
📋 执行详情: 点击查看流水线
likedislike
Aaction-bot
23 天前 删除了label:ci-pipeline-passed
dilililiwhydilililiwhy成员
21 天前 添加了label:ci-pipeline-passed
ascend-robot
ascend-robot成员
21 天前 评论:

The following label is not ready.

ci-pipeline-passed: You can't add ci-pipeline-passed label manually. Please remove it and wait for the CI test to be completed.

likedislike