op-plugin:基于昇腾Ascend Extension for PyTorch的算子插件项目

OpPlugin of Ascend Extension for PyTorch

分支12Tags2
文件最后提交记录最后更新时间
[docs]add PR notes info Co-authored-by: liangsongwei<liangsongwei@huawei.com> # message auto-generated for no-merge-commit merge: !4253 merge master into master [docs]add PR notes info Created-by: liangsongwei Commit-by: liangsongwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > (如有)请关联需求文档/issue链接 - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [x] 资料更新 # 【修改方案】 一是要求必须关联社区issue链接; 二是禁止填写需求链接、问题单等内部流程信息。 该修改通过直接更新模板文件生效,不涉及任何代码逻辑变更。 # 【资料变更】 PR提交模板信息补充 # 【接口变更】 不涉及 # 【功能验证】 ![image.png](https://raw.gitcode.com/user-images/assets/7404318/6b276c27-f6bc-463b-a340-1c3e155aa1e3/image.png 'image.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!42533 个月前
fix ci avoid shell=True Co-authored-by: SCh_zx<1325467101@qq.com> # message auto-generated for no-merge-commit merge: !4669 merge master into master fix ci avoid shell=True Created-by: SCh_zx Commit-by: SCh_zx Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 问题描述:Not recommended to use 'subprocess.getstatusoutput' due to its inherent use of shell=True. 规则:G.EDV.04 禁止使用subprocess模块中的shell=True选项 现在用glob代替getstatusoutput,避免默认shell=True导致命令注入 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!46691 个月前
资料修改 Co-authored-by: l00881990<lixinyu68@huawei.com> # message auto-generated for no-merge-commit merge: !5076 merge fix-do into master 资料修改 Created-by: l1919_snow Commit-by: l00881990 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中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!507620 小时前
新增GMMswimgluquant在350芯片上的描述。 Co-authored-by: zhangzhizhuo<zhangzhizhuo1@huawei.com> # message auto-generated for no-merge-commit merge: !5021 merge addgmmsqdocv2 into master 新增GMMswimgluquant在350芯片上的描述。 Created-by: zhangzhizhuo Commit-by: zhangzhizhuo Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [x] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 增加gmmswimgluquant v2算子在atlas 350芯片上的资料描述。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 增加 gmmswimgluquant v2算子在atlas 350芯片上的资料描述。 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 资料同步,不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!502118 小时前
modify document Co-authored-by: molly123321<malei54@h-partners.com> # message auto-generated for no-merge-commit merge: !4948 merge 0514API into master modify document Created-by: molly123321 Commit-by: molly123321 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单https://gitcode.com/Ascend/pytorch/issues/1880 - [ ] 重构优化 - [x] 资料更新 # 【修改方案】 CANN链接改回至安装手册不用快速安装 # 【资料变更】 CANN链接改回至安装手册 # 【接口变更】 “不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!494813 天前
fix: grouped matmul swiglu quant v2 mxfp4 shape infer Co-authored-by: wang_ziqi<wangziqi4@huawei.com> # message auto-generated for no-merge-commit merge: !5049 merge gmm_bugfix into master fix: grouped matmul swiglu quant v2 mxfp4 shape infer Created-by: wang-ziqi-code Commit-by: wang_ziqi Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [x] 问题单 https://atomgit.com/Ascend/op-plugin/issues/84 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 修复 npu_grouped_matmul_swiglu_quant_v2 在 Ascend950 MXFP4 / packed FP4 场景下的 output shape 推导问题。 1. 对齐 CANN infer shape 逻辑,MX 场景下 weightScale[E, ceil(K/64), N, 2],逻辑 N 应取 weightScale.dim2,不能按转置 view 或 FP4 uint8 物理存储再做额外补偿。 2. npu_grouped_matmul_swiglu_quant_v2_meta 中移除旧的 FP4_IN_INT8 output/outputScale shape 补偿逻辑,统一按 CANN 输出: - output = [M, N / 2] - outputScale = [M, ceil((N / 2) / 64), 2] 3. GroupedMatmulSwigluQuantV2NpuOpapi.cpp 中保留 5D NZ 和 950 逻辑 3D weight 的路径区分: - 5D NZ 场景从 weightScale 推导逻辑 N。 - Ascend950 逻辑 3D weight 场景继续从 weight.size(2) 推导 N。 4. 新增 fake tensor 和 Ascend950 shape-only 用例,覆盖 MXFP4 input + FP8/FP4 output 的 shape 推导,避免 CPU golden 当前不支持 packed float4 MX 输入的问题影响回归看护。 # 【资料变更】 不涉及。 # 【接口变更】 不涉及 public API / YAML / schema 变更。 # 【功能验证】 新增/调整用例: 1. test/core_tests/test_fake_tensor.py - 新增 Ascend950 MXFP4 fake tensor shape 回归,覆盖 FP8 output 和 FP4 output。 - 校验 output/outputScale shape 与 CANN infer shape 一致。 2. test/test_custom_ops/test_npu_grouped_matmul_swiglu_quant_v2.py - 新增 Ascend950 MXFP4 shape-only 后端用例。 - 覆盖 x_dtype/weight_dtype=torch_npu.float4_e2m1fn_x2weight_scale_dtype/x_scale_dtype=torch_npu.float8_e8m0fnu。 - 校验 output/outputScale shape 和 dtype,不做数值 golden。 - **910B** ![image.png](https://raw.gitcode.com/user-images/assets/7403085/cfb0a01e-4b2b-47f2-9bdb-048dc1eb9ef0/image.png 'image.png') ![image.png](https://raw.gitcode.com/user-images/assets/7403085/c87d6fdd-3d29-4bad-9320-34d04f6a4a3d/image.png 'image.png') - **950** ![image.png](https://raw.gitcode.com/user-images/assets/7403085/56b63bf8-9018-4379-b8a0-057a915101ba/image.png 'image.png') ![image.png](https://raw.gitcode.com/user-images/assets/7403085/b058a623-25a4-4020-be9f-b21e50ad107c/image.png 'image.png') # 【CheckList】 - [x] 代码注释完整,关键 shape 推导原因已说明 - [x] 参数合法性沿用现有校验逻辑 - [x] PR 标题建议使用 fix: grouped matmul swiglu quant v2 mxfp4 shape infer - [ ] CI 执行通过 ``` See merge request: Ascend/op-plugin!50492 小时前
[Fix] Fix error of code check Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !5026 merge code_check into master [Fix] Fix error of code check Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 支持部分检查工具,并完成全仓整改。 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 ![image.png](https://raw.gitcode.com/user-images/assets/7403085/3269f826-aa4b-4bc7-b7f6-7733f1034fb3/image.png 'image.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!50267 天前
fix: grouped matmul swiglu quant v2 mxfp4 shape infer Co-authored-by: wang_ziqi<wangziqi4@huawei.com> # message auto-generated for no-merge-commit merge: !5049 merge gmm_bugfix into master fix: grouped matmul swiglu quant v2 mxfp4 shape infer Created-by: wang-ziqi-code Commit-by: wang_ziqi Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [x] 问题单 https://atomgit.com/Ascend/op-plugin/issues/84 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 修复 npu_grouped_matmul_swiglu_quant_v2 在 Ascend950 MXFP4 / packed FP4 场景下的 output shape 推导问题。 1. 对齐 CANN infer shape 逻辑,MX 场景下 weightScale[E, ceil(K/64), N, 2],逻辑 N 应取 weightScale.dim2,不能按转置 view 或 FP4 uint8 物理存储再做额外补偿。 2. npu_grouped_matmul_swiglu_quant_v2_meta 中移除旧的 FP4_IN_INT8 output/outputScale shape 补偿逻辑,统一按 CANN 输出: - output = [M, N / 2] - outputScale = [M, ceil((N / 2) / 64), 2] 3. GroupedMatmulSwigluQuantV2NpuOpapi.cpp 中保留 5D NZ 和 950 逻辑 3D weight 的路径区分: - 5D NZ 场景从 weightScale 推导逻辑 N。 - Ascend950 逻辑 3D weight 场景继续从 weight.size(2) 推导 N。 4. 新增 fake tensor 和 Ascend950 shape-only 用例,覆盖 MXFP4 input + FP8/FP4 output 的 shape 推导,避免 CPU golden 当前不支持 packed float4 MX 输入的问题影响回归看护。 # 【资料变更】 不涉及。 # 【接口变更】 不涉及 public API / YAML / schema 变更。 # 【功能验证】 新增/调整用例: 1. test/core_tests/test_fake_tensor.py - 新增 Ascend950 MXFP4 fake tensor shape 回归,覆盖 FP8 output 和 FP4 output。 - 校验 output/outputScale shape 与 CANN infer shape 一致。 2. test/test_custom_ops/test_npu_grouped_matmul_swiglu_quant_v2.py - 新增 Ascend950 MXFP4 shape-only 后端用例。 - 覆盖 x_dtype/weight_dtype=torch_npu.float4_e2m1fn_x2weight_scale_dtype/x_scale_dtype=torch_npu.float8_e8m0fnu。 - 校验 output/outputScale shape 和 dtype,不做数值 golden。 - **910B** ![image.png](https://raw.gitcode.com/user-images/assets/7403085/cfb0a01e-4b2b-47f2-9bdb-048dc1eb9ef0/image.png 'image.png') ![image.png](https://raw.gitcode.com/user-images/assets/7403085/c87d6fdd-3d29-4bad-9320-34d04f6a4a3d/image.png 'image.png') - **950** ![image.png](https://raw.gitcode.com/user-images/assets/7403085/56b63bf8-9018-4379-b8a0-057a915101ba/image.png 'image.png') ![image.png](https://raw.gitcode.com/user-images/assets/7403085/b058a623-25a4-4020-be9f-b21e50ad107c/image.png 'image.png') # 【CheckList】 - [x] 代码注释完整,关键 shape 推导原因已说明 - [x] 参数合法性沿用现有校验逻辑 - [x] PR 标题建议使用 fix: grouped matmul swiglu quant v2 mxfp4 shape infer - [ ] CI 执行通过 ``` See merge request: Ascend/op-plugin!50492 小时前
support structured meta Co-authored-by: maoyuanpeng<maoyuanpeng@huawei.com> # message auto-generated for no-merge-commit merge: !5048 merge br_structured_ops into master support structured meta Created-by: maoyuanpeng1 Commit-by: maoyuanpeng Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 https://gitcode.com/Ascend/pytorch/issues/2110 - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 op-plugin仓适配 支持meta信息复用。 1.添加对structured算子的校验。 structured 与gen_opapi里面的infer逻辑和structured_inherit不兼容,会检验报错。 structured_delegate 与 gen_opapi 标签不兼容,会检验报错。 2.修改对structured算子的代码生成 当算子为structured_delegate时,不需要生成OpInterface、OpApiInterface、AclOpsInterface接口。 3.将_linalg_svd算子和_log_softmax_backward_data改造成structured算子,并编写用例测试之前社区用例未通过的情形。 # 【资料变更】 无 # 【接口变更】 无 # 【功能验证】 test_linalg_svd_out:测试torch.svd out版本的接口。当输入的out(U, S, Vh)为非预期的shape,测试是否会被resize成正确size且与cpu结果相同。 test_softmax_backward_data_half_to_float_result_dtype:测试torch.\_softmax_backward_data接口。当 torch.\_softmax_backward_data 接口中的input_dtype 被设置为 float16,测试其输出类型是否为float16。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!50482 天前
Add static code check and support pre-commit Co-authored-by: root<Jingwei Huang> # message auto-generated for no-merge-commit merge: !4793 merge code-check into master Add static code check and support pre-commit Created-by: huangjingwei Commit-by: root Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 对接PUD静态检查工具和规则。支持pre-commit。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 直接运行pre-commit命令: ![image.png](https://raw.gitcode.com/user-images/assets/7403085/363e7457-d1fe-4deb-a751-345ee1facd85/image.png 'image.png') git cherry-pick 或 git commit 自动运行代码静态检查: ![image.png](https://raw.gitcode.com/user-images/assets/7403085/add96b31-7766-4d1d-9f6a-61fd10ca51eb/image.png 'image.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!47931 个月前
init submodule 3 年前
[Fix] Enable trailing whitespace check, Fix trailing-whitespace errors detected by pre-commit Co-authored-by: zhoupeng<zp2165064878@163.com> # message auto-generated for no-merge-commit merge: !5043 merge op_code_check into master [Fix] Enable trailing whitespace check, Fix trailing-whitespace errors detected by pre-commit Created-by: thickhair Commit-by: zhoupeng Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 https://gitcode.com/Ascend/op-plugin/issues/129 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 修改pre-commit-config.yaml,开启trailing-whitespace检查,使用pre-commit进行检查和修复 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 ![image.png](https://raw.gitcode.com/user-images/assets/7403085/549c5212-645f-4d66-82e2-88926bc8515e/image.png 'image.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!50431 天前
Add static code check and support pre-commit Co-authored-by: root<Jingwei Huang> # message auto-generated for no-merge-commit merge: !4793 merge code-check into master Add static code check and support pre-commit Created-by: huangjingwei Commit-by: root Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 对接PUD静态检查工具和规则。支持pre-commit。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 直接运行pre-commit命令: ![image.png](https://raw.gitcode.com/user-images/assets/7403085/363e7457-d1fe-4deb-a751-345ee1facd85/image.png 'image.png') git cherry-pick 或 git commit 自动运行代码静态检查: ![image.png](https://raw.gitcode.com/user-images/assets/7403085/add96b31-7766-4d1d-9f6a-61fd10ca51eb/image.png 'image.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!47931 个月前
update LICENSE. Signed-off-by: weili10 <liwei386@huawei.com>2 年前
Update URL (gitcode) Co-authored-by: dilililiwhy<why.wuhuanyu@huawei.com> # message auto-generated for no-merge-commit merge: merge update_url into master Update URL (gitcode) Created-by: dilililiwhy Commit-by: dilililiwhy Merged-by: ascend-robot Description: <!-- Thanks for sending a pull request! --> **What type of PR is this?** > Uncomment only one /kind <> line, hit enter to put that in a new line, and remove leading whitespaces from that line: > > /kind bug > /kind task > /kind feature **What does this PR do / why do we need it**: **Special notes for your reviewers**: See merge request: Ascend/op-plugin!31658 个月前
modify document Co-authored-by: molly123321<malei54@h-partners.com> # message auto-generated for no-merge-commit merge: !4914 merge master into master modify document Created-by: molly123321 Commit-by: molly123321 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单https://gitcode.com/Ascend/pytorch/issues/1874 - [ ] 重构优化 - [x] 资料更新 # 【修改方案】 刷新相关配套信息 # 【资料变更】 刷新相关配套信息 # 【接口变更】 “不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!491422 天前
!2388 [master] Update the referenced PyTorch version to v2.3.1. Merge pull request !2388 from shaoyf/master_notice 1 年前
Generate ATB public C++ interface wrappers from dispatcher schema registrations. Co-authored-by: wang_ziqi<wangziqi4@huawei.com> # message auto-generated for no-merge-commit merge: !4825 merge atb-cpp-api-interface into master Generate ATB public C++ interface wrappers from dispatcher schema registrations. Created-by: wang-ziqi-code Commit-by: wang_ziqi Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:2026-04-25 --> # 【合入来源】> <font color="red">**如有社区 issue,请关联 issue 链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部 issue 等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 https://gitcode.com/Ascend/op-plugin/issues/69 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 本次补充 ATB C++ 公共接口暴露机制,并同步收敛配置和生成器口径。 当前 ATB 算子原本主要通过 TORCH_LIBRARY_FRAGMENT(atb, m) / m.impl(...) 注册到 dispatcher,再由 Python 侧通过 torch.ops.atb 使用;本次在此基础上新增 at_npu::native::atb 命名空间下的 C++ public interface,用于 torch_npu 同构环境中的 C++ 调用方直接访问。 整体链路如下: ```text ::atb::implementation -> TORCH_LIBRARY_FRAGMENT(atb, m).def(...) / m.impl(...) -> torch.ops.atb (Python dispatcher entry) #python层接口 -> atb_ops.yaml + gen_atb_ops.py -> at_npu::native::atb::* (public C++ interface) #cpp层接口 ``` 具体修改如下: 1. **新增并收敛 ATB C++ 接口生成器 torchnpugen/gen_atb_ops.py** - 以 ::atb::* 实现函数签名作为 public C++ interface 的真值来源; - 以 m.def(...) / m.impl(...) 作为注册约束校验; - 读取 op_plugin/config/atb_ops.yaml 中的 cpp_name -> impl_name 映射,生成: - op_plugin/include/AtbOpsInterface.h - op_plugin/ops/atb/AtbOpsInterface.cpp - 生成器会校验: - 对应 ::atb::* 实现签名可从 op_plugin/ops/atb/*.cpp 中唯一解析。 2. **新增配置文件 op_plugin/config/atb_ops.yaml** - 维护 public C++ interface 与 ::atb::* 实现之间的映射; - 当前共覆盖 34 个 ATB 接口; - 配置写法为: ```yaml - cpp_name: "at_npu::native::atb::_npu_reshape_and_cache" impl_name: "atb::_npu_reshape_and_cache" ``` - 生成器内部会解析并校验 cpp_name: - 必须以 at_npu::native::atb:: 开头; - 必须能提取出合法的末尾函数名; 3. **新增模板文件 torchnpugen/templates/AtbOpsInterface.hAtbOpsInterface.cpp** - 通过 string.Template 渲染 public declaration、forward declaration 和 wrapper definition; - 生成的 wrapper 统一位于 namespace at_npu::native::atb 下; - wrapper 最终按参数原样转发到对应 ::atb::* 实现。 4. **新增统一 include 入口 op_plugin/include/atb_ops.h** - 作为 C++ 使用方的统一头文件入口; - 当前仅包含 AtbOpsInterface.h。 5. **集成到代码生成流程** - 在现有代码生成链路中加入 gen_atb_ops.py; - 保证构建过程中自动生成最新接口文件。 ### 生成产物示例 以 _npu_group_topk 为例,生成结果如下: **AtbOpsInterface.h** ```cpp namespace at_npu { namespace native { namespace atb { TORCH_NPU_API void _npu_group_topk(const at::Tensor &self, int64_t k, int64_t group_num, int64_t n); } // namespace atb } // namespace native } // namespace at_npu ``` **AtbOpsInterface.cpp** ```cpp namespace atb { void _npu_group_topk(const at::Tensor &self, int64_t k, int64_t group_num, int64_t n); } // namespace atb namespace at_npu { namespace native { namespace atb { void _npu_group_topk(const at::Tensor &self, int64_t k, int64_t group_num, int64_t n) { ::atb::_npu_group_topk(self, k, group_num, n); } } // namespace atb } // namespace native } // namespace at_npu ``` # 【资料变更】 不涉及 # 【接口变更】 涉及 C++ public interface 新增。 新增 AtbOpsInterface.h,在 at_npu::native::atb 命名空间下暴露 34 个 ATB public C++ API;接口签名与对应 ::atb::* 实现保持一致。C++ 调用方通过: ```cpp #include "atb_ops.h" ``` 即可访问对应接口,链接目标为 libop_plugin_atb.so。 - 在 torch_npu 同构运行环境中,at_npu::native::atb::* 作为额外 C++ ABI 可用; - 接口签名与 ::atb::* 实现保持一致; - public 符号边界位于 libop_plugin_atb.so。 # 【功能验证】 1. **生成回归** - 执行 python -m torchnpugen.gen_atb_ops --config op_plugin/config/atb_ops.yaml --header op_plugin/include/AtbOpsInterface.h --source op_plugin/ops/atb/AtbOpsInterface.cpp --atb-src-dir op_plugin/ops/atb - 连续执行两次,确认生成结果稳定、无无关 diff。 2. **源码契约检查** - 执行 python test/check_atb_cpp_api_contract.py --check-source - 校验: - cpp_name -> impl_name -> m.impl -> m.def 映射成立; - wrapper 声明与 ::atb::* 实现签名一致; - wrapper 参数透传顺序一致。 3. **配置校验** - atb_ops.yamlcpp_name 采用全限定写法; - 非法 cpp_name(缺前缀、缺函数名)会在生成器配置解析阶段直接报错。 4. **编译链接验证** - op-plugin 全量编译通过; - at_npu::native::atb::* public 符号由 libop_plugin_atb.so 承载。 # 【CheckList】 > PR 提交人对以下 CheckList 自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR 标题正确使用类型标签,如:feat、fix、refactor、docs、test 等 - [x] PR 持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/op-plugin!482515 天前

OpPlugin

简介

本项目开发了Ascend Extension for Pytorch(torch_npu)算子插件,为使用PyTorch框架的开发者提供便捷的NPU算子库调用能力。 OpPlugin算子插件的编译、使用依赖昇腾Ascend Extension for PyTorch。因此,在编译OpPlugin之前,需要了解、安装昇腾PyTorch。使用手册可参考昇腾社区Ascend Extension for Pytorch

目录结构

关键目录如下:

├─docs                             # 文档目录
├─ci                               # 自动化构建与测试脚本目录
├─op_plugin                        # 项目核心目录
│  ├─config                        # 配置管理目录
│  ├─ops                           # 算子实现目录
│  ├─python                        # python绑定目录
├─codegen                          # 代码生成目录
├─examples                         # 示例目录
└─test                             # 测试目录

版本配套表

op-plugin仓旨在为torch_npu提供运行所需要的算子适配文件,两个仓的对应关系如下:

op-plugin分支 对应Ascend Extension for PyTorch版本
master 主线版本,如v2.7.1等
26.0.0 26.0.0版本,如v2.7.1-26.0.0等
7.3.0 7.3.0版本,如v2.7.1-7.3.0等
7.2.0 7.2.0版本,如v2.7.1-7.2.0等
7.1.0 7.1.0版本,如v2.1.0-7.1.0等
7.0.0 7.0.0版本,如v2.1.0-7.0.0等
6.0.0 6.0.0版本,如v2.1.0-6.0.0等
6.0.rc3 6.0.rc3版本,如v2.1.0-6.0.rc3等
6.0.rc2 6.0.rc2版本,如v2.1.0-6.0.rc2等
6.0.rc1 6.0.rc1版本,如v2.1.0-6.0.rc1等
5.0.0 5.0.0版本,如v2.1.0-5.0.0等
5.0.rc3 5.0.rc3版本,如v2.1.0-5.0.rc3等

安装OpPlugin

支持通过源码编译的方式安装OpPlugin。具体操作,请参考安装OpPlugin

快速入门

提供了一个通过OpPlugin插件实现PyTorch调用Ascend C自定义算子的完整开发指南,涵盖了从环境配置、算子注册、适配实现到测试验证提供了全流程说明。具体操作,请参考调用样例

API参考

基于PyTorch2.10.0/2.9.0/2.8.0/2.7.1版本,提供Ascend Extension for PyTorch自定义API的功能说明、函数原型、参数说明与调用示例等。具体信息,请参考自定义API参考

生命周期

op-plugin仓依赖torch_npu运行,生命周期请参考torch_npu中的PyTorch版本维护策略

贡献指导

介绍如何向OpPlugin仓库贡献代码,具体请参见贡献指南

联系我们

如果有任何疑问或建议,请提交GitCode Issues,我们会尽快回复。感谢您的支持。

安全声明

主要描述了OpPlugin的安全加固信息、公网地址信息及通信矩阵等内容。具体介绍,请参考OpPlugin安全声明

免责声明

致OpPlugin插件使用者

  • 本插件仅供调试和开发使用,使用者需自行承担使用风险,并理解以下内容:

    • 数据处理及删除:用户在使用本插件过程中产生的数据属于用户责任范畴。建议用户在使用完毕后及时删除相关数据,以防信息泄露。
    • 数据保密与传播:使用者了解并同意不得将通过本插件产生的数据随意外发或传播。对于由此产生的信息泄露、数据泄露或其他不良后果,本插件及其开发者概不负责。
    • 用户输入安全性:用户需自行保证输入的命令行的安全性,并承担因输入不当而导致的任何安全风险或损失。对于输入命令行不当所导致的问题,本插件及其开发者概不负责。
  • 免责声明范围:本免责声明适用于所有使用本插件的个人或实体。使用本插件即表示您同意并接受本声明的内容,并愿意承担因使用该功能而产生的风险和责任,如有异议请停止使用本插件。

  • 在使用本工具之前,请谨慎阅读并理解以上免责声明的内容。对于使用本插件所产生的任何问题或疑问,请及时联系开发者。

    License

    OpPlugin的使用许可证,详见LICENSE

    致谢

    感谢来自社区的每一个PR,欢迎贡献Ascend Extension for TensorPipe插件!

项目介绍

OpPlugin of Ascend Extension for PyTorch

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

Python60.5%
C++39.17%
C0.24%
Shell0.07%
CMake0.02%