| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 16 天前 | |
修复L2_DFX_PHASE_1参数与接口不一致的问题 Co-authored-by: chenhaijie<chenhaijie2@h-partners.com> # message auto-generated for no-merge-commit merge: !9673 merge master into master 修复L2_DFX_PHASE_1参数与接口不一致的问题 Created-by: chenhaijie1423 Commit-by: chenhaijie Merged-by: cann-robot Description: ## 描述 修复L2_DFX_PHASE_1参数与接口不一致的问题 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5462 ## 测试 涉及修改的四个算子编译+跑example全部OK ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9673 | 10 天前 | |
修复AdaLayerNormQuant跑UT报错的问题 Co-authored-by: chenhaijie1423<chenhaijie2@h-partners.com> # message auto-generated for no-merge-commit merge: !8147 merge AdaLayerNormQuant into master 修复AdaLayerNormQuant跑UT报错的问题 Created-by: chenhaijie1423 Commit-by: chenhaijie1423 Merged-by: cann-robot Description: ## 描述 修复AdaLayerNormQuant跑UT报错的问题 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4207 ## 测试 只修改了UT,算子本身实现没有修改,UT运行OK ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8147 | 1 个月前 | |
modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !7858 merge master into master modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Created-by: gitee-duhuiping Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 The product filtering tag is added to the aclnn*.md files of the forech and norm classes. ## 关联的Issue [#4263](https://gitcode.com/cann/ops-nn/issues/4263) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 aclnn*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7858 | 1 个月前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
LayerNorm类算子VL/UB block去硬编码 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9042 merge ln_VL into master LayerNorm类算子VL/UB block去硬编码 Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 本 PR 对 norm 系列算子 arch35 路径下的 VL/UB block size 处理进行代码清理,去除散落在各算子中的硬编码常量 32,统一改用平台 API 在运行时获取,消除魔法数字,提升代码可维护性与跨硬件适配能力。 ### 改动原因 arch35 路径下 add_layer_norm_quant、layer_norm_grad/grad_v3、layer_norm_v3、layer_norm_v4 等算子的 host tiling 与 kernel 侧多处使用 constexpr ... = 32 表示 UB block 字节数(部分派生出 B32_ALIGN_NUM = 32/sizeof(float) 等常量)。这些魔法数字: - 与具体硬件强绑定,未来硬件 block size 变化时需要逐文件修改,维护成本高; - 同一语义在 host 侧(BLOCK_SIZE/BLOCK_BYTES/B32_ALIGN_NUM)与 kernel 侧(自定义 GetUbBlockSize()、BLOCK_SIZE)重复定义,缺乏单一数据源。 ### 改动方法 统一替换为平台 API: - **Host tiling 侧**:删除本地 BLOCK_SIZE/BLOCK_BYTES/B32_ALIGN_NUM 等常量,改用 Ops::Base::GetUbBlockSize(context_)(新增 #include "op_common/op_host/util/platform_util.h"),或复用类成员 this->blockSize_; - **Kernel 侧**(layer_norm_v3/v4 common/regbase/welford):constexpr static int64_t BLOCK_SIZE = 32 → platform::GetUbBlockSize()(新增 #include "../../inc/platform.h"); - **Kernel 侧**(layer_norm_grad_base.h):删除自定义 GetUbBlockSize() 内联函数,统一使用 AscendC 框架的 BLOCK_SIZE。 涉及算子:add_layer_norm_quant、layer_norm_grad、layer_norm_grad_v3、layer_norm_v3、layer_norm_v4。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5099 ## 测试 - pass ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码清理(去除硬编码常量) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9042 | 11 天前 | |
修改add_layer_norm_quant_v2的examples用例 Co-authored-by: liujie12345678<liujie81@huawei.com> # message auto-generated for no-merge-commit merge: !9199 merge master into master 修改add_layer_norm_quant_v2的examples用例 Created-by: liujie12345678 Commit-by: liujie12345678 Merged-by: cann-robot Description: ## 描述 修改add_layer_norm_quant_v2的examples用例 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5035 ## 测试 测试验证OK ## 文档更新 NA ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9199 | 18 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
fix: 修复AddRmsNormDynamicMxQuant空round_mode并加固Rms算子回归 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9723 merge fix/add-rms-norm-dynamic-mx-quant-null-round-mode into master fix: 修复AddRmsNormDynamicMxQuant空round_mode并加固Rms算子回归 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 AddRmsNormDynamicMxQuant 将 round_mode 声明为可选属性,默认值为 rint。ACLNN 调用传入 nullptr 时,Host Tiling 侧可能获取到空指针;原有参数校验直接将其判为失败,导致默认值契约无法生效。 本次修改: - 修复 AddRmsNormDynamicMxQuant:round_mode == nullptr 时按默认值 rint 解析,保持显式空串和其他非法字符串仍返回失败。V1、V2 接口共用该 Host Tiling 路径,因此同时生效。 - 为 AddRmsNormDynamicMxQuant 新增独立 Host Tiling 回归用例,确认属性指针确实为 nullptr,并验证可按 rint 正常选择 FP8 FullLoad 模板;保留原有 FP8 FullLoad 用例不变。 - 对 RmsNormDynamicMxQuant 做质量加固:生产实现原本已对空 round_mode 默认为 RINT,本次不改生产逻辑;新增独立 Tiling UT 校验缺失 attr 与序列化 TilingData 中的 RINT 默认值,并新增 aclnn API 空指针成功用例。 - 补充两个算子的 aclnn 资料和公共 API 头文件注释,明确 roundMode 传入空指针时采用默认值 rint,并同步修正相关错误场景描述。 ## 关联的Issue #5518 ## 测试 - AddRmsNormDynamicMxQuant 基线复现:省略 round_mode 的 Host UT 返回 GRAPH_FAILED,用例失败(0/1 通过)。 - AddRmsNormDynamicMxQuant 修复后定向回归:原 FP8 FullLoad 用例及新增空指针用例均通过(2/2);最新 upstream/master 基线上 Host UT 46/46 通过,API UT 19/19 通过;单算子生产代码行覆盖率 92.3% (611/662)。 - RmsNormDynamicMxQuant 修改前基线:Host UT 37/37 通过,API UT 22/22 通过;默认分支 rms_norm_dynamic_mx_quant_base_tiling.cpp:191 命中次数为 0。 - RmsNormDynamicMxQuant 加固后:Host UT 38/38 通过,API UT 23/23 通过;目标默认分支命中次数由 0 提升到 2,提取的单算子源码行覆盖率由 79.9% (434/543) 提升到 80.1% (435/543)。 - 本地 CI 定向门禁全部通过:Ascend 950 和 Ascend 910B(A2)的包编译、op_host UT、op_api UT,以及 Markdown 链接检查。 - pre-commit 全部通过,包括 clang-format、codespell、OAT 和 git diff --check。 ## 文档更新 - 更新 aclnnAddRmsNormDynamicMxQuant.md 和 aclnnAddRmsNormDynamicMxQuantV2.md,补充 roundMode 空指针默认语义并修正错误场景描述。 - 同步更新 aclnn_add_rms_norm_dynamic_mx_quant.h 中 V1/V2 接口的 roundMode 参数注释。 - 更新 aclnnRmsNormDynamicMxQuant.md 和 aclnn_rms_norm_dynamic_mx_quant.h,补充 roundMode == nullptr 时默认为 rint 的公开契约。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9723 | 9 天前 | |
fix(norm): avoid reinterpret_cast in RMS norm quant tiling Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9647 merge fix/rms-norm-dynamic-mx-quant-avoid-reinterpret-cast into master fix(norm): avoid reinterpret_cast in RMS norm quant tiling Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 整改 RMS Norm 量化相关 Ascend 950 host/tiling 代码中的 G.EXP.15-CPP 规范问题: - AddRmsNormDynamicMxQuant:将公共路由及 arch35 路径中的 CompileInfo 指针转换改为 static_cast。 - AddRmsNormDynamicQuant:整改 arch35 路径中的 CompileInfo 指针转换。 - AddRmsNormQuant:整改 Ascend 950 使用的公共路径及 arch35 路径。 - RmsNormDynamicMxQuant:删除 arch35 tiling 数据拷贝中冗余的 void* 转换。 共修改 7 个生产代码文件,移除 8 处 reinterpret_cast。仅调整 C++ 类型转换写法,不改变 tiling、kernel 路由、控制流或计算逻辑。 RmsNormDynamicQuant 不支持 Ascend 950,相关修改已从本 PR 撤回。 ## 关联的Issue CodeCheck:G.EXP.15-CPP(避免使用 reinterpret_cast)。 ## 测试 - [x] pre-commit、clang-format、codespell、OAT compliance、git diff --check 全部通过 - [x] Ascend 950 相关算子 host UT 通过,155/155 用例通过 - [x] Ascend 950 定向编译及打包通过 - [x] 修改前后 7/7 个直接受影响 host .o 字节级一致 ## 文档更新 无需更新文档。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:代码规范整改 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9647 | 10 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
fix(norm): avoid reinterpret_cast in RMS norm quant tiling Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9647 merge fix/rms-norm-dynamic-mx-quant-avoid-reinterpret-cast into master fix(norm): avoid reinterpret_cast in RMS norm quant tiling Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 整改 RMS Norm 量化相关 Ascend 950 host/tiling 代码中的 G.EXP.15-CPP 规范问题: - AddRmsNormDynamicMxQuant:将公共路由及 arch35 路径中的 CompileInfo 指针转换改为 static_cast。 - AddRmsNormDynamicQuant:整改 arch35 路径中的 CompileInfo 指针转换。 - AddRmsNormQuant:整改 Ascend 950 使用的公共路径及 arch35 路径。 - RmsNormDynamicMxQuant:删除 arch35 tiling 数据拷贝中冗余的 void* 转换。 共修改 7 个生产代码文件,移除 8 处 reinterpret_cast。仅调整 C++ 类型转换写法,不改变 tiling、kernel 路由、控制流或计算逻辑。 RmsNormDynamicQuant 不支持 Ascend 950,相关修改已从本 PR 撤回。 ## 关联的Issue CodeCheck:G.EXP.15-CPP(避免使用 reinterpret_cast)。 ## 测试 - [x] pre-commit、clang-format、codespell、OAT compliance、git diff --check 全部通过 - [x] Ascend 950 相关算子 host UT 通过,155/155 用例通过 - [x] Ascend 950 定向编译及打包通过 - [x] 修改前后 7/7 个直接受影响 host .o 字节级一致 ## 文档更新 无需更新文档。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:代码规范整改 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9647 | 10 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
fix(batch_norm): arch35 路径 VL 写死常量改为 VL 派生,移除 batch_norm_v3 本地 GetVRegSize 写死回退 Co-authored-by: HelloWord-LuXin<luxin67@h-partners.com> # message auto-generated for no-merge-commit merge: !9027 merge fix/batch_norm_vl_hardcode_arch35 into master fix(batch_norm): arch35 路径 VL 写死常量改为 VL 派生,移除 batch_norm_v3 本地 GetVRegSize 写死回退 Created-by: HelloWord-LuXin Commit-by: HelloWord-LuXin Merged-by: cann-robot Description: ## 背景 docs/batch_norm_vl_hardcode_audit.md 审计报告指出 batch_norm 系列四个算子 arch35 kernel 侧存在 VL 写死常量。本 PR 按报告 P0+P1 优先级进行整改,范围与 b1cb72bde / b55fcd4f2 一致(仅 arch35/regbase 路径,910/310 的 tiling 与 kernel 未触碰)。 ## 修改内容 ### P0: batch_norm_v3.h — 移除本地 GetVRegSize() 写死回退 - 移除 #if __CCE_AICORE__ == 310 || __NPU_ARCH == 5102 / return 256U 写死回退分支 - 改为委托 platform::GetVRegSize(),与 batch_norm / batch_norm_grad / batch_norm_grad_v3 其余三个算子统一 VL 来源 - 同时将 GetUbBlockSize() 改为委托 platform::GetUbBlockSize() - 消除 batch_norm_v3 与 norm_common 的 #if 判断不一致风险(前者含 5102 分支,后者不含,在 DAV_5102 上可能导致同编译单元内 VL 取值分叉) ### P1: batch_norm_grad_common.h / batch_norm_grad_v3_split_r1_regbase.h — 9 个 cache 常量改为 VL 派生 - CACHE_BUFF_SIZE / DGAMA_CACHE_INDEX / CACHE_LEVEL0~2_INDEX / DBETA_FOLD_CACHE_INDEX / DGAMA_FOLD_CACHE_INDEX / FOLD_CACHE_CAPACITY / ONE_LEVEL_BINARRY_ADD_CACHE_CAPACITY - 从字面量(256/768/1536/64 等)改为 VECTOR_LENGTH / VL_FP32 派生表达式 - 这些常量被 InitBuffer / 二分掩码 idx & (CAPACITY - 1) 强耦合,未来 VL 变化会导致归约语义错误 ### P1: 3 个文件的 UB_ADD_BUF / UB_ADD_LEN 改为 VL 派生 - batch_norm_grad_recompute_split_r0_regbase.h / batch_norm_grad_infer.h / batch_norm_grad_v3_recompute_split_r0_regbase.h - UB_ADD_LEN = 1024/sizeof(float) → 4 * VL_FP32 - UB_ADD_BUF = 3*1024 → 3 * UB_ADD_LEN * sizeof(float) ## 等价性验证 所有派生表达式在 950 平台(VRegSize=256B、VL_FP32=64)下与原字面量取值完全一致: | 常量 | 原值 | 派生表达式 | 派生值 | |---|---|---|---| | ONE_LEVEL_BINARRY_ADD_CACHE_CAPACITY | 256 | VECTOR_LENGTH | 256 | | FOLD_CACHE_CAPACITY | 64 | VL_FP32 | 64 | | CACHE_LEVEL1_INDEX | 256 | VECTOR_LENGTH | 256 | | DGAMA_CACHE_INDEX | 768 | 3 * VECTOR_LENGTH | 768 | | DBETA_FOLD_CACHE_INDEX | 1536 | 6 * VECTOR_LENGTH | 1536 | | CACHE_BUFF_SIZE | 6656 | 6*1024 + 2*VECTOR_LENGTH | 6656 | | UB_ADD_LEN | 256 | 4 * VL_FP32 | 256 | | UB_ADD_BUF | 3072 | 3 * UB_ADD_LEN * sizeof(float) | 3072 | ## 未涉及(后续整改) - P2: FIRST_VCADD_RESULT_MAX_NUM = 128 及非 arch35(A2/A3)路径 ELEM_PER_REP_FP32 = 64 等(base 路径需单独评估回归面) - P3: norm_common/reduce_common_regbase.h 的 ONCE_VECTOR_SIZE = 256(被约 15 个 norm 算子共用,b55fcd4f2 已标注为残留风险,待 norm_common 统一整改) --- ## 关联 issue Fixes #5048 See merge request: cann/ops-nn!9027 | 12 天前 | |
fix: 移除 BatchNorm3DGrad/BatchNormGradExt2 的 BFLOAT16 支持,BatchNorm 系列新增 Atlas 200I/500 A2 支持 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !9459 merge master into master fix: 移除 BatchNorm3DGrad/BatchNormGradExt2 的 BFLOAT16 支持,BatchNorm 系列新增 Atlas 200I/500 A2 支持 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 更新 BatchNorm 系列算子,主要包含: - 移除 BatchNorm3DGrad / BatchNormGradExt2 的 BFLOAT16(bfloat16)数据类型支持:def.cpp 中 y_backprop/x/x_backprop 仅保留 FLOAT16/FLOAT32,proto.h 同步更新,并删除含 bfloat16 的预编译 binary 配置(batch_norm3_d_grad_binary.json / batch_norm_grad_ext2_binary.json)。 - 三个 BatchNorm 算子(BatchNorm3D/BatchNorm3DGrad/BatchNormGradExt2)新增 Atlas 200I/500 A2 推理产品支持(README 产品支持表由 × 改为 √)。 - 新增图模式调用样例:test_geir_batch_norm3d_grad.cpp、test_geir_batch_norm_grad_ext2.cpp。 - BNTrainingReduceGrad 新增 TensorFlow framework 插件(framework/bn_training_reduce_grad_tf_plugin.cpp)。 - 同步更新 tiling、infershape、golden.py 及相应单测。 ## 关联的Issue - #5355 ## 测试 - 更新 infershape 单测:test_batch_norm3d_infershape.cpp、test_batch_norm3_d_grad_infershape.cpp、test_batch_norm_grad_ext2_infershape.cpp - 更新 tiling 单测:test_bn_training_reduce_grad_tiling.cpp - 更新 golden 数据:golden.py ## 文档更新 - 更新 batch_norm3_d/batch_norm3_d_grad/batch_norm_grad_ext2 的 README(Atlas 200I/500 A2 支持、调用样例链接) ## 类型标签 - [x] Bug修复 - [x] 新特性 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9459 | 12 天前 | |
fix: 移除 BatchNorm3DGrad/BatchNormGradExt2 的 BFLOAT16 支持,BatchNorm 系列新增 Atlas 200I/500 A2 支持 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !9459 merge master into master fix: 移除 BatchNorm3DGrad/BatchNormGradExt2 的 BFLOAT16 支持,BatchNorm 系列新增 Atlas 200I/500 A2 支持 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 更新 BatchNorm 系列算子,主要包含: - 移除 BatchNorm3DGrad / BatchNormGradExt2 的 BFLOAT16(bfloat16)数据类型支持:def.cpp 中 y_backprop/x/x_backprop 仅保留 FLOAT16/FLOAT32,proto.h 同步更新,并删除含 bfloat16 的预编译 binary 配置(batch_norm3_d_grad_binary.json / batch_norm_grad_ext2_binary.json)。 - 三个 BatchNorm 算子(BatchNorm3D/BatchNorm3DGrad/BatchNormGradExt2)新增 Atlas 200I/500 A2 推理产品支持(README 产品支持表由 × 改为 √)。 - 新增图模式调用样例:test_geir_batch_norm3d_grad.cpp、test_geir_batch_norm_grad_ext2.cpp。 - BNTrainingReduceGrad 新增 TensorFlow framework 插件(framework/bn_training_reduce_grad_tf_plugin.cpp)。 - 同步更新 tiling、infershape、golden.py 及相应单测。 ## 关联的Issue - #5355 ## 测试 - 更新 infershape 单测:test_batch_norm3d_infershape.cpp、test_batch_norm3_d_grad_infershape.cpp、test_batch_norm_grad_ext2_infershape.cpp - 更新 tiling 单测:test_bn_training_reduce_grad_tiling.cpp - 更新 golden 数据:golden.py ## 文档更新 - 更新 batch_norm3_d/batch_norm3_d_grad/batch_norm_grad_ext2 的 README(Atlas 200I/500 A2 支持、调用样例链接) ## 类型标签 - [x] Bug修复 - [x] 新特性 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9459 | 12 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
batch_norm类部分算子检视问题修复 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !9620 merge check_fix into master batch_norm类部分算子检视问题修复 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复深度检视后发现的问题,包括文档的产品区分,输入的校验,泛化发现的精度问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5223 https://gitcode.com/cann/ops-nn/issues/5004 https://gitcode.com/cann/ops-nn/issues/5001 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md文档的描述 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9620 | 11 天前 | |
fix(batch_norm): arch35 路径 VL 写死常量改为 VL 派生,移除 batch_norm_v3 本地 GetVRegSize 写死回退 Co-authored-by: HelloWord-LuXin<luxin67@h-partners.com> # message auto-generated for no-merge-commit merge: !9027 merge fix/batch_norm_vl_hardcode_arch35 into master fix(batch_norm): arch35 路径 VL 写死常量改为 VL 派生,移除 batch_norm_v3 本地 GetVRegSize 写死回退 Created-by: HelloWord-LuXin Commit-by: HelloWord-LuXin Merged-by: cann-robot Description: ## 背景 docs/batch_norm_vl_hardcode_audit.md 审计报告指出 batch_norm 系列四个算子 arch35 kernel 侧存在 VL 写死常量。本 PR 按报告 P0+P1 优先级进行整改,范围与 b1cb72bde / b55fcd4f2 一致(仅 arch35/regbase 路径,910/310 的 tiling 与 kernel 未触碰)。 ## 修改内容 ### P0: batch_norm_v3.h — 移除本地 GetVRegSize() 写死回退 - 移除 #if __CCE_AICORE__ == 310 || __NPU_ARCH == 5102 / return 256U 写死回退分支 - 改为委托 platform::GetVRegSize(),与 batch_norm / batch_norm_grad / batch_norm_grad_v3 其余三个算子统一 VL 来源 - 同时将 GetUbBlockSize() 改为委托 platform::GetUbBlockSize() - 消除 batch_norm_v3 与 norm_common 的 #if 判断不一致风险(前者含 5102 分支,后者不含,在 DAV_5102 上可能导致同编译单元内 VL 取值分叉) ### P1: batch_norm_grad_common.h / batch_norm_grad_v3_split_r1_regbase.h — 9 个 cache 常量改为 VL 派生 - CACHE_BUFF_SIZE / DGAMA_CACHE_INDEX / CACHE_LEVEL0~2_INDEX / DBETA_FOLD_CACHE_INDEX / DGAMA_FOLD_CACHE_INDEX / FOLD_CACHE_CAPACITY / ONE_LEVEL_BINARRY_ADD_CACHE_CAPACITY - 从字面量(256/768/1536/64 等)改为 VECTOR_LENGTH / VL_FP32 派生表达式 - 这些常量被 InitBuffer / 二分掩码 idx & (CAPACITY - 1) 强耦合,未来 VL 变化会导致归约语义错误 ### P1: 3 个文件的 UB_ADD_BUF / UB_ADD_LEN 改为 VL 派生 - batch_norm_grad_recompute_split_r0_regbase.h / batch_norm_grad_infer.h / batch_norm_grad_v3_recompute_split_r0_regbase.h - UB_ADD_LEN = 1024/sizeof(float) → 4 * VL_FP32 - UB_ADD_BUF = 3*1024 → 3 * UB_ADD_LEN * sizeof(float) ## 等价性验证 所有派生表达式在 950 平台(VRegSize=256B、VL_FP32=64)下与原字面量取值完全一致: | 常量 | 原值 | 派生表达式 | 派生值 | |---|---|---|---| | ONE_LEVEL_BINARRY_ADD_CACHE_CAPACITY | 256 | VECTOR_LENGTH | 256 | | FOLD_CACHE_CAPACITY | 64 | VL_FP32 | 64 | | CACHE_LEVEL1_INDEX | 256 | VECTOR_LENGTH | 256 | | DGAMA_CACHE_INDEX | 768 | 3 * VECTOR_LENGTH | 768 | | DBETA_FOLD_CACHE_INDEX | 1536 | 6 * VECTOR_LENGTH | 1536 | | CACHE_BUFF_SIZE | 6656 | 6*1024 + 2*VECTOR_LENGTH | 6656 | | UB_ADD_LEN | 256 | 4 * VL_FP32 | 256 | | UB_ADD_BUF | 3072 | 3 * UB_ADD_LEN * sizeof(float) | 3072 | ## 未涉及(后续整改) - P2: FIRST_VCADD_RESULT_MAX_NUM = 128 及非 arch35(A2/A3)路径 ELEM_PER_REP_FP32 = 64 等(base 路径需单独评估回归面) - P3: norm_common/reduce_common_regbase.h 的 ONCE_VECTOR_SIZE = 256(被约 15 个 norm 算子共用,b55fcd4f2 已标注为残留风险,待 norm_common 统一整改) --- ## 关联 issue Fixes #5048 See merge request: cann/ops-nn!9027 | 12 天前 | |
fix: 移除 BatchNorm3DGrad/BatchNormGradExt2 的 BFLOAT16 支持,BatchNorm 系列新增 Atlas 200I/500 A2 支持 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !9459 merge master into master fix: 移除 BatchNorm3DGrad/BatchNormGradExt2 的 BFLOAT16 支持,BatchNorm 系列新增 Atlas 200I/500 A2 支持 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 更新 BatchNorm 系列算子,主要包含: - 移除 BatchNorm3DGrad / BatchNormGradExt2 的 BFLOAT16(bfloat16)数据类型支持:def.cpp 中 y_backprop/x/x_backprop 仅保留 FLOAT16/FLOAT32,proto.h 同步更新,并删除含 bfloat16 的预编译 binary 配置(batch_norm3_d_grad_binary.json / batch_norm_grad_ext2_binary.json)。 - 三个 BatchNorm 算子(BatchNorm3D/BatchNorm3DGrad/BatchNormGradExt2)新增 Atlas 200I/500 A2 推理产品支持(README 产品支持表由 × 改为 √)。 - 新增图模式调用样例:test_geir_batch_norm3d_grad.cpp、test_geir_batch_norm_grad_ext2.cpp。 - BNTrainingReduceGrad 新增 TensorFlow framework 插件(framework/bn_training_reduce_grad_tf_plugin.cpp)。 - 同步更新 tiling、infershape、golden.py 及相应单测。 ## 关联的Issue - #5355 ## 测试 - 更新 infershape 单测:test_batch_norm3d_infershape.cpp、test_batch_norm3_d_grad_infershape.cpp、test_batch_norm_grad_ext2_infershape.cpp - 更新 tiling 单测:test_bn_training_reduce_grad_tiling.cpp - 更新 golden 数据:golden.py ## 文档更新 - 更新 batch_norm3_d/batch_norm3_d_grad/batch_norm_grad_ext2 的 README(Atlas 200I/500 A2 支持、调用样例链接) ## 类型标签 - [x] Bug修复 - [x] 新特性 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9459 | 12 天前 | |
fix(batch_norm_grad_v3): 修复totalChannel整除MAX_CHANNEL_SIZE时dgamma/dbeta不写回GM的问题 Co-authored-by: renruhai<renruhai1@huawei.com> # message auto-generated for no-merge-commit merge: !9624 merge master into master fix(batch_norm_grad_v3): 修复totalChannel整除MAX_CHANNEL_SIZE时dgamma/dbeta不写回GM的问题 Created-by: renruhai Commit-by: renruhai Merged-by: cann-robot Description: ## 描述 修复 batch_norm_grad_v3 算子 splitLoad 路径中,当 totalChannel 能被 MAX_CHANNEL_SIZE 整除时 dgamma/dbeta 不写回 GM 的问题。 **根因**:splitLoad 路径中 copyNum = totalChannel % MAX_CHANNEL_SIZE,在整除场景下 copyNum == 0,导致 mod == copyNum - 1 永不成立,StoreOneTensor 不执行,dgamma/dbeta 计算结果停留在 UB 中不写回 GM。 **修复方案**:在 copy-in、CopyOutDBias、CopyOutDWeight 三处,当整除导致 copyNum == 0 时回退为 MAX_CHANNEL_SIZE,保证最后一轮循环的写回逻辑正常触发: cpp int64_t copyNum = MAX_CHANNEL_SIZE; if (loopId == CeilDiv(this->totalChannel, MAX_CHANNEL_SIZE) - 1) { copyNum = this->totalChannel % MAX_CHANNEL_SIZE; if (copyNum == 0) { copyNum = MAX_CHANNEL_SIZE; } } ## 关联的Issue 关联Issue #4518 ## 测试 在 0609 环境(Ascend910B3、CANN 9.1.0)编译 14 个 high_performance 变体 .o 并安装到运行时 OPP 目录,使用 issue 中的复现脚本验证: - **修复前**:触发用例(C=40960,4xCx56x56,40960 % MAX_CHANNEL_SIZE == 0 整除场景)dbeta 输出错误(gi0=-7),退出码 42(BUG_REPRODUCED) - **修复后**:触发用例与对照用例(C=30720,非整除)均通过,dbeta 输出 12544.0 与期望一致,VERDICT: NO_REPRO,退出码 0 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9624 | 11 天前 | |
fix(batch_norm): arch35 路径 VL 写死常量改为 VL 派生,移除 batch_norm_v3 本地 GetVRegSize 写死回退 Co-authored-by: HelloWord-LuXin<luxin67@h-partners.com> # message auto-generated for no-merge-commit merge: !9027 merge fix/batch_norm_vl_hardcode_arch35 into master fix(batch_norm): arch35 路径 VL 写死常量改为 VL 派生,移除 batch_norm_v3 本地 GetVRegSize 写死回退 Created-by: HelloWord-LuXin Commit-by: HelloWord-LuXin Merged-by: cann-robot Description: ## 背景 docs/batch_norm_vl_hardcode_audit.md 审计报告指出 batch_norm 系列四个算子 arch35 kernel 侧存在 VL 写死常量。本 PR 按报告 P0+P1 优先级进行整改,范围与 b1cb72bde / b55fcd4f2 一致(仅 arch35/regbase 路径,910/310 的 tiling 与 kernel 未触碰)。 ## 修改内容 ### P0: batch_norm_v3.h — 移除本地 GetVRegSize() 写死回退 - 移除 #if __CCE_AICORE__ == 310 || __NPU_ARCH == 5102 / return 256U 写死回退分支 - 改为委托 platform::GetVRegSize(),与 batch_norm / batch_norm_grad / batch_norm_grad_v3 其余三个算子统一 VL 来源 - 同时将 GetUbBlockSize() 改为委托 platform::GetUbBlockSize() - 消除 batch_norm_v3 与 norm_common 的 #if 判断不一致风险(前者含 5102 分支,后者不含,在 DAV_5102 上可能导致同编译单元内 VL 取值分叉) ### P1: batch_norm_grad_common.h / batch_norm_grad_v3_split_r1_regbase.h — 9 个 cache 常量改为 VL 派生 - CACHE_BUFF_SIZE / DGAMA_CACHE_INDEX / CACHE_LEVEL0~2_INDEX / DBETA_FOLD_CACHE_INDEX / DGAMA_FOLD_CACHE_INDEX / FOLD_CACHE_CAPACITY / ONE_LEVEL_BINARRY_ADD_CACHE_CAPACITY - 从字面量(256/768/1536/64 等)改为 VECTOR_LENGTH / VL_FP32 派生表达式 - 这些常量被 InitBuffer / 二分掩码 idx & (CAPACITY - 1) 强耦合,未来 VL 变化会导致归约语义错误 ### P1: 3 个文件的 UB_ADD_BUF / UB_ADD_LEN 改为 VL 派生 - batch_norm_grad_recompute_split_r0_regbase.h / batch_norm_grad_infer.h / batch_norm_grad_v3_recompute_split_r0_regbase.h - UB_ADD_LEN = 1024/sizeof(float) → 4 * VL_FP32 - UB_ADD_BUF = 3*1024 → 3 * UB_ADD_LEN * sizeof(float) ## 等价性验证 所有派生表达式在 950 平台(VRegSize=256B、VL_FP32=64)下与原字面量取值完全一致: | 常量 | 原值 | 派生表达式 | 派生值 | |---|---|---|---| | ONE_LEVEL_BINARRY_ADD_CACHE_CAPACITY | 256 | VECTOR_LENGTH | 256 | | FOLD_CACHE_CAPACITY | 64 | VL_FP32 | 64 | | CACHE_LEVEL1_INDEX | 256 | VECTOR_LENGTH | 256 | | DGAMA_CACHE_INDEX | 768 | 3 * VECTOR_LENGTH | 768 | | DBETA_FOLD_CACHE_INDEX | 1536 | 6 * VECTOR_LENGTH | 1536 | | CACHE_BUFF_SIZE | 6656 | 6*1024 + 2*VECTOR_LENGTH | 6656 | | UB_ADD_LEN | 256 | 4 * VL_FP32 | 256 | | UB_ADD_BUF | 3072 | 3 * UB_ADD_LEN * sizeof(float) | 3072 | ## 未涉及(后续整改) - P2: FIRST_VCADD_RESULT_MAX_NUM = 128 及非 arch35(A2/A3)路径 ELEM_PER_REP_FP32 = 64 等(base 路径需单独评估回归面) - P3: norm_common/reduce_common_regbase.h 的 ONCE_VECTOR_SIZE = 256(被约 15 个 norm 算子共用,b55fcd4f2 已标注为残留风险,待 norm_common 统一整改) --- ## 关联 issue Fixes #5048 See merge request: cann/ops-nn!9027 | 12 天前 | |
batch_norm类部分算子检视问题修复 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !9620 merge check_fix into master batch_norm类部分算子检视问题修复 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复深度检视后发现的问题,包括文档的产品区分,输入的校验,泛化发现的精度问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5223 https://gitcode.com/cann/ops-nn/issues/5004 https://gitcode.com/cann/ops-nn/issues/5001 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md文档的描述 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9620 | 11 天前 | |
batch_norm类部分算子检视问题修复 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !9620 merge check_fix into master batch_norm类部分算子检视问题修复 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复深度检视后发现的问题,包括文档的产品区分,输入的校验,泛化发现的精度问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5223 https://gitcode.com/cann/ops-nn/issues/5004 https://gitcode.com/cann/ops-nn/issues/5001 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md文档的描述 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9620 | 11 天前 | |
refactor: align operator docs and Ascend C APIs Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9366 merge docs/bn-inference-readme-compliance into master refactor: align operator docs and Ascend C APIs Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 - 规范BNInference README的多产品差异说明,并迁移arch35非对齐搬运接口,保持REG_OP、ABI、数学语义和tiling方案不变。 - 带入PR #9368的InplaceAdd README产品能力描述整改,明确各产品的数据类型、动态shape、索引与空Tensor约束。 - 带入PR #9364的BN3DTrainingReduce Reg搬运接口迁移,将旧 DataCopy按方向替换为LoadAlign/StoreAlign。 ## 关联的Issue 关联Issue #5259 https://gitcode.com/cann/ops-nn/issues/5259 ## 测试 - pre-commit:trim、EOF、merge-conflict、private-key、clang-format、codespell、OAT均通过。 - BNInference使用工作目录私有CANN 9.2.0分别编译修改前后源码;55/55个kernel .o及55/55个JSON均字节级一致。 - BN3DTrainingReduce接口迁移已在PR #9364验证修改前后二进制一致。 - InplaceAdd仅修改README,不影响执行代码。 - #9368与#9364带入后的文件blob与对应PR head逐文件一致,因此未重复运行本地CI。 ## 文档更新 - 更新norm/bn_inference/README.md。 - 更新index/inplace_add/README.md。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:Ascend C API重构 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9366 | 15 天前 | |
BNInfer算子MD文档中数据格式描述优化 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !9512 merge master into master BNInfer算子MD文档中数据格式描述优化 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> BNInfer算子检视检视意见闭环 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及功能改动 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9512 | 14 天前 | |
feat: 新增16个算子的TensorFlow插件注册 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9643 merge tf_plugin into master feat: 新增16个算子的TensorFlow插件注册 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 本次变更为 16 个算子新增 TensorFlow 框架插件注册( *_tf_plugin.cpp),使这些算子在 TensorFlow 图解析时可通过 REGISTER_CUSTOM_OP 自动映射到昇腾算子(AutoMappingByOpFn,ImplyType::TVM),注册模式与仓库内已有 *_tf_plugin.cpp 文件保持一致。 新增注册的算子(16 个): | 算子 | 注册文件 | |------|----------| | PReluGrad | activation/p_relu_grad_update/framework/prelu_grad_tf_plugin.cpp | | Centralization | common/src/framework/centralization_tf_plugin.cpp | | DynamicAUGRUGrad | common/src/framework/dynamic_augru_grad_tf_plugin.cpp | | DynamicAUGRU | common/src/framework/dynamic_augru_tf_plugin.cpp | | DynamicGRUV2Grad | common/src/framework/dynamic_gruv2_grad_tf_plugin.cpp | | DynamicGRUV2 | common/src/framework/dynamic_gruv2_tf_plugin.cpp | | DynamicRNNGrad | common/src/framework/dynamic_rnn_grad_tf_plugin.cpp | | LRNGrad | common/src/framework/lrn_grad_tf_plugin.cpp | | LRN | common/src/framework/lrn_tf_plugin.cpp | | LRUCacheV2 | common/src/framework/lru_cache_v2_tf_plugin.cpp | | MaxPoolGradGrad | common/src/framework/max_pool_grad_grad_tf_plugin.cpp | | BNInferGrad | norm/bn_infer_grad/framework/bn_infer_grad_tf_plugin.cpp | | MaxPoolGradGradWithArgmax | pooling/max_pool_grad_grad_with_argmax/framework/max_pool_grad_grad_with_argmax_tf_plugin.cpp | | MaxPoolV2 | pooling/max_pool_v2/framework/max_pool_v2_tf_plugin.cpp | | MaxPool | pooling/max_pool_v3/framework/max_pool_v3_tf_plugin.cpp | | Dequantize | quant/dequantize/framework/dequantize_tf_plugin.cpp | ## 关联的Issue - 关联 Issue:https://gitcode.com/cann/ops-nn/issues/5447 ## 测试 本次改动仅为算子注册文件(编译期注册),未包含测试用例。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9643 | 10 天前 | |
fix: 修复 BNInference 和 ArgMaxGrad 原型重复定义 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9599 merge fix/proto-duplicate-5ops into master fix: 修复 BNInference 和 ArgMaxGrad 原型重复定义 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修复 BNInference 和 ArgMaxGrad 在 canndev legacy 与 ops-nn 聚合原型同时加载时的重复定义问题。 - 为 ArgMaxGrad 原型增加 OPS_PROTO_DEF_ARGMAXGRAD 保护。 - 调整 BNInference 的 clang-format 标记位置,确保生成 ops_proto_nn.h 时保留 OPS_PROTO_DEF_BNINFERENCE。 - 与 canndev ops_proto_legacy.h 现有同名保护宏保持一致。 ## 关联的Issue 无。 ## 测试 - bash build.sh --opgraph -j8:通过。 - 检查生成的 ops_proto_nn.h:BNInference、ArgMaxGrad 均带对应保护宏。 - legacy -> nn 和 nn -> legacy 两种包含顺序语法编译:通过。 - pre-commit、clang-format、codespell、OAT:通过。 ## 文档更新 无需更新文档。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9599 | 11 天前 | |
bn_training_reduce算子支持NCDHW Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !9089 merge bn_training_reduce into master bn_training_reduce算子支持NCDHW Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 本 PR 为 Ascend 950 的 BNTrainingReduce GE 内核补充 NCDHW 5 维格式支持。算子保留 C 轴并归约其余维度;对 NCDHW 输入沿 N、D、H、W 轴计算每通道 sum 与 square_sum。 主要改动: - 在 OpDef 中为 FLOAT16、BFLOAT16、FLOAT 输入补充 NCDHW 格式组合,输出固定为 FLOAT,并保持 GE 输出格式元数据与输入一致。 - 扩展 InferShape:支持 NCHW 2~4 维、NHWC 4 维和 NCDHW 5 维;NCHW/NCDHW 使用第 1 维作为 C 轴,NHWC 使用第 3 维;拒绝 NDC1HWC0 及格式/Rank 不匹配输入。 - 扩展 Ascend 950 Tiling 公共输入结构、格式枚举和校验逻辑,新增 NCDHW 路由,并兼容逻辑输出 [C] 与仅通道维非 1 的展开输出。 - 保持 ACLNN 接口仅支持 NCHW 的既有契约;将一维输出在 AICore 调用前扩展为 NCHW 四维视图,同时补充空 Tensor 与格式校验。 - 确定性模式下改用用户 workspace,避免将框架 workspace 直接传入算子实现。 - 更新 GEIR 示例、README 及相关 Host UT。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5085 ## 测试 - InferShape UT:覆盖 NCHW 2 维、NCDHW 5 维、NHWC 4 维,以及 ND、NDC1HWC0、NHWC/NCDHW 错误 Rank 拒绝场景。 - Tiling UT:覆盖 NCHW 2 维、NHWC、NCDHW、空通道/空归约轴、非法格式、错误 Rank 和输出 Shape 不匹配场景。 - ACLNN UT:覆盖 BF16 正向场景,并验证 NHWC 与空 NHWC 输入被拒绝,确保 ACLNN 契约无扩张。 - GEIR 示例:增加 NCDHW 格式解析与输出格式打印支持。 - GitCode CI 已通过:antipoison、codecheck、codespell、链接有效性、资源存在性、标签闭合、markdownlint、pre-commit 和 SCA 检查;当前 PR 标签为 ci-pipeline-passed。 ## 文档更新 更新 norm/bn_training_reduce/README.md:补充 Ascend 950 GE 内核支持 NCDHW 5 维、各格式 Rank 范围、输出 Shape/格式约束,以及 ACLNN 与 GE 通路的格式差异。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9089 | 15 天前 | |
fix: 移除 BatchNorm3DGrad/BatchNormGradExt2 的 BFLOAT16 支持,BatchNorm 系列新增 Atlas 200I/500 A2 支持 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !9459 merge master into master fix: 移除 BatchNorm3DGrad/BatchNormGradExt2 的 BFLOAT16 支持,BatchNorm 系列新增 Atlas 200I/500 A2 支持 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 更新 BatchNorm 系列算子,主要包含: - 移除 BatchNorm3DGrad / BatchNormGradExt2 的 BFLOAT16(bfloat16)数据类型支持:def.cpp 中 y_backprop/x/x_backprop 仅保留 FLOAT16/FLOAT32,proto.h 同步更新,并删除含 bfloat16 的预编译 binary 配置(batch_norm3_d_grad_binary.json / batch_norm_grad_ext2_binary.json)。 - 三个 BatchNorm 算子(BatchNorm3D/BatchNorm3DGrad/BatchNormGradExt2)新增 Atlas 200I/500 A2 推理产品支持(README 产品支持表由 × 改为 √)。 - 新增图模式调用样例:test_geir_batch_norm3d_grad.cpp、test_geir_batch_norm_grad_ext2.cpp。 - BNTrainingReduceGrad 新增 TensorFlow framework 插件(framework/bn_training_reduce_grad_tf_plugin.cpp)。 - 同步更新 tiling、infershape、golden.py 及相应单测。 ## 关联的Issue - #5355 ## 测试 - 更新 infershape 单测:test_batch_norm3d_infershape.cpp、test_batch_norm3_d_grad_infershape.cpp、test_batch_norm_grad_ext2_infershape.cpp - 更新 tiling 单测:test_bn_training_reduce_grad_tiling.cpp - 更新 golden 数据:golden.py ## 文档更新 - 更新 batch_norm3_d/batch_norm3_d_grad/batch_norm_grad_ext2 的 README(Atlas 200I/500 A2 支持、调用样例链接) ## 类型标签 - [x] Bug修复 - [x] 新特性 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9459 | 12 天前 | |
fix(bn_training_update_v2/grad): A5场景下补齐NCDHW格式的支持 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !9600 merge BNTrainingUpdateGrad into master fix(bn_training_update_v2/grad): A5场景下补齐NCDHW格式的支持 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 BNTrainingUpdateGrad、BNTrainingUpdateV2 两个算子的 arch35(Ascend 950PR/Ascend 950DT)tiling 此前仅放行 ND/NCHW(grad 另含 NHWC)格式标签,NCDHW(5D)标签会被 OP_CHECK_IF 以"非白名单格式"拒收(GRAPH_FAILED)。本 PR 将 NCDHW 纳入 grads/x、x 的 plane 连续格式白名单,使其能按 ND 同构的 [N,C,R...] plane 路径直算,补齐与 A2 契约对齐的通用格式支持面。 ### 改动原因 - NCDHW 是 5D 时的常用格式标签,A2 侧 binary_config 已实证 NCDHW 为其 5D 支持槽;arch35 实现未放行会导致 5D NCDHW 图下发到本算子时被 tiling 拒收,需额外 TransData 或路由失败。 - NCDHW 内存布局与 ND 同构(dim0=N、dim1=C、后导维展平为归一化轴 R),无需新建计算路径,仅需放行格式白名单 + 复用 ND plane 切分逻辑。 ### 改动方法 1. BNTrainingUpdateGrad tiling(bn_training_update_grad_tiling_arch35.cpp): - isPlaneFormat 白名单由 ND/NCHW 扩展为 ND/NCHW/NCDHW; - 新增 NCDHW 的 storage==origin shape 校验(与 NHWC 同款"宁拒不猜":origin 与 storage shape 不同源时内存实际序不可推断,宁拒不猜); - 校验通过后走原 ND plane 路径(numN=d0、numC=d1、inner=prod(d2:)),无新增计算路径。 2. BNTrainingUpdateV2 tiling(bn_training_update_v2_tiling_arch35.cpp): - x 格式校验由 ND/NCHW 扩展为 ND/NCHW/NCDHW; - 同样新增 NCDHW 的 storage==origin shape 校验,通过后走原 ND plane 路径。 3. 文档(README):grads/x、x 的支持格式加入 NCDHW,约束说明补充"NCDHW 为 5D 标签、内存布局与 ND 相同"。 4. 测试:grad/v2 UT 各新增 accept_ncdhw_format 用例(5D shape {2,4,3,5,6},C=4,期望 GRAPH_SUCCESS、tilingKey=0)。 涉及算子:BNTrainingUpdateGrad、BNTrainingUpdateV2(arch35 实现)。 数据类型:FLOAT32、FLOAT16、BFLOAT16(未变)。 产品:Ascend 950PR/Ascend 950DT。 ## 关联的Issue - #5411 ## 测试 - tiling UT:BNTrainingUpdateGrad 新增 accept_ncdhw_format(5D {2,4,3,5,6},FORMAT_NCDHW,grads/x 同格式,期望 GRAPH_SUCCESS、key=0);BNTrainingUpdateV2 新增 accept_ncdhw_format(5D {2,4,3,5,6},FORMAT_NCDHW,期望 GRAPH_SUCCESS)。 - NCDHW 走 ND plane 路径,原有 ND/NCHW 用例覆盖切分逻辑,无需新增切分用例。 ## 文档更新 - norm/bn_training_update_grad/README.md:grads/x 支持格式加入 NCDHW,约束说明补充 NCDHW 标签透传与内存同构说明。 - norm/bn_training_update_v2/README.md:x 支持格式加入 NCDHW 标签说明,约束说明补充 NCDHW 透传。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9600 | 11 天前 | |
fix(bn_training_update_v2/grad): A5场景下补齐NCDHW格式的支持 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !9600 merge BNTrainingUpdateGrad into master fix(bn_training_update_v2/grad): A5场景下补齐NCDHW格式的支持 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 BNTrainingUpdateGrad、BNTrainingUpdateV2 两个算子的 arch35(Ascend 950PR/Ascend 950DT)tiling 此前仅放行 ND/NCHW(grad 另含 NHWC)格式标签,NCDHW(5D)标签会被 OP_CHECK_IF 以"非白名单格式"拒收(GRAPH_FAILED)。本 PR 将 NCDHW 纳入 grads/x、x 的 plane 连续格式白名单,使其能按 ND 同构的 [N,C,R...] plane 路径直算,补齐与 A2 契约对齐的通用格式支持面。 ### 改动原因 - NCDHW 是 5D 时的常用格式标签,A2 侧 binary_config 已实证 NCDHW 为其 5D 支持槽;arch35 实现未放行会导致 5D NCDHW 图下发到本算子时被 tiling 拒收,需额外 TransData 或路由失败。 - NCDHW 内存布局与 ND 同构(dim0=N、dim1=C、后导维展平为归一化轴 R),无需新建计算路径,仅需放行格式白名单 + 复用 ND plane 切分逻辑。 ### 改动方法 1. BNTrainingUpdateGrad tiling(bn_training_update_grad_tiling_arch35.cpp): - isPlaneFormat 白名单由 ND/NCHW 扩展为 ND/NCHW/NCDHW; - 新增 NCDHW 的 storage==origin shape 校验(与 NHWC 同款"宁拒不猜":origin 与 storage shape 不同源时内存实际序不可推断,宁拒不猜); - 校验通过后走原 ND plane 路径(numN=d0、numC=d1、inner=prod(d2:)),无新增计算路径。 2. BNTrainingUpdateV2 tiling(bn_training_update_v2_tiling_arch35.cpp): - x 格式校验由 ND/NCHW 扩展为 ND/NCHW/NCDHW; - 同样新增 NCDHW 的 storage==origin shape 校验,通过后走原 ND plane 路径。 3. 文档(README):grads/x、x 的支持格式加入 NCDHW,约束说明补充"NCDHW 为 5D 标签、内存布局与 ND 相同"。 4. 测试:grad/v2 UT 各新增 accept_ncdhw_format 用例(5D shape {2,4,3,5,6},C=4,期望 GRAPH_SUCCESS、tilingKey=0)。 涉及算子:BNTrainingUpdateGrad、BNTrainingUpdateV2(arch35 实现)。 数据类型:FLOAT32、FLOAT16、BFLOAT16(未变)。 产品:Ascend 950PR/Ascend 950DT。 ## 关联的Issue - #5411 ## 测试 - tiling UT:BNTrainingUpdateGrad 新增 accept_ncdhw_format(5D {2,4,3,5,6},FORMAT_NCDHW,grads/x 同格式,期望 GRAPH_SUCCESS、key=0);BNTrainingUpdateV2 新增 accept_ncdhw_format(5D {2,4,3,5,6},FORMAT_NCDHW,期望 GRAPH_SUCCESS)。 - NCDHW 走 ND plane 路径,原有 ND/NCHW 用例覆盖切分逻辑,无需新增切分用例。 ## 文档更新 - norm/bn_training_update_grad/README.md:grads/x 支持格式加入 NCDHW,约束说明补充 NCDHW 标签透传与内存同构说明。 - norm/bn_training_update_v2/README.md:x 支持格式加入 NCDHW 标签说明,约束说明补充 NCDHW 透传。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9600 | 11 天前 | |
[doc] 文档描述修改 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !9551 merge BNTrainingUpdateGrad into master [doc] 文档描述修改 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 芯片描述信息调整 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 仅文档修改,不涉及测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了bn_training_update_grad/README.md、bn_training_update_v2/README.md、bn_training_update_v3/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9551 | 12 天前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 2 个月前 | |
docs: 完善 deep_norm、deep_norm_grad、dynamic_quant_update_scatter 算子的约束说明 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !9576 merge deliver/cosine-deepnorm-docs into master docs: 完善 deep_norm、deep_norm_grad、dynamic_quant_update_scatter 算子的约束说明 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 完善三个算子的 README 文档约束说明: - deep_norm/README.md:补充约束说明(x 维度 2-8、dtype 仅 FLOAT32/FLOAT16/BFLOAT16、mean/rstd 固定 FLOAT32、tiling 范围检查、full-load/partial-load 路径切换等)。 - deep_norm_grad/README.md:补充约束说明(dy/x/gx 等 shape 一致、dtype 约束、tiling 溢出检查、small-D 分支需要额外 workspace 等)。 - dynamic_quant_update_scatter/README.md:更新 axis 属性说明(支持负数取值并归一化)、细化约束说明(updates/var_scale/smooth_scales 约束、尾轴 32B 对齐、axis 内层轴要求等)。 ## 关联的Issue 无 ## 测试 文档变更,无需测试。 ## 文档更新 - norm/deep_norm/README.md - norm/deep_norm_grad/README.md - quant/dynamic_quant_update_scatter/README.md ## 类型标签 - [x] 文档更新 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9576 | 12 天前 | |
docs: 完善 deep_norm、deep_norm_grad、dynamic_quant_update_scatter 算子的约束说明 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !9576 merge deliver/cosine-deepnorm-docs into master docs: 完善 deep_norm、deep_norm_grad、dynamic_quant_update_scatter 算子的约束说明 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 完善三个算子的 README 文档约束说明: - deep_norm/README.md:补充约束说明(x 维度 2-8、dtype 仅 FLOAT32/FLOAT16/BFLOAT16、mean/rstd 固定 FLOAT32、tiling 范围检查、full-load/partial-load 路径切换等)。 - deep_norm_grad/README.md:补充约束说明(dy/x/gx 等 shape 一致、dtype 约束、tiling 溢出检查、small-D 分支需要额外 workspace 等)。 - dynamic_quant_update_scatter/README.md:更新 axis 属性说明(支持负数取值并归一化)、细化约束说明(updates/var_scale/smooth_scales 约束、尾轴 32B 对齐、axis 内层轴要求等)。 ## 关联的Issue 无 ## 测试 文档变更,无需测试。 ## 文档更新 - norm/deep_norm/README.md - norm/deep_norm_grad/README.md - quant/dynamic_quant_update_scatter/README.md ## 类型标签 - [x] 文档更新 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9576 | 12 天前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 2 个月前 | |
fix: group R 分组均匀分配 Co-authored-by: andong_hw<andong2@huawei.com> # message auto-generated for no-merge-commit merge: !9221 merge fix-group-empty-rgroup into master fix: group R 分组均匀分配 Created-by: andong_hw Commit-by: andong_hw Merged-by: cann-robot Description: ## 描述 修复 Group 模板 Phase1 的 R 分组截断分配 bug:原实现按 rPerCore = CeilDiv(rOuter, rGroupCnt) 均分 R chunk,CeilDiv 量化会造出空组(rStart ≥ rOuter 的核早退、不写 workspace 对应行),Phase 2 以 blockCount = rGroupCnt 全行 Reduce,将未写入的脏 GM 数据当 partial sum 读入,导致静默数值错误。改为大小核式均匀分配(rSmallGroupLoopCnt / rBigGroupCnt / rBigGroupLoopCnt),tiling 侧保证 rGroupCnt ≤ rLoopCntTotal 恒成立,每组 ≥1 chunk,无空组。涉及算子:euclidean_norm、bn_training_reduce、act_ulq_clamp_max_grad、act_ulq_clamp_min_grad。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5162 ## 测试 - kernel 编译验证:bash build.sh --ops=euclidean_norm,bn_training_reduce,act_ulq_clamp_max_grad,act_ulq_clamp_min_grad --noexec --soc=ascend950 -j32 编译通过 - euclidean_norm 上板复现并验证修复:shape (11396,150) fp32 axes=[0],修复前精度 FAIL(输出 NaN/超大值),修复后 PASS ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!9221 | 16 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 16 天前 | |
docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9399 merge fix/aclnn-doc-support-scope into master docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 三类「资料与实现不符」的订正,来源于测试反馈的资料核对。**不改动任何算子实现**,唯一的非文档改动是补了 2 条 tiling 边界 UT。 **一、GroupNormSiluQuant / GroupNormSilu:输出 Tensor 的「非连续Tensor」列标注与实现不符** aclnnGroupNormSiluQuant 的 out / meanOut / rstdOut 三行在 docs 中标 -(未标注)、在 README 中标 x(不支持);aclnnGroupNormSilu 的同三行标 x。而三者的 op_api 实现中每个输出均经 l0op::ViewCopy 写回(空 Tensor 分支的 FillScalar 同样经 ViewCopy),即支持非连续输出。三处统一改为 √。 **二、GroupNormSiluQuant:空 Tensor 支持范围声明过宽** docs 与 README 原文为「支持空Tensor(任意维度为0)」。实现自首版 5d36b373b 起,CheckAttr 即拒收 N(第 0 维)或 C(第 1 维)为 0 的输入并返回 161002。表述收窄为「支持空Tensor:N(第0维)与C(第1维)需大于0,其余维度可为0」,填充行为(out 为空、meanOut 填 0、rstdOut 填 NAN)与原描述一致,保留不变。 **三、ScatterMin / ScatterMax / ScatterMul / ScatterDiv:aclnn 资料缺少 varRef 首维上限约束** 四个算子共用 scatter_reduce_common tiling,其中 varFirstDim > INT32_MAX 即拒收——并行归并排序以 INT32_MAX 作为补齐哨兵,首维再大将使合法索引与哨兵不可区分。该约束已在四个算子的 README「约束说明」中声明(2e6678836,与实现同笔提交),但四篇 aclnn 资料的「约束说明」节遗漏,本次补入「varRef的首维大小不超过INT32_MAX。」。 **四、补齐 ScatterMin tiling 的边界用例** 既有 4 条 tiling UT 均为常规规模,未覆盖 INT32_MAX 边界。新增两条:首维 = INT32_MAX 期望接受、= INT32_MAX + 1 期望拒收。 ## 关联的Issue 关联Issue #5270 —— https://gitcode.com/cann/ops-nn/issues/5270 ## 测试 **1. Host UT** bash build.sh -u --ophost --ops=scatter_min --soc=ascend950 ScatterMinTiling 共 9 条用例全部通过(原 4 条 + 本次新增 2 条 + 其余 3 条),含新增的 test_tiling_var_dim0_eq_int32max(期望 GRAPH_SUCCESS)与 test_tiling_var_dim0_over_int32max(期望拒收)。 **2. Ascend 950PR 真机实测(CANN 9.2.0 发布包内置 kernel)** - 非连续输出:为 aclnnGroupNormSiluQuant 与 aclnnGroupNormSilu 构造末维 stride=2 的非连续输出,结果均与全连续基线逐元素一致;并在 storage 空隙中预置哨兵值,跑完检查未被改写,确认是按 stride 散射写入而非连续覆盖。 - 空 Tensor 逐轴:N=0、C=0 被拒收并返回 161002;H=0、W=0 通过,meanOut 填 0、rstdOut 填 NAN。 ## 文档更新 更新了 7 篇资料,均只改与实现不符的字段,不涉及接口与行为变更: - norm/group_norm_silu_quant/docs/aclnnGroupNormSiluQuant.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu_quant/README.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu/docs/aclnnGroupNormSilu.md(非连续标记 ×3) - index/scatter_min/docs/aclnnScatterMin.md、index/scatter_max/docs/aclnnScatterMax.md、index/scatter_mul/docs/aclnnScatterMul.md、index/scatter_div/docs/aclnnScatterDiv.md(各补 1 条首维约束) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9399 | 14 天前 | |
docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9399 merge fix/aclnn-doc-support-scope into master docs(aclnn): 修正 GroupNormSiluQuant/GroupNormSilu 与 scatter 四算子的资料与实现不一致项 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 三类「资料与实现不符」的订正,来源于测试反馈的资料核对。**不改动任何算子实现**,唯一的非文档改动是补了 2 条 tiling 边界 UT。 **一、GroupNormSiluQuant / GroupNormSilu:输出 Tensor 的「非连续Tensor」列标注与实现不符** aclnnGroupNormSiluQuant 的 out / meanOut / rstdOut 三行在 docs 中标 -(未标注)、在 README 中标 x(不支持);aclnnGroupNormSilu 的同三行标 x。而三者的 op_api 实现中每个输出均经 l0op::ViewCopy 写回(空 Tensor 分支的 FillScalar 同样经 ViewCopy),即支持非连续输出。三处统一改为 √。 **二、GroupNormSiluQuant:空 Tensor 支持范围声明过宽** docs 与 README 原文为「支持空Tensor(任意维度为0)」。实现自首版 5d36b373b 起,CheckAttr 即拒收 N(第 0 维)或 C(第 1 维)为 0 的输入并返回 161002。表述收窄为「支持空Tensor:N(第0维)与C(第1维)需大于0,其余维度可为0」,填充行为(out 为空、meanOut 填 0、rstdOut 填 NAN)与原描述一致,保留不变。 **三、ScatterMin / ScatterMax / ScatterMul / ScatterDiv:aclnn 资料缺少 varRef 首维上限约束** 四个算子共用 scatter_reduce_common tiling,其中 varFirstDim > INT32_MAX 即拒收——并行归并排序以 INT32_MAX 作为补齐哨兵,首维再大将使合法索引与哨兵不可区分。该约束已在四个算子的 README「约束说明」中声明(2e6678836,与实现同笔提交),但四篇 aclnn 资料的「约束说明」节遗漏,本次补入「varRef的首维大小不超过INT32_MAX。」。 **四、补齐 ScatterMin tiling 的边界用例** 既有 4 条 tiling UT 均为常规规模,未覆盖 INT32_MAX 边界。新增两条:首维 = INT32_MAX 期望接受、= INT32_MAX + 1 期望拒收。 ## 关联的Issue 关联Issue #5270 —— https://gitcode.com/cann/ops-nn/issues/5270 ## 测试 **1. Host UT** bash build.sh -u --ophost --ops=scatter_min --soc=ascend950 ScatterMinTiling 共 9 条用例全部通过(原 4 条 + 本次新增 2 条 + 其余 3 条),含新增的 test_tiling_var_dim0_eq_int32max(期望 GRAPH_SUCCESS)与 test_tiling_var_dim0_over_int32max(期望拒收)。 **2. Ascend 950PR 真机实测(CANN 9.2.0 发布包内置 kernel)** - 非连续输出:为 aclnnGroupNormSiluQuant 与 aclnnGroupNormSilu 构造末维 stride=2 的非连续输出,结果均与全连续基线逐元素一致;并在 storage 空隙中预置哨兵值,跑完检查未被改写,确认是按 stride 散射写入而非连续覆盖。 - 空 Tensor 逐轴:N=0、C=0 被拒收并返回 161002;H=0、W=0 通过,meanOut 填 0、rstdOut 填 NAN。 ## 文档更新 更新了 7 篇资料,均只改与实现不符的字段,不涉及接口与行为变更: - norm/group_norm_silu_quant/docs/aclnnGroupNormSiluQuant.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu_quant/README.md(非连续标记 ×3、空 Tensor 范围) - norm/group_norm_silu/docs/aclnnGroupNormSilu.md(非连续标记 ×3) - index/scatter_min/docs/aclnnScatterMin.md、index/scatter_max/docs/aclnnScatterMax.md、index/scatter_mul/docs/aclnnScatterMul.md、index/scatter_div/docs/aclnnScatterDiv.md(各补 1 条首维约束) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9399 | 14 天前 | |
规范化修改产品术语名 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !8341 merge master into master 规范化修改产品术语名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 产品文档中产品名需规范化 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#4260](https://gitcode.com/cann/ops-nn/issues/4260) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 相关readme和aclnn API MD ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8341 | 1 个月前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 16 天前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 16 天前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 16 天前 | |
docs: add in_training_reduce_grad to op_list Co-authored-by: handsomeRobot_SK<suke13@huawei.com> # message auto-generated for no-merge-commit merge: !8793 merge in_training_reduce_grad into master docs: add in_training_reduce_grad to op_list Created-by: handsomeRobot_SK Commit-by: handsomeRobot_SK Merged-by: cann-robot Description: ## PR: feat(norm): add InTrainingReduceGrad operator ### 概述 新增 InTrainingReduceGrad 算子,实现 InstanceNorm 训练反向 reduce 阶段的梯度计算。在训练反向传播中,根据上游梯度 dy、前向输入 x、归约统计量(mean/variance)、以及 res_gamma/res_beta(由 in_training_update_grad 计算的 per-(N,C) 部分和)和缩放参数 gamma,计算前向输入 x 的梯度 pd_x。算子基于 Ascend C 开发,支持 Ascend950 (arch35/DAV_3510) 平台,仅支持 GEIR 图模式调用。 InstanceNorm 训练反向分两阶段执行:本算子为第一阶段(reduce 阶段),对空间维归约并计算输入梯度 pd_x;与 in_training_update_grad(update 阶段,计算 gamma/beta 梯度)配套使用。 ### 算子功能 实现 InstanceNorm 训练反向 reduce 阶段的梯度公式(六步链式计算): $$ \begin{aligned} \text{data\_sqrt} &= \sqrt{\text{variance} + \text{eps}} \\ \text{scale\_inv} &= \frac{\text{res\_gamma}}{num} \\ \text{multiplier} &= -\frac{\text{scale\_inv}}{\text{data\_sqrt}} \\ \text{addend} &= \frac{\text{mean}}{\text{data\_sqrt}} \cdot \text{scale\_inv} - \frac{\text{res\_beta}}{num} \\ \text{coef} &= \text{dy} + \text{multiplier} \cdot x + \text{addend} \\ \text{pd\_x} &= \frac{\text{coef} \cdot \text{gamma}}{\text{data\_sqrt}} \end{aligned} $$ 其中 $num = H \times W$ 为空间维元素数,$variance/mean$ 为前向 reduce 阶段计算的 per-(N,C) 统计量,$res\_gamma/res\_beta$ 为由 in_training_update_grad 计算的 per-(N,C) 部分和($\Sigma(dy \cdot x_{norm})$ 与 $\Sigma dy$),$gamma$ 为可学习缩放参数。 **关键特性**: - **Broadcast 范式**:variance/mean/res_gamma/res_beta/gamma 为 [N,C,1,1] 形状,广播到 dy/x 的 [N,C,H,W] 形状 - **NDDMA 广播加载**:利用 NDDMA 硬件广播能力,per-(N,C) 参数仅加载一份并广播到 H×W 空间维,减少 GM 访问 - **VF 融合**:coef = dy + multiplier * x + addend 三元计算链通过 Vector Fusion(CoefVF)合并为单条 VF 指令,减少 Vector 流水线往返 - **六缓冲流水线**:P=6 UB 缓冲区(B0–B5),覆盖 copy-in → scalar 计算 → VF 融合 → copy-out 全链路双缓冲 - **FP16 Cast up**:半精度 dy/x 输入内部 Cast 到 FP32 计算,结果 Cast 回原始精度 ### 对标竞品 | 竞品 | 接口 | 说明 | |------|------|------| | PyTorch | torch.nn.InstanceNorm backward | 功能对标,PyTorch 在 ATen 层实现反向 | | TensorFlow | tf.raw_ops.InstanceNormGrad | 功能对标,CANN 接口拆分为 reduce + update 两阶段 | ### 支持规格 | 项目 | 支持情况 | |------|---------| | **数据类型** | float16, float32(dy/x/pd_x);float32(variance/mean/res_gamma/res_beta/gamma) | | **数据格式** | NCHW, NHWC | | **平台** | Ascend950 (arch35) | | **调用模式** | GEIR 图模式 | | **输入端口** | 7 个(dy, x, variance, mean, res_gamma, res_beta, gamma) | | **输出端口** | 1 个(pd_x) | | **维度** | 仅支持 4D(rank=4) | ### 交付件清单 norm/in_training_reduce_grad/ ├── CMakeLists.txt # 构建配置 ├── CODE_REVIEW.md # 代码检视报告 ├── op_graph/ │ ├── CMakeLists.txt │ ├── in_training_reduce_grad_proto.h # GEIR 原型定义(7输入1输出) │ └── in_training_reduce_grad_graph_infer.cpp # 图模式 InferDataType ├── op_host/ │ ├── CMakeLists.txt │ ├── in_training_reduce_grad_def.cpp # 算子定义(7输入1输出) │ ├── in_training_reduce_grad_infershape.cpp # 形状推导(broadcast(dy,x)) │ └── arch35/ │ ├── in_training_reduce_grad_tiling_arch35.h # Tiling 类声明 + CompileInfo │ └── in_training_reduce_grad_tiling_arch35.cpp # Tiling 计算(586行) ├── op_kernel/ │ ├── CMakeLists.txt │ ├── in_training_reduce_grad.cpp # Kernel 入口(7输入1输出+workspace+tiling) │ └── arch35/ │ ├── in_training_reduce_grad_kernel.h # Kernel 实现(529行,六步链式+VF融合) │ ├── in_training_reduce_grad_struct.h # TPL 模板参数声明(RANK=4/8) │ └── in_training_reduce_grad_tiling_struct.h # Tiling 数据结构(共享 Host/Kernel) ### 测试验证 #### 单元测试 (UT) - **覆盖范围**:InferShape + Tiling - **状态**:待交付 #### GEIR 端对端验证 - **状态**:待交付 - **精度标准**:商用标准(双标杆 Ratio),L0 级(MARE Ratio≤10) - **Golden 标杆**:PyTorch torch.nn.InstanceNorm backward / TensorFlow InstanceNormGrad - **覆盖范围**: - 数据类型:FP32 / FP16 - 数据格式:NCHW / NHWC - 特殊场景:空 Tensor(H*W=0)、大 shape、多核切分边界 ### 代码质量 - ✅ 文件头格式统一(Copyright + ROLE 注释块) - ✅ Tiling 校验使用 OP_LOGE 统一日志格式(format/dtype/shape/rank 四级校验) - ✅ dtype 校验使用 OP_CHECK_NULL_WITH_CONTEXT + OP_LOGE 格式 - ✅ 魔鬼数字常量化(kMaxInputSlots=7, kMaxOutputSlots=1, kPhysNodes=6) - ✅ InferShape 支持 UNKNOWN_RANK 传播 - ✅ Kernel 使用 NDDMA 广播 + VF 融合优化 - ✅ 代码检视通过(CODE_REVIEW.md:43 PASS / 0 FAIL / 3 SUSPICIOUS) ### 编译验证 bash cd ops-nn bash build.sh --soc=ascend950 --pkg --ops=in_training_reduce_grad -j16 # 输出 ✅ 编译成功 ✅ 生成算子包:cann-ops-nn-custom_linux-x86_64.run ### 关键实现细节 #### 1. 算子接口 | 参数 | 类型 | 说明 | |:-----|:-----|:-----| | INPUT dy | Tensor (REQUIRED) | 上游梯度,shape=[N,C,H,W],fp16/fp32 | | INPUT x | Tensor (REQUIRED) | 前向输入,shape 同 dy,fp16/fp32 | | INPUT variance | Tensor (REQUIRED) | 前向归约方差,shape=[N,C,1,1],fp32 | | INPUT mean | Tensor (REQUIRED) | 前向归约均值,shape=[N,C,1,1],fp32 | | INPUT res_gamma | Tensor (REQUIRED) | update 阶段部分和 Σ(dy·x_norm),shape=[N,C,1,1],fp32 | | INPUT res_beta | Tensor (REQUIRED) | update 阶段部分和 Σdy,shape=[N,C,1,1],fp32 | | INPUT gamma | Tensor (REQUIRED) | 可学习缩放参数,shape=[N,C,1,1],fp32 | | OUTPUT pd_x | Tensor (REQUIRED) | 输入 x 的梯度,shape 同 dy,fp16/fp32 | #### 2. Kernel 实现 - **架构**:6 UB 缓冲(B0–B5)流水线,NDDMA 广播加载 + VF 融合 - **模板参数**:RANK(4/8),通过 ASCENDC_TPL 分发;dtype 通过 DTYPE_DY 宏选择 - **六步链式计算**: 1. data_sqrt = sqrt(variance + eps)(Adds + Sqrt) 2. scale_inv = res_gamma / num(Muls) 3. multiplier = -scale_inv / data_sqrt(Div + Muls(-1)) 4. addend = (mean / data_sqrt) * scale_inv - res_beta/num(Div + Mul + Muls + Add) 5. coef = dy + multiplier * x + addend(VF 融合 CoefVF) 6. pd_x = coef * gamma / data_sqrt(Mul + Div) #### 3. 精度策略 - **FP32**:原生计算,无转换 - **FP16**:Cast→FP32 计算→Cast 回 fp16(CAST_RINT) #### 4. Tiling 实现 - **格式校验**:仅 NCHW / NHWC - **PadAndSqueeze**:前向 pad 到统一 rank,squeeze 掉全 1 维度 - **FindSplitAxis**:按 UB 容量(per_buf_bytes / 4)选择切分轴 - **MultiCoreSplit**:total_tiles = outer_prod × a_o,按核数均衡分配 - **PrecomputeStrides**:size-1 维度 stride=0(广播标记) - **TilingKey**:RANK_4 / RANK_8 二选一 #### 5. Broadcast 优化 - variance/mean/res_gamma/res_beta/gamma 为 [N,C,1,1],广播到 [N,C,H,W] - NDDMA 硬件广播:per-(N,C) 参数仅从 GM 加载一份,UB 内广播到 H×W - 避免重复 GM 读取,降低带宽压力 ### 依赖与限制 - **依赖**:CANN 9.0.0 - **配套算子**:in_training_update_grad(update 阶段,计算 gamma/beta 梯度并提供 res_gamma/res_beta) - **限制**: - 仅支持 GEIR 图模式(无 ACLNN 接口) - 仅支持 Ascend950 (arch35) - 仅支持 4D 张量(rank=4,NCHW/NHWC) - dy 与 x 的 shape/dtype 必须完全一致 - variance/mean/res_gamma/res_beta/gamma 五者 shape 必须相同,且空间维为 1 - 支持空 Tensor(H*W=0 时短路返回) ### Checklist - [x] 代码符合 ops-nn 内置算子标准 - [x] 文件头格式统一 - [x] Tiling 校验规范化(format/dtype/shape/rank 四级) - [x] 代码检视通过(CODE_REVIEW.md) - [x] clang-format 格式化 - [x] InferShape 支持 UNKNOWN_RANK - [x] NDDMA 广播 + VF 融合优化 - [ ] 单元测试通过(待交付) - [ ] GEIR 端对端验证通过(待交付) - [ ] 编译安装验证通过(待交付) - [ ] 文档完整(README + 示例,待交付) See merge request: cann/ops-nn!8793 | 17 天前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 16 天前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 16 天前 | |
docs: add InplaceAddLayerNormFusionPass doc Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9666 merge inplace_aln_pass_doc into master docs: add InplaceAddLayerNormFusionPass doc Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 为现有InplaceAddLayerNormFusionPass融合规则补充独立资料页。该规则在推理场景下,将图中的AddLayerNorm算子替换为InplaceAddLayerNorm算子,使层归一化结果和加法结果分别原地写回x1和x2。 资料同步说明规则的使用约束: - AddLayerNorm算子的bias为可选输入,支持带bias和不带bias的场景。 - x1和x2必须满足原地写回安全要求:除当前AddLayerNorm算子外不能被其他节点消费,且不能来自连续内存排布的多输出节点。 - 静态shape场景下,x1占用的内存大小必须大于等于L2缓存容量的1/8,且小于等于L2缓存容量的2倍。 - 动态shape场景下,x1的最后一维必须为5120。 - AddLayerNorm算子的x1、x2和gamma输入的数据类型必须相同。 同时新增融合前后拓扑对比图,展示AddLayerNorm算子替换为InplaceAddLayerNorm算子前后的图结构。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5459 ## 测试 - 本次仅新增文档和配图,不涉及代码逻辑变更,未执行代码测试。 - 已检查Markdown格式、PNG图片文件格式、图片尺寸及图片引用路径。 ## 文档更新 - 新增 norm/inplace_add_layer_norm/docs/InplaceAddLayerNormFusionPass.md,说明融合模式和使用约束。 - 新增docs/zh/figures/InplaceAddLayerNormFusionPass_1.png,展示融合前后的图结构。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9666 | 10 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 16 天前 | |
feat: 迁移第二批 TF 算子插件(新增 21 个 TF plugin 注册文件) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9685 merge tf-plugin-part2 into master feat: 迁移第二批 TF 算子插件(新增 21 个 TF plugin 注册文件) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 本 PR 为 TensorFlow(TF)算子插件迁移的第二批(分支 tf-plugin-part2),新增 21 个 *_tf_plugin.cpp 插件注册文件,覆盖 common、conv、matmul、pooling、optim、norm、index、vfusion 模块。每个文件通过 REGISTER_CUSTOM_OP 将 TF 框架算子注册为自定义算子: - .FrameworkType(TENSORFLOW):声明算子来源于 TF 框架; - .OriginOpType(...):映射原始 TF 算子类型(含 Resource* 变体,如 ApplyAddSign / ResourceApplyAddSign); - 参数解析:多数算子通过 AutoMappingByOpFn 自动映射属性;Conv2D 额外将 filter format 固定为 HWCN,并根据 explicit_paddings 与输入 format(NCHW/NHWC)生成 pads 属性;Conv2DBackpropInput / Conv2DBackpropFilter / Conv3DBackpropFilter / Conv3DBackpropInput / AvgPool3D 等设置 NDHWC/NCDHW/DHWCN 等 format 与 pads 默认值;BatchMatMulV2 将 adj_x / adj_y 映射为 adj_x1 / adj_x2,并对 BatchMatMulV3 提供 ParseOpToGraphFn 将算子展开为 Data -> BatchMatMulV3 -> Cast 子图;InstanceNormGrad 提供 FusionParseParamsFn 融合参数解析接口; - .ImplyType(ImplyType::TVM):所有注册算子采用 TVM 实现。 ### 新增算子清单(21 个文件) | 文件 | 注册算子(OriginOpType) | |------|-------------------------| | common/src/framework/apply_add_sign_tf_plugin.cpp | ApplyAddSign(ApplyAddSign / ResourceApplyAddSign) | | common/src/framework/basic_lstm_cell_tf_plugin.cpp | BasicLSTMCell | | common/src/framework/basic_lstm_cell_grad_tf_plugin.cpp | BasicLSTMCellCStateGrad / BasicLSTMCellWeightGrad / BasicLSTMCellInputGrad | | common/src/framework/dynamic_lstm_tf_plugin.cpp | DynamicLSTM | | conv/conv2d_v2/framework/conv2d_tf_plugin.cpp | Conv2D | | conv/conv3d_v2/framework/conv3d_tf_plugin.cpp | Conv3D | | conv/conv3d_backprop_filter_v2/framework/conv2d_backprop_filter_tf_plugin.cpp | Conv2DBackpropFilter | | conv/conv3d_backprop_filter_v2/framework/conv3d_backprop_filter_tf_plugin.cpp | Conv3DBackpropFilter(Conv3DBackpropFilterV2) | | conv/conv3d_backprop_input_v2/framework/conv2d_backprop_input_tf_plugin.cpp | Conv2DBackpropInput | | conv/conv3d_backprop_input_v2/framework/conv3d_backprop_input_tf_plugin.cpp | Conv3DBackpropInput(Conv3DBackpropInputV2) | | index/non_zero_with_value_shape_v2/framework/non_zero_with_value_shape_v2_tf_plugin.cpp | NonZeroWithValueShapeV2 | | matmul/mat_mul_v3/framework/matmul_tf_plugin.cpp | MatMulV2(MatMul) | | matmul/batch_mat_mul_v3/framework/batch_matmul_tf_plugin.cpp | BatchMatMulV2(BatchMatMul / BatchMatMulV2 / BatchMatMulV3) | | norm/instance_norm_grad/framework/instance_norm_grad_tf_plugin.cpp | InstanceNormGrad | | optim/inplace_apply_adagrad_da/framework/apply_adagrad_da_tf_plugin.cpp | ApplyAdagradDA(ApplyAdagradDA / ResourceApplyAdagradDA) | | optim/inplace_apply_adagrad_v2/framework/apply_adagradv2_tf_plugin.cpp | ApplyAdagradV2(ApplyAdagradV2 / ResourceApplyAdagradV2) | | optim/inplace_apply_power_sign/framework/apply_power_sign_tf_plugin.cpp | ApplyPowerSign(ApplyPowerSign / ResourceApplyPowerSign) | | pooling/avg_pool3_d/framework/avg_pool3d_tf_plugin.cpp | AvgPool3D | | pooling/dilation2_d/framework/dilation2d_tf_plugin.cpp | Dilation2D | | pooling/max_pool_3d_grad_grad/framework/max_pool3d_grad_grad_tf_plugin.cpp | MaxPool3DGradGrad | | vfusion/normalize_bbox/framework/normalize_bbox_tf_plugin.cpp | NormalizeBBox | ### 改动原因 TF 算子插件迁移系列工作的第二批:将 TF 算子按模块拆分为独立的 */framework/*_tf_plugin.cpp 注册文件,统一注册方式与代码组织。 ## 关联的Issue - #5464 ## 测试 本次变更仅新增插件注册文件,未包含测试用例变更。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9685 | 9 天前 | |
feat: rename op_api_def.h to op_api_def_nn.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8360 merge rename_opapidef into master feat: rename op_api_def.h to op_api_def_nn.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 本次改动将 op_api/op_api_def.h 重命名为 op_api/op_api_def_nn.h,并同步更新了所有引用该头文件的源文件与测试文件中的 #include 路径,共涉及 161 个文件。 改动原因:将 op_api 定义头文件统一命名为 op_api_def_nn.h,以更好地体现其所属模块(NN 算子)的语义,便于后续与其他模块的头文件区分管理。 此外,在提交过程中发现 4 个文件(aclnn_foreach_addcmul_scalar_v2.cpp、aclnn_max_unpool3d.cpp、test_aclnn_addmv.cpp、test_aclnn_fast_batchnorm_backward.cpp)的许可证头使用了非标准的旧格式,导致 OAT 合规检查失败。本次一并将其更新为标准的 CANN 开源许可证头格式,确保通过合规校验。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4954 ## 测试 - 通过 pre-commit 钩子校验:trailing whitespace、end-of-file-fixer、clang-format 均通过 - 通过 OAT 合规检查(161 个文件全部通过) - 本次为头文件重命名改动,不涉及逻辑变更,编译依赖关系保持不变 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:头文件重命名与许可证头修复 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8360 | 23 天前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 16 天前 | |
docs: add LayerNormRemoveBroadcastFusionPass doc Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9631 merge ln_pass_doc into master docs: add LayerNormRemoveBroadcastFusionPass doc Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 为现有LayerNormRemoveBroadcastFusionPass融合规则补充独立资料页。该规则在Ascend 950PR/Ascend 950DT场景下,将LayerNorm算子gamma和beta输入前的BroadcastTo从图中删除,使gamma和beta直接作为LayerNorm算子的输入,并将begin_norm_axis和begin_params_axis统一设置为归一化维度的起始轴。 资料同步说明规则的使用约束: - LayerNorm算子的gamma和beta输入前均为BroadcastTo,且两个BroadcastTo的shape输入相同。 - 输入x、gamma和beta均为静态shape。 - gamma和beta不为标量,二者的shape和数据类型相同。 - gamma的维数不大于x的维数,且gamma的shape与x从归一化轴开始的后缀shape相同。 - LayerNorm算子的begin_norm_axis换算为非负轴后,指向归一化维度的起始轴。 同时新增融合前后拓扑对比图,展示两个BroadcastTo节点被移除前后的图结构。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5430 ## 测试 - 本次仅新增文档和配图,不涉及代码逻辑变更,未执行代码测试。 - 已检查Markdown格式、图片文件格式及图片引用路径。 ## 文档更新 - 新增 norm/layer_norm/docs/LayerNormRemoveBroadcastFusionPass.md,说明融合模式和使用约束。 - 新增docs/zh/figures/LayerNormRemoveBroadcastFusionPass_1.png,展示融合前后的图结构。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9631 | 11 天前 | |
LayerNorm类算子VL/UB block去硬编码 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9042 merge ln_VL into master LayerNorm类算子VL/UB block去硬编码 Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 本 PR 对 norm 系列算子 arch35 路径下的 VL/UB block size 处理进行代码清理,去除散落在各算子中的硬编码常量 32,统一改用平台 API 在运行时获取,消除魔法数字,提升代码可维护性与跨硬件适配能力。 ### 改动原因 arch35 路径下 add_layer_norm_quant、layer_norm_grad/grad_v3、layer_norm_v3、layer_norm_v4 等算子的 host tiling 与 kernel 侧多处使用 constexpr ... = 32 表示 UB block 字节数(部分派生出 B32_ALIGN_NUM = 32/sizeof(float) 等常量)。这些魔法数字: - 与具体硬件强绑定,未来硬件 block size 变化时需要逐文件修改,维护成本高; - 同一语义在 host 侧(BLOCK_SIZE/BLOCK_BYTES/B32_ALIGN_NUM)与 kernel 侧(自定义 GetUbBlockSize()、BLOCK_SIZE)重复定义,缺乏单一数据源。 ### 改动方法 统一替换为平台 API: - **Host tiling 侧**:删除本地 BLOCK_SIZE/BLOCK_BYTES/B32_ALIGN_NUM 等常量,改用 Ops::Base::GetUbBlockSize(context_)(新增 #include "op_common/op_host/util/platform_util.h"),或复用类成员 this->blockSize_; - **Kernel 侧**(layer_norm_v3/v4 common/regbase/welford):constexpr static int64_t BLOCK_SIZE = 32 → platform::GetUbBlockSize()(新增 #include "../../inc/platform.h"); - **Kernel 侧**(layer_norm_grad_base.h):删除自定义 GetUbBlockSize() 内联函数,统一使用 AscendC 框架的 BLOCK_SIZE。 涉及算子:add_layer_norm_quant、layer_norm_grad、layer_norm_grad_v3、layer_norm_v3、layer_norm_v4。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5099 ## 测试 - pass ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码清理(去除硬编码常量) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9042 | 11 天前 | |
LayerNorm类算子VL/UB block去硬编码 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9042 merge ln_VL into master LayerNorm类算子VL/UB block去硬编码 Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 本 PR 对 norm 系列算子 arch35 路径下的 VL/UB block size 处理进行代码清理,去除散落在各算子中的硬编码常量 32,统一改用平台 API 在运行时获取,消除魔法数字,提升代码可维护性与跨硬件适配能力。 ### 改动原因 arch35 路径下 add_layer_norm_quant、layer_norm_grad/grad_v3、layer_norm_v3、layer_norm_v4 等算子的 host tiling 与 kernel 侧多处使用 constexpr ... = 32 表示 UB block 字节数(部分派生出 B32_ALIGN_NUM = 32/sizeof(float) 等常量)。这些魔法数字: - 与具体硬件强绑定,未来硬件 block size 变化时需要逐文件修改,维护成本高; - 同一语义在 host 侧(BLOCK_SIZE/BLOCK_BYTES/B32_ALIGN_NUM)与 kernel 侧(自定义 GetUbBlockSize()、BLOCK_SIZE)重复定义,缺乏单一数据源。 ### 改动方法 统一替换为平台 API: - **Host tiling 侧**:删除本地 BLOCK_SIZE/BLOCK_BYTES/B32_ALIGN_NUM 等常量,改用 Ops::Base::GetUbBlockSize(context_)(新增 #include "op_common/op_host/util/platform_util.h"),或复用类成员 this->blockSize_; - **Kernel 侧**(layer_norm_v3/v4 common/regbase/welford):constexpr static int64_t BLOCK_SIZE = 32 → platform::GetUbBlockSize()(新增 #include "../../inc/platform.h"); - **Kernel 侧**(layer_norm_grad_base.h):删除自定义 GetUbBlockSize() 内联函数,统一使用 AscendC 框架的 BLOCK_SIZE。 涉及算子:add_layer_norm_quant、layer_norm_grad、layer_norm_grad_v3、layer_norm_v3、layer_norm_v4。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5099 ## 测试 - pass ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码清理(去除硬编码常量) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9042 | 11 天前 | |
将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9549 merge master into master 将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 主要修改内容: 1. nn仓完成和legacy common 动态库解耦后,卷积和matmul的不同版本 ophost ut 已经不能混合一起跑了。需要版本隔离 2. ascend950的ut全量编译 失败,需要修改 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/5425](https://gitcode.com/cann/ops-nn/issues/5425) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9549 | 11 天前 | |
LayerNorm类算子VL/UB block去硬编码 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9042 merge ln_VL into master LayerNorm类算子VL/UB block去硬编码 Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 本 PR 对 norm 系列算子 arch35 路径下的 VL/UB block size 处理进行代码清理,去除散落在各算子中的硬编码常量 32,统一改用平台 API 在运行时获取,消除魔法数字,提升代码可维护性与跨硬件适配能力。 ### 改动原因 arch35 路径下 add_layer_norm_quant、layer_norm_grad/grad_v3、layer_norm_v3、layer_norm_v4 等算子的 host tiling 与 kernel 侧多处使用 constexpr ... = 32 表示 UB block 字节数(部分派生出 B32_ALIGN_NUM = 32/sizeof(float) 等常量)。这些魔法数字: - 与具体硬件强绑定,未来硬件 block size 变化时需要逐文件修改,维护成本高; - 同一语义在 host 侧(BLOCK_SIZE/BLOCK_BYTES/B32_ALIGN_NUM)与 kernel 侧(自定义 GetUbBlockSize()、BLOCK_SIZE)重复定义,缺乏单一数据源。 ### 改动方法 统一替换为平台 API: - **Host tiling 侧**:删除本地 BLOCK_SIZE/BLOCK_BYTES/B32_ALIGN_NUM 等常量,改用 Ops::Base::GetUbBlockSize(context_)(新增 #include "op_common/op_host/util/platform_util.h"),或复用类成员 this->blockSize_; - **Kernel 侧**(layer_norm_v3/v4 common/regbase/welford):constexpr static int64_t BLOCK_SIZE = 32 → platform::GetUbBlockSize()(新增 #include "../../inc/platform.h"); - **Kernel 侧**(layer_norm_grad_base.h):删除自定义 GetUbBlockSize() 内联函数,统一使用 AscendC 框架的 BLOCK_SIZE。 涉及算子:add_layer_norm_quant、layer_norm_grad、layer_norm_grad_v3、layer_norm_v3、layer_norm_v4。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5099 ## 测试 - pass ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码清理(去除硬编码常量) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9042 | 11 天前 | |
LayerNorm类算子VL/UB block去硬编码 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9042 merge ln_VL into master LayerNorm类算子VL/UB block去硬编码 Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 本 PR 对 norm 系列算子 arch35 路径下的 VL/UB block size 处理进行代码清理,去除散落在各算子中的硬编码常量 32,统一改用平台 API 在运行时获取,消除魔法数字,提升代码可维护性与跨硬件适配能力。 ### 改动原因 arch35 路径下 add_layer_norm_quant、layer_norm_grad/grad_v3、layer_norm_v3、layer_norm_v4 等算子的 host tiling 与 kernel 侧多处使用 constexpr ... = 32 表示 UB block 字节数(部分派生出 B32_ALIGN_NUM = 32/sizeof(float) 等常量)。这些魔法数字: - 与具体硬件强绑定,未来硬件 block size 变化时需要逐文件修改,维护成本高; - 同一语义在 host 侧(BLOCK_SIZE/BLOCK_BYTES/B32_ALIGN_NUM)与 kernel 侧(自定义 GetUbBlockSize()、BLOCK_SIZE)重复定义,缺乏单一数据源。 ### 改动方法 统一替换为平台 API: - **Host tiling 侧**:删除本地 BLOCK_SIZE/BLOCK_BYTES/B32_ALIGN_NUM 等常量,改用 Ops::Base::GetUbBlockSize(context_)(新增 #include "op_common/op_host/util/platform_util.h"),或复用类成员 this->blockSize_; - **Kernel 侧**(layer_norm_v3/v4 common/regbase/welford):constexpr static int64_t BLOCK_SIZE = 32 → platform::GetUbBlockSize()(新增 #include "../../inc/platform.h"); - **Kernel 侧**(layer_norm_grad_base.h):删除自定义 GetUbBlockSize() 内联函数,统一使用 AscendC 框架的 BLOCK_SIZE。 涉及算子:add_layer_norm_quant、layer_norm_grad、layer_norm_grad_v3、layer_norm_v3、layer_norm_v4。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5099 ## 测试 - pass ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码清理(去除硬编码常量) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9042 | 11 天前 | |
docs(lp_norm_update): update supported products Co-authored-by: Davon14272<liuwenda4@huawei.com> # message auto-generated for no-merge-commit merge: !9458 merge docs/lp-norm-update-support into master docs(lp_norm_update): update supported products Created-by: Davon14272 Commit-by: Davon14272 Merged-by: cann-robot Description: ## 描述 统一型号支持描述, | <term>Atlas 200I/500 A2 推理产品</term> | √ | | <term>Atlas 推理系列产品</term> | √ | | <term>Atlas 训练系列产品</term> | √ | <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9458 | 14 天前 | |
[CANNBot] lp_norm_update_v2算子增加异常拦截校验 Co-authored-by: chen_chenn<chenchen167@huawei.com> # message auto-generated for no-merge-commit merge: !8367 merge LpNormUpdateV2 into master [CANNBot] lp_norm_update_v2算子增加异常拦截校验 Created-by: chen_chenn Commit-by: chen_chenn Merged-by: cann-robot Description: ## 描述 lp_norm_update_v2算子增加异常拦截校验 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4829 ## 测试 TTK ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8367 | 26 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
MultiAddRmsNormDynamicQuant算子fusion pass融合规则修复 Co-authored-by: wkyan<yanwenkai@huawei.com> # message auto-generated for no-merge-commit merge: !9573 merge 0831_fix into master MultiAddRmsNormDynamicQuant算子fusion pass融合规则修复 Created-by: wkyan Commit-by: wkyan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> MultiAddRmsNormDynamicQuant算子fusion pass融合规则修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5456 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9573 | 11 天前 | |
A5新增MVNV2算子 Co-authored-by: Davon14272<liuwenda4@huawei.com> # message auto-generated for no-merge-commit merge: !8594 merge mvn into master A5新增MVNV2算子 Created-by: Davon14272 Commit-by: Davon14272 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> - 算子功能:对ND输入张量沿指定axes计算均值与标准差,执行均值方差归一化,使输出在规约轴上均值为0、方差近似为1。 - 计算公式: $$ y = \frac{x - mean}{\sqrt{var} + eps} $$ ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4878](https://gitcode.com/cann/ops-nn/issues/4878) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8594 | 24 天前 | |
fix(norm): 修复 norm 公共校验与 batch_norm_grad_v3 日志文案错误 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !8999 merge fix-norm-tiling-check-log-typo into master fix(norm): 修复 norm 公共校验与 batch_norm_grad_v3 日志文案错误 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 norm 公共校验头文件与 batch_norm_grad_v3 算子中若干日志文案拼写/语法错误与注释不一致问题,提升报错信息的准确性与可读性,避免误导问题排查。所有改动仅涉及日志字符串与注释,不改动任何判定逻辑。 ### 一、norm_tiling_check_common.h - CheckShapeBC:判定条件为 srcBcDimNum < srcDimNum(要求广播 shape 的维数不小于被广播 shape 的维数),日志却打印 "not bigger",方向相反;改为 "%s should not be smaller than %s" 并补全两个 %lu 之间的逗号。 - CheckDimBiggerZero:"should bigger or equal than zero" 语法不规范;改为 "should not be less than zero."(与 < 0 判定一致,允许 0)。 - CheckShapeSame:补全两个 %lu 之间缺失的逗号。 - #endif 注释与实际头文件保护宏名不一致,修正为 NORM_COMMON_NORM_TILING_CHECK_COMMON_H_。 ### 二、batch_norm_grad_v3(10 个文件,+12 -12) - **拼写错误**: - batch_norm_grad_v3_tiling.cpp:OP_LOGD 中 resserve → reserve。 - batch_norm_grad_v3_base_tiling.cpp / batch_norm_grad_v3_tiling_infer_base.cpp:报错文案 paremeter → parameter(各 1 处)。 - batch_norm_grad_v3_tiling_rar_split_core_r1.cpp:注释 simutaneously → simultaneously。 - **语法错误**: - aclnn_batch_norm_backward.cpp / aclnn_fast_batch_norm_backward.cpp:"outputMask size should not less than 1." → "should not be less than 1."(缺谓语 be)。 - **格式问题**: - _tiling_infer.cpp / _splitload_tiling.cpp / _fullload_tiling.cpp / _splitload_crosscore_tiling.cpp:去掉 "is capable" 后重复的逗号(", ," → ", ")。 - batch_norm_grad_v3_base_tiling.cpp / batch_norm_grad_v3_tiling_infer_base.cpp:CalcBasicInfo 的 OP_LOGD 中逗号后补缺失空格。 ### 说明 - 不重命名 CheckDimBiggerZero:该函数在 add_rms_norm_cast、add_rms_norm_dynamic_quant、multi_add_rms_norm_dynamic_quant 等多个算子中被调用,重命名会波及大量文件。 - 仅日志/注释修改,无逻辑变更,不影响编译与功能。 ## 关联的Issue - #4970 ## 测试 - 仅日志/注释修改,无逻辑变更,不影响编译与功能。 - 通过 git diff 逐项核对文案与判定条件一致。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8999 | 15 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !7858 merge master into master modified md files (The product filtering tag is added to the aclnn*.md files of the forech and norm classes) Created-by: gitee-duhuiping Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 The product filtering tag is added to the aclnn*.md files of the forech and norm classes. ## 关联的Issue [#4263](https://gitcode.com/cann/ops-nn/issues/4263) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 aclnn*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7858 | 1 个月前 | |
将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9549 merge master into master 将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 主要修改内容: 1. nn仓完成和legacy common 动态库解耦后,卷积和matmul的不同版本 ophost ut 已经不能混合一起跑了。需要版本隔离 2. ascend950的ut全量编译 失败,需要修改 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/5425](https://gitcode.com/cann/ops-nn/issues/5425) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9549 | 11 天前 | |
AIDD扫描语义问题修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !9352 merge master into master AIDD扫描语义问题修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 AIDD扫描语义问题修改 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9352 | 16 天前 | |
fix: 修复AddRmsNormDynamicMxQuant空round_mode并加固Rms算子回归 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9723 merge fix/add-rms-norm-dynamic-mx-quant-null-round-mode into master fix: 修复AddRmsNormDynamicMxQuant空round_mode并加固Rms算子回归 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 AddRmsNormDynamicMxQuant 将 round_mode 声明为可选属性,默认值为 rint。ACLNN 调用传入 nullptr 时,Host Tiling 侧可能获取到空指针;原有参数校验直接将其判为失败,导致默认值契约无法生效。 本次修改: - 修复 AddRmsNormDynamicMxQuant:round_mode == nullptr 时按默认值 rint 解析,保持显式空串和其他非法字符串仍返回失败。V1、V2 接口共用该 Host Tiling 路径,因此同时生效。 - 为 AddRmsNormDynamicMxQuant 新增独立 Host Tiling 回归用例,确认属性指针确实为 nullptr,并验证可按 rint 正常选择 FP8 FullLoad 模板;保留原有 FP8 FullLoad 用例不变。 - 对 RmsNormDynamicMxQuant 做质量加固:生产实现原本已对空 round_mode 默认为 RINT,本次不改生产逻辑;新增独立 Tiling UT 校验缺失 attr 与序列化 TilingData 中的 RINT 默认值,并新增 aclnn API 空指针成功用例。 - 补充两个算子的 aclnn 资料和公共 API 头文件注释,明确 roundMode 传入空指针时采用默认值 rint,并同步修正相关错误场景描述。 ## 关联的Issue #5518 ## 测试 - AddRmsNormDynamicMxQuant 基线复现:省略 round_mode 的 Host UT 返回 GRAPH_FAILED,用例失败(0/1 通过)。 - AddRmsNormDynamicMxQuant 修复后定向回归:原 FP8 FullLoad 用例及新增空指针用例均通过(2/2);最新 upstream/master 基线上 Host UT 46/46 通过,API UT 19/19 通过;单算子生产代码行覆盖率 92.3% (611/662)。 - RmsNormDynamicMxQuant 修改前基线:Host UT 37/37 通过,API UT 22/22 通过;默认分支 rms_norm_dynamic_mx_quant_base_tiling.cpp:191 命中次数为 0。 - RmsNormDynamicMxQuant 加固后:Host UT 38/38 通过,API UT 23/23 通过;目标默认分支命中次数由 0 提升到 2,提取的单算子源码行覆盖率由 79.9% (434/543) 提升到 80.1% (435/543)。 - 本地 CI 定向门禁全部通过:Ascend 950 和 Ascend 910B(A2)的包编译、op_host UT、op_api UT,以及 Markdown 链接检查。 - pre-commit 全部通过,包括 clang-format、codespell、OAT 和 git diff --check。 ## 文档更新 - 更新 aclnnAddRmsNormDynamicMxQuant.md 和 aclnnAddRmsNormDynamicMxQuantV2.md,补充 roundMode 空指针默认语义并修正错误场景描述。 - 同步更新 aclnn_add_rms_norm_dynamic_mx_quant.h 中 V1/V2 接口的 roundMode 参数注释。 - 更新 aclnnRmsNormDynamicMxQuant.md 和 aclnn_rms_norm_dynamic_mx_quant.h,补充 roundMode == nullptr 时默认为 rint 的公开契约。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9723 | 9 天前 | |
fix error check Co-authored-by: liuyun_nj<liuyun90@h-partners.com> # message auto-generated for no-merge-commit merge: !9747 merge master into master fix error check Created-by: liuyun_nj Commit-by: liuyun_nj Merged-by: cann-robot Description: ## 描述 补充校验 ## 关联的Issue #5444#5437 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9747 | 10 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
refactor: reduce duplicated code Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9451 merge cleancode-minimal-clean into master refactor: reduce duplicated code Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 描述 针对 CleanCode 重复代码报告进行最小化降重:仅调整局部变量、参数和配置对象命名,打断重复代码块。 未修改算子接口、计算公式、控制流或功能逻辑。本次共修改 31 个文件,473 行新增、471 行删除。 ## 关联的Issue 无。 ## 测试 - ATK测试通过 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:CleanCode 重复代码降重 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9451 | 12 天前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 16 天前 | |
fix(nn): release resources on init failure in aclnn examples and docs Co-authored-by: wangjun03<wangjun01@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !8693 merge fix/init-failure-resource-release-nn into master fix(nn): release resources on init failure in aclnn examples and docs Created-by: wangjun03 Commit-by: wangjun03 Merged-by: cann-robot Description: ## 描述 修复 NN/Transformer 类算子调用示例在初始化失败场景下资源释放不完整的问题。 - aclrtSetDevice 失败时,在返回前调用 aclFinalize,释放已初始化的 ACL 资源。 - aclrtCreateStream 失败时,在返回前依次调用 aclrtResetDevice 和 aclFinalize,释放已设置的 Device 及 ACL 资源。 - 保留原有 CHECK_RET 写法和正常执行路径的资源释放顺序。 - 同步修改文档示例和对应的可执行示例源码,保证两处代码一致。 本次修改参考仓库内 PR #8603(aclnnSoftmax)的修复方式,仅补齐资源释放逻辑,不涉及算子 Tiling、Kernel 和计算功能变更。 ## 涉及算子 ### activation(4 个算子,8 个文件) - **SoftmaxV2**:aclnnSoftmax - **LogSoftmaxV2**:aclnnLogSoftmax - **SoftmaxGrad**:aclnnSoftmaxBackward - **LogSoftmaxGrad**:aclnnLogSoftmaxBackward ### norm(23 个算子,56 个文件) - **GroupNormGrad**:aclnnGroupNormBackward - **LpNormV2**:aclnnLinalgVectorNorm、aclnnNorm - **LayerNormV4**:aclnnLayerNorm、aclnnFastLayerNorm - **LayerNormGradV3**:aclnnLayerNormBackward - **AddLayerNorm**:aclnnAddLayerNorm - **AddLayerNormQuant**:aclnnAddLayerNormQuant - **AddRmsNorm**:aclnnAddRmsNorm - **AddRmsNormCast**:aclnnAddRmsNormCast - **AddRmsNormQuant**:aclnnAddRmsNormQuant - **AddRmsNormDynamicQuant**:aclnnAddRmsNormDynamicQuant、aclnnAddRmsNormDynamicQuantV2 - **AddRmsNormDynamicMxQuant**:aclnnAddRmsNormDynamicMxQuant - **RmsNormDynamicMxQuant**:aclnnRmsNormDynamicMxQuant - **RmsNormGradQuant**:aclnnRmsNormGradQuant - **RmsNormQuantV3**:aclnnRmsNormQuantV3 - **BatchNormV3**:aclnnBatchNorm、aclnnBatchNormElemt - **BatchNormGradV3**:aclnnBatchNormBackward、aclnnFastBatchNormBackward - **RmsNorm**:aclnnRmsNorm - **RmsNormGrad**:aclnnRmsNormGrad - **InplaceAddRmsNorm**:aclnnInplaceAddRmsNorm - **SyncBatchNormBackwardElemt**:aclnnBatchNormElemtBackward - **SyncBatchNormBackwardReduce**:aclnnBatchNormReduceBackward - **SyncBatchNormGatherStats**:aclnnSyncBatchNormGatherStats ### experimental 镜像(8 个文件) - experimental/activation: LogSoftmaxV2 - experimental/loss: SoftmaxGrad - experimental/norm: SyncBatchNormBackwardElemt、SyncBatchNormBackwardReduce、SyncBatchNormGatherStats ## 关联的 Issue Issue #4745 ## 测试 - git diff --check:通过。 - 本次仅修改调用示例的异常处理逻辑,未执行 NPU 运行测试。 ## 文档更新 - 更新上述算子 docs/ 目录下的 aclnn*.md 中的调用示例。 - 同步更新 examples/ 目录下的 test_aclnn_*.cpp 可执行示例源码。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8693 | 19 天前 | |
fix(nn): release resources on init failure in aclnn examples and docs Co-authored-by: wangjun03<wangjun01@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !8693 merge fix/init-failure-resource-release-nn into master fix(nn): release resources on init failure in aclnn examples and docs Created-by: wangjun03 Commit-by: wangjun03 Merged-by: cann-robot Description: ## 描述 修复 NN/Transformer 类算子调用示例在初始化失败场景下资源释放不完整的问题。 - aclrtSetDevice 失败时,在返回前调用 aclFinalize,释放已初始化的 ACL 资源。 - aclrtCreateStream 失败时,在返回前依次调用 aclrtResetDevice 和 aclFinalize,释放已设置的 Device 及 ACL 资源。 - 保留原有 CHECK_RET 写法和正常执行路径的资源释放顺序。 - 同步修改文档示例和对应的可执行示例源码,保证两处代码一致。 本次修改参考仓库内 PR #8603(aclnnSoftmax)的修复方式,仅补齐资源释放逻辑,不涉及算子 Tiling、Kernel 和计算功能变更。 ## 涉及算子 ### activation(4 个算子,8 个文件) - **SoftmaxV2**:aclnnSoftmax - **LogSoftmaxV2**:aclnnLogSoftmax - **SoftmaxGrad**:aclnnSoftmaxBackward - **LogSoftmaxGrad**:aclnnLogSoftmaxBackward ### norm(23 个算子,56 个文件) - **GroupNormGrad**:aclnnGroupNormBackward - **LpNormV2**:aclnnLinalgVectorNorm、aclnnNorm - **LayerNormV4**:aclnnLayerNorm、aclnnFastLayerNorm - **LayerNormGradV3**:aclnnLayerNormBackward - **AddLayerNorm**:aclnnAddLayerNorm - **AddLayerNormQuant**:aclnnAddLayerNormQuant - **AddRmsNorm**:aclnnAddRmsNorm - **AddRmsNormCast**:aclnnAddRmsNormCast - **AddRmsNormQuant**:aclnnAddRmsNormQuant - **AddRmsNormDynamicQuant**:aclnnAddRmsNormDynamicQuant、aclnnAddRmsNormDynamicQuantV2 - **AddRmsNormDynamicMxQuant**:aclnnAddRmsNormDynamicMxQuant - **RmsNormDynamicMxQuant**:aclnnRmsNormDynamicMxQuant - **RmsNormGradQuant**:aclnnRmsNormGradQuant - **RmsNormQuantV3**:aclnnRmsNormQuantV3 - **BatchNormV3**:aclnnBatchNorm、aclnnBatchNormElemt - **BatchNormGradV3**:aclnnBatchNormBackward、aclnnFastBatchNormBackward - **RmsNorm**:aclnnRmsNorm - **RmsNormGrad**:aclnnRmsNormGrad - **InplaceAddRmsNorm**:aclnnInplaceAddRmsNorm - **SyncBatchNormBackwardElemt**:aclnnBatchNormElemtBackward - **SyncBatchNormBackwardReduce**:aclnnBatchNormReduceBackward - **SyncBatchNormGatherStats**:aclnnSyncBatchNormGatherStats ### experimental 镜像(8 个文件) - experimental/activation: LogSoftmaxV2 - experimental/loss: SoftmaxGrad - experimental/norm: SyncBatchNormBackwardElemt、SyncBatchNormBackwardReduce、SyncBatchNormGatherStats ## 关联的 Issue Issue #4745 ## 测试 - git diff --check:通过。 - 本次仅修改调用示例的异常处理逻辑,未执行 NPU 运行测试。 ## 文档更新 - 更新上述算子 docs/ 目录下的 aclnn*.md 中的调用示例。 - 同步更新 examples/ 目录下的 test_aclnn_*.cpp 可执行示例源码。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8693 | 19 天前 | |
fix(nn): release resources on init failure in aclnn examples and docs Co-authored-by: wangjun03<wangjun01@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !8693 merge fix/init-failure-resource-release-nn into master fix(nn): release resources on init failure in aclnn examples and docs Created-by: wangjun03 Commit-by: wangjun03 Merged-by: cann-robot Description: ## 描述 修复 NN/Transformer 类算子调用示例在初始化失败场景下资源释放不完整的问题。 - aclrtSetDevice 失败时,在返回前调用 aclFinalize,释放已初始化的 ACL 资源。 - aclrtCreateStream 失败时,在返回前依次调用 aclrtResetDevice 和 aclFinalize,释放已设置的 Device 及 ACL 资源。 - 保留原有 CHECK_RET 写法和正常执行路径的资源释放顺序。 - 同步修改文档示例和对应的可执行示例源码,保证两处代码一致。 本次修改参考仓库内 PR #8603(aclnnSoftmax)的修复方式,仅补齐资源释放逻辑,不涉及算子 Tiling、Kernel 和计算功能变更。 ## 涉及算子 ### activation(4 个算子,8 个文件) - **SoftmaxV2**:aclnnSoftmax - **LogSoftmaxV2**:aclnnLogSoftmax - **SoftmaxGrad**:aclnnSoftmaxBackward - **LogSoftmaxGrad**:aclnnLogSoftmaxBackward ### norm(23 个算子,56 个文件) - **GroupNormGrad**:aclnnGroupNormBackward - **LpNormV2**:aclnnLinalgVectorNorm、aclnnNorm - **LayerNormV4**:aclnnLayerNorm、aclnnFastLayerNorm - **LayerNormGradV3**:aclnnLayerNormBackward - **AddLayerNorm**:aclnnAddLayerNorm - **AddLayerNormQuant**:aclnnAddLayerNormQuant - **AddRmsNorm**:aclnnAddRmsNorm - **AddRmsNormCast**:aclnnAddRmsNormCast - **AddRmsNormQuant**:aclnnAddRmsNormQuant - **AddRmsNormDynamicQuant**:aclnnAddRmsNormDynamicQuant、aclnnAddRmsNormDynamicQuantV2 - **AddRmsNormDynamicMxQuant**:aclnnAddRmsNormDynamicMxQuant - **RmsNormDynamicMxQuant**:aclnnRmsNormDynamicMxQuant - **RmsNormGradQuant**:aclnnRmsNormGradQuant - **RmsNormQuantV3**:aclnnRmsNormQuantV3 - **BatchNormV3**:aclnnBatchNorm、aclnnBatchNormElemt - **BatchNormGradV3**:aclnnBatchNormBackward、aclnnFastBatchNormBackward - **RmsNorm**:aclnnRmsNorm - **RmsNormGrad**:aclnnRmsNormGrad - **InplaceAddRmsNorm**:aclnnInplaceAddRmsNorm - **SyncBatchNormBackwardElemt**:aclnnBatchNormElemtBackward - **SyncBatchNormBackwardReduce**:aclnnBatchNormReduceBackward - **SyncBatchNormGatherStats**:aclnnSyncBatchNormGatherStats ### experimental 镜像(8 个文件) - experimental/activation: LogSoftmaxV2 - experimental/loss: SoftmaxGrad - experimental/norm: SyncBatchNormBackwardElemt、SyncBatchNormBackwardReduce、SyncBatchNormGatherStats ## 关联的 Issue Issue #4745 ## 测试 - git diff --check:通过。 - 本次仅修改调用示例的异常处理逻辑,未执行 NPU 运行测试。 ## 文档更新 - 更新上述算子 docs/ 目录下的 aclnn*.md 中的调用示例。 - 同步更新 examples/ 目录下的 test_aclnn_*.cpp 可执行示例源码。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8693 | 19 天前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 16 天前 | |
modified md file(aclnn*.md and README.md) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !7119 merge master into master modified md file(aclnn*.md and README.md) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 1. Updated the constraints on the C and group parameters in aclnnGroupNormBackward.md. 2. Updated the calculation formula and parameter types of the lp_norm_v2 operator, and updated the parameter description of aclnn. 3. Updated the case of parameter names in the README.md file of renorm. 4. Updated the calculation formula of sync_batch_norm_backward_elemt and added the constraints on the combination of data types in the README file. 5. Updated the attribute parameter types and default values in the README file of sync_batch_norm_backward_elemt. ## 关联的Issue [#3701](https://gitcode.com/cann/ops-nn/issues/3701) [#3702](https://gitcode.com/cann/ops-nn/issues/3702) [#3693](https://gitcode.com/cann/ops-nn/issues/3693) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 docs/zh/op_list.md norm/group_norm_grad/docs/aclnnGroupNormBackward.md norm/lp_norm_v2/README.md norm/lp_norm_v2/docs/aclnnNorm.md norm/renorm/README.md norm/sync_batch_norm_backward_elemt/README.md norm/sync_batch_norm_backward_elemt/docs/aclnnBatchNormElemtBackward.md norm/sync_batch_norm_backward_elemt/docs/aclnnBatchNormElemtBackward.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7119 | 2 个月前 | |
feat: rename op_api_def.h to op_api_def_nn.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8360 merge rename_opapidef into master feat: rename op_api_def.h to op_api_def_nn.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 本次改动将 op_api/op_api_def.h 重命名为 op_api/op_api_def_nn.h,并同步更新了所有引用该头文件的源文件与测试文件中的 #include 路径,共涉及 161 个文件。 改动原因:将 op_api 定义头文件统一命名为 op_api_def_nn.h,以更好地体现其所属模块(NN 算子)的语义,便于后续与其他模块的头文件区分管理。 此外,在提交过程中发现 4 个文件(aclnn_foreach_addcmul_scalar_v2.cpp、aclnn_max_unpool3d.cpp、test_aclnn_addmv.cpp、test_aclnn_fast_batchnorm_backward.cpp)的许可证头使用了非标准的旧格式,导致 OAT 合规检查失败。本次一并将其更新为标准的 CANN 开源许可证头格式,确保通过合规校验。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4954 ## 测试 - 通过 pre-commit 钩子校验:trailing whitespace、end-of-file-fixer、clang-format 均通过 - 通过 OAT 合规检查(161 个文件全部通过) - 本次为头文件重命名改动,不涉及逻辑变更,编译依赖关系保持不变 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:头文件重命名与许可证头修复 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8360 | 23 天前 | |
fix:重构runtime2_util.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8841 merge rename_runtime2util into master fix:重构runtime2_util.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将 common/inc/op_api/runtime2_util.h 重命名为 common/inc/op_api/runtime2_util_nn.h,以避免与 CANN 仓内其他模块同名头文件产生命名冲突。 主要改动内容: 1. 重命名头文件 runtime2_util.h 为 runtime2_util_nn.h,并同步更新文件内的 doxygen 注释、头文件保护宏(CANN_OPS_BUILT_IN_OP_TILING_RUNTIME2_UTIL_NN_H_)以及文件末尾换行。 2. 批量更新所有引用该头文件的 26 个源文件(.h/.cpp)中的 #include "op_api/runtime2_util.h" 为 #include "op_api/runtime2_util_nn.h",涉及 activation、index、loss、norm 等 nn 算子目录。 3. 同步更新 common/inc/op_host/cache_runinfo.h 等公共头文件的引用,并更新版权年份至 2025-2026。 该改动为纯重命名重构,不涉及任何功能逻辑变更。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5037 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 由于改动仅涉及头文件重命名及引用路径更新,无功能逻辑变更,主要通过全量编译验证所有受影响算子可正确找到新头文件并编译通过。 - 编译范围覆盖 activation、index、loss、norm 等目录下受影响的 arch35 tiling 与 infershape 模块。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:重构代码 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8841 | 19 天前 | |
Format update: Adjusted the license description format in all relevant files. Co-authored-by: jiangqi<jiangqi47@h-partners.com> # message auto-generated for no-merge-commit merge: !365 merge license5 into master Format update: Adjusted the license description format in all relevant files. Created-by: jiangqi2025 Commit-by: jiangqi Merged-by: turing_project1 Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!365 | 8 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 16 天前 | ||
| 10 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 11 天前 | ||
| 18 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 9 天前 | ||
| 10 天前 | ||
| 12 天前 | ||
| 10 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 11 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 11 天前 | ||
| 12 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 15 天前 | ||
| 14 天前 | ||
| 10 天前 | ||
| 11 天前 | ||
| 15 天前 | ||
| 12 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 12 天前 | ||
| 2 个月前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 2 个月前 | ||
| 16 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 16 天前 | ||
| 14 天前 | ||
| 14 天前 | ||
| 1 个月前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 17 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 10 天前 | ||
| 12 天前 | ||
| 16 天前 | ||
| 9 天前 | ||
| 23 天前 | ||
| 16 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 11 天前 | ||
| 14 天前 | ||
| 26 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 11 天前 | ||
| 24 天前 | ||
| 15 天前 | ||
| 12 天前 | ||
| 1 个月前 | ||
| 11 天前 | ||
| 16 天前 | ||
| 9 天前 | ||
| 10 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 16 天前 | ||
| 19 天前 | ||
| 19 天前 | ||
| 19 天前 | ||
| 16 天前 | ||
| 2 个月前 | ||
| 23 天前 | ||
| 19 天前 | ||
| 8 个月前 |