| feat: support linalg_svd opapi implementation
Co-authored-by: yvjc<yujincheng7@huawei.com>
# message auto-generated for no-merge-commit merge:
!4490 merge svdfix into master
feat: support linalg_svd opapi implementation
Created-by: yvjc
Commit-by: yvjc
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20260203
-->
# 【合入来源】
> <font color="red">**如有社区issue,请关联issue链接**</font>\
> <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font>
- [ ] 需求
- [x] 问题单
- [ ] issue/工单
- [ ] 重构优化
- [ ] 资料更新
# 【修改方案】
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)
本 PR 为 torch.linalg.svd 算子添加 opapi 分支支持,提升 NPU 算子兼容性。主要修改内容如下:
1. 新增 opapi 实现:创建 LinalgSvdKernelNpuOpApi.cpp,实现 _linalg_svd 入口函数,包含输入参数校验(数据类型、维度检查)及输出张量预分配逻辑
2. 完善 aclops 分支:在 op_plugin/ops/aclops/LinalgSvdKernelNpu.cpp 中添加 _linalg_svd 非out版本实现,调用 _svd_helper 辅助函数
3. 优化内存拷贝逻辑:重构 linalg_svd_out_common 函数,引入 U_ready/Vh_ready 判断机制,避免不必要的内存拷贝操作,提升性能
4. 配置更新:在 op_plugin_functions.yaml 中新增 _linalg_svd 函数签名配置,支持 acl_op [v2.1, newest] 及 op_api all_version
5. 头文件声明:在 inner_compute.h 中添加 _svd_helper 函数声明
# 【资料变更】
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”
不涉及
# 【接口变更】
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”
不涉及(用户侧 torch.linalg.svd 接口保持不变,仅底层实现新增 opapi 分支)
# 【功能验证】
> 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\
> 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图
# 【CheckList】
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]
- [x] 代码注释完备,正确记录错误日志
- [x] 代码实现进行了返回值、空指针等校验
- [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等
- [x] PR持续集成流水线(CI)执行通过,代码检查无异常
See merge request: Ascend/op-plugin!4490 | 2 个月前 |