| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
将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 | 10 天前 | |
修复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 | 4 天前 | |
修复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 个月前 | |
fix asan test Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !9033 merge master into master fix asan test Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 修复 ASan(AddressSanitizer)测试中暴露的问题,主要包括:类型不匹配、越界访问、字段缺失及命名不一致。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 详细变更 ### 1. 类型修正(uint32_t/int32_t → int64_t/uint64_t) 使测试中的 CompileInfo 结构体字段类型与实际算子侧定义保持一致,消除 ASan 因类型宽度不匹配报告的问题。 | 文件 | 字段 | 旧类型 | 新类型 | |------|------|--------|--------| | test_add_layer_norm_tiling.cpp | aivCoreNum_, sysWorkspaceSize_, vecRegSize_, blockSize_ | uint32_t | int64_t | | test_embedding_dense_grad_v2_tiling.cpp | totalCoreNum | int32_t | uint64_t | | test_add_rms_norm_cast_tiling.cpp | totalCoreNum | uint32_t | uint64_t | | test_add_rms_norm_quant_tiling.cpp | totalCoreNum | uint32_t | uint64_t | ### 2. 命名规范化:isRegbase → isRegBase 修正大小写不一致,统一为驼峰命名 isRegBase。 - test_embedding_dense_grad_v2_tiling.cpp ### 3. 补充缺失字段 isRegBase 为以下测试的 CompileInfo 结构体补充 isRegBase 字段(默认 false),避免因结构体字段缺失导致的内存读取越界: - test_modulate_tiling.cpp(4 处) - test_multi_scale_deformable_attention_grad_tiling.cpp(1 处) - test_multi_scale_deformable_attn_function_tiling.cpp(9 处) ### 4. 补充缺失字段 blockSize / vlFp32 - test_layer_norm_grad_tiling.cpp: 为 LayerNormGradCompileInfo 补充 blockSize 和 vlFp32(均为 int64_t)字段。 ### 5. 移除硬编码值 - test_add_rms_norm_cast_tiling.cpp: 将 totalCoreNum = 40、totalUbSize = 196608 改为 0,避免与实际平台信息不一致。 - test_add_rms_norm_quant_tiling.cpp: 同上,并调整字段顺序与命名(socVersion → curSocVersion,totalUbSize → maxUbSize)。 ### 6. 越界访问修复 - tests/ut/common/tiling_context_faker.cpp:309: 添加 idx < inputInstanceNumPacked_.size() 边界检查,防止 inputInstanceNumPacked_ 越界访问。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9033 | 3 天前 | |
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 | 6 天前 | |
fix(norm): split oversized headers at declaration boundaries Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9861 merge fix/codecheck-large-headers-v2 into master fix(norm): split oversized headers at declaration boundaries Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 背景 修复 CleanCode 的 C/C++ 超大头文件告警。 ## 修改内容 - 拆分 5 个超过 500 LOC 的 Norm 内核头文件,保留原文件路径、接口、类及函数实现逻辑。 - 新增同目录 *_partN.h,由原头文件在合适的声明边界处 include。 - 所有 part 文件均不关闭父头文件的 #endif。 - 所有拆分边界位于完整函数/声明之间,不从函数体中间物理切分。 - 新增文件已补齐仓库许可证头。 See merge request: cann/ops-nn!9861 | 2 天前 | |
修改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 | 12 天前 | |
fix uint32 overloop Co-authored-by: liuyun_nj<liuyun90@h-partners.com> # message auto-generated for no-merge-commit merge: !9865 merge master into master fix uint32 overloop Created-by: liuyun_nj Commit-by: liuyun_nj Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9865 | 2 天前 | |
fix uint32 overloop Co-authored-by: liuyun_nj<liuyun90@h-partners.com> # message auto-generated for no-merge-commit merge: !9865 merge master into master fix uint32 overloop Created-by: liuyun_nj Commit-by: liuyun_nj Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9865 | 2 天前 | |
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 | 3 天前 | |
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 | 3 天前 | |
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 | 6 天前 | |
fix uint32 overloop Co-authored-by: liuyun_nj<liuyun90@h-partners.com> # message auto-generated for no-merge-commit merge: !9865 merge master into master fix uint32 overloop Created-by: liuyun_nj Commit-by: liuyun_nj Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9865 | 2 天前 | |
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 | 6 天前 | |
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 | 6 天前 | |
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 | 6 天前 | |
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 | 6 天前 | |
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 | 6 天前 | |
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 | 5 天前 | |
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 | 6 天前 | |
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 | 6 天前 | |
隔离batch_norm_grad_v3不支持A5(ascend950)的example用例到arch22目录 Co-authored-by: ztj0209<zhangtianjiao6@huawei.com> # message auto-generated for no-merge-commit merge: !9526 merge fix_a5_isolate_batch_norm_grad_v3 into master 隔离batch_norm_grad_v3不支持A5(ascend950)的example用例到arch22目录 Created-by: ztj0209 Commit-by: ztj0209 Merged-by: cann-robot Description: ## 描述 batch_norm_grad_v3 算子中 aclnnFastBatchNormBackward 接口不支持 ascend950,其 example 用例 test_aclnn_fast_batch_norm_backward.cpp 原先位于 examples 顶层目录,A5 环境(--soc=ascend950)执行时因接口不支持而报错。 参照 arch 用例隔离机制(参考 !9152),将该用例移动到 examples/arch22/ 下:A5 环境不再扫描执行,910B 环境通过 arch22 目录正常运行。涉及 README 的用例路径链接已同步更新。 ## 关联的Issue [关联Issue #5203](https://gitcode.com/cann/ops-nn/issues/5203) ## 测试 - 本机 910B3 实测 bash build.sh --run_example batch_norm_grad_v3 eager --soc=ascend910b,test_aclnn_fast_batch_norm_backward.cpp 经 arch22 目录正常运行(success) - 模拟 build.sh 扫描逻辑验证:--soc=ascend950 下该失败用例不再被扫描 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9526 | 3 天前 | |
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 | 6 天前 | |
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 | 5 天前 | |
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 | 5 天前 | |
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 | 9 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 3 天前 | |
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 | 4 天前 | |
fix(bn_inference): 修复 CANN 9.0.0 编译失败 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9813 merge fix/bn-inference-cann900-compile into master fix(bn_inference): 修复 CANN 9.0.0 编译失败 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修复 BNInference 在 CANN 9.0.0 Ascend 950 动态 kernel 编译阶段找不到 platform_util.h 的问题。将 kernel 公共头文件引用调整为算子包公共源码目录使用的相对路径,不改变算子接口、REG_OP、tiling 或计算语义。 ## 关联的Issue #5534 ## 测试 - CANN 9.0.0 独立环境:bash build.sh --pkg --ops=bn_inference --soc=ascend950 --cann_3rd_lib_path=<third_party> --ccache=off -j8 - 修改前:动态 kernel PRECOMPILE 阶段稳定复现头文件缺失。 - 修改后:55 个 BNInference 动态 kernel 全部编译完成,整包生成成功。 - 本地定向 CI:仅检查 BNInference 影响范围;Ascend 950 package/opkernel 与 Ascend 910B package/opkernel 均通过。 - 提交钩子:通过。 - 远程 CI:已通过 compile 评论触发。 ## 文档更新 无文档变更。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9813 | 3 天前 | |
fix(norm): split oversized headers at declaration boundaries Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9861 merge fix/codecheck-large-headers-v2 into master fix(norm): split oversized headers at declaration boundaries Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 背景 修复 CleanCode 的 C/C++ 超大头文件告警。 ## 修改内容 - 拆分 5 个超过 500 LOC 的 Norm 内核头文件,保留原文件路径、接口、类及函数实现逻辑。 - 新增同目录 *_partN.h,由原头文件在合适的声明边界处 include。 - 所有 part 文件均不关闭父头文件的 #endif。 - 所有拆分边界位于完整函数/声明之间,不从函数体中间物理切分。 - 新增文件已补齐仓库许可证头。 See merge request: cann/ops-nn!9861 | 2 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 3 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 3 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 3 天前 | |
[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 | 6 天前 | |
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 | 6 天前 | |
fix(norm): split oversized headers at declaration boundaries Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9861 merge fix/codecheck-large-headers-v2 into master fix(norm): split oversized headers at declaration boundaries Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 背景 修复 CleanCode 的 C/C++ 超大头文件告警。 ## 修改内容 - 拆分 5 个超过 500 LOC 的 Norm 内核头文件,保留原文件路径、接口、类及函数实现逻辑。 - 新增同目录 *_partN.h,由原头文件在合适的声明边界处 include。 - 所有 part 文件均不关闭父头文件的 #endif。 - 所有拆分边界位于完整函数/声明之间,不从函数体中间物理切分。 - 新增文件已补齐仓库许可证头。 See merge request: cann/ops-nn!9861 | 2 天前 | |
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 asan test Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !9033 merge master into master fix asan test Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 修复 ASan(AddressSanitizer)测试中暴露的问题,主要包括:类型不匹配、越界访问、字段缺失及命名不一致。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 详细变更 ### 1. 类型修正(uint32_t/int32_t → int64_t/uint64_t) 使测试中的 CompileInfo 结构体字段类型与实际算子侧定义保持一致,消除 ASan 因类型宽度不匹配报告的问题。 | 文件 | 字段 | 旧类型 | 新类型 | |------|------|--------|--------| | test_add_layer_norm_tiling.cpp | aivCoreNum_, sysWorkspaceSize_, vecRegSize_, blockSize_ | uint32_t | int64_t | | test_embedding_dense_grad_v2_tiling.cpp | totalCoreNum | int32_t | uint64_t | | test_add_rms_norm_cast_tiling.cpp | totalCoreNum | uint32_t | uint64_t | | test_add_rms_norm_quant_tiling.cpp | totalCoreNum | uint32_t | uint64_t | ### 2. 命名规范化:isRegbase → isRegBase 修正大小写不一致,统一为驼峰命名 isRegBase。 - test_embedding_dense_grad_v2_tiling.cpp ### 3. 补充缺失字段 isRegBase 为以下测试的 CompileInfo 结构体补充 isRegBase 字段(默认 false),避免因结构体字段缺失导致的内存读取越界: - test_modulate_tiling.cpp(4 处) - test_multi_scale_deformable_attention_grad_tiling.cpp(1 处) - test_multi_scale_deformable_attn_function_tiling.cpp(9 处) ### 4. 补充缺失字段 blockSize / vlFp32 - test_layer_norm_grad_tiling.cpp: 为 LayerNormGradCompileInfo 补充 blockSize 和 vlFp32(均为 int64_t)字段。 ### 5. 移除硬编码值 - test_add_rms_norm_cast_tiling.cpp: 将 totalCoreNum = 40、totalUbSize = 196608 改为 0,避免与实际平台信息不一致。 - test_add_rms_norm_quant_tiling.cpp: 同上,并调整字段顺序与命名(socVersion → curSocVersion,totalUbSize → maxUbSize)。 ### 6. 越界访问修复 - tests/ut/common/tiling_context_faker.cpp:309: 添加 idx < inputInstanceNumPacked_.size() 边界检查,防止 inputInstanceNumPacked_ 越界访问。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9033 | 3 天前 | |
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 | 6 天前 | |
fix(norm): split oversized headers at declaration boundaries Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9861 merge fix/codecheck-large-headers-v2 into master fix(norm): split oversized headers at declaration boundaries Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 背景 修复 CleanCode 的 C/C++ 超大头文件告警。 ## 修改内容 - 拆分 5 个超过 500 LOC 的 Norm 内核头文件,保留原文件路径、接口、类及函数实现逻辑。 - 新增同目录 *_partN.h,由原头文件在合适的声明边界处 include。 - 所有 part 文件均不关闭父头文件的 #endif。 - 所有拆分边界位于完整函数/声明之间,不从函数体中间物理切分。 - 新增文件已补齐仓库许可证头。 See merge request: cann/ops-nn!9861 | 2 天前 | |
fix(softmax/group_norm): 平台参数与 VL 相关常量改为接口派生,消除跨平台写死 Co-authored-by: zhuzixian-lr<zhuzixian1@h-partners.com> # message auto-generated for no-merge-commit merge: !9759 merge softmax_vl into master fix(softmax/group_norm): 平台参数与 VL 相关常量改为接口派生,消除跨平台写死 Created-by: zhuzixian-lr Commit-by: zhuzixian-lr Merged-by: cann-robot Description: ## 描述 将 softmax 系 5 个算子(softmax_v2 / log_softmax_v2 / softmax_grad / log_softmax_grad / confusion_softmax_grad)与 GroupNormV2 / GroupNormGrad 中写死的平台相关常量改为接口派生,消除换设备平台时的功能/能力异常。 ### 问题背景 排查发现两类"由平台参数决定却写死为具体值"的常量: 1. **VL 算法界写死**: - R_MAX_VALUE = 16384 实为二分累加算法安全上限 4 * VL^2(SecondNormComputePost 要求 foldPoint <= 2*VL,故 r <= 4*VL*VL)。VL=64 平台恰好吻合;VL 变小平台将放行超界 r 导致 sum 不计算(功能错误),VL 变大平台错误拒绝合法 r(能力损失)。 - GroupNormV2 FP32_ONE_REPEAT = 64 即 VL_FP32 写死形态,two_pass 模板 dichotomyAdd buffer 按 64 切分,而 tiling 侧按 GetVRegSize(context) 接口值计算——跨侧不一致,换平台必现 buffer 尺寸错误。 - GroupNormV2 使用裸名 VECTOR_REG_WIDTH(AscendC::VECTOR_REG_WIDTH 定义于 SDK 常量表,各架构分支均为写死 256),改为 Ops::Base::GetVRegSize() 统一适配层。 2. **UB 块参数写死**: - BLOCK_SIZE = 32(DataCopy stride 换算)、FP32/FP16_BLOCK_ALIGN_NUM = 8/16(= 32B/dtypeSize) - AR_RECOMPUTE_MAX/SUM_BUFFER_BTYES = 32(标量 buffer 按 UB 块对齐) - AR_RECOMPUTE_BINARY_CACHE_BTYES = 2048(= 64 槽位 × 32B/槽,64 为二分层级 2 的幂上限) ### 修改内容(34 文件) | 修改点 | 前 | 后 | |---|---|---| | R_MAX_VALUE(3 家 ar_full_load tiling) | 16384 | CONST_FOUR * vlFp32_ * vlFp32_ | | BINARY_CACHE(5 算子 kernel + 2 tiling) | 2048 | 64 * GetUbBlockSize() | | MAX/SUM_BUFFER(kernel+tiling) | 32 | GetUbBlockSize() | | BLOCK_SIZE(5 kernel + softmax_v2 tiling) | 32 | Ops::Base::GetUbBlockSize() / blockSize_ | | FP32/FP16_BLOCK_ALIGN_NUM(2 tiling.h) | 8/16 | blockSize_ / dtypeSize(定义删除) | | GNV2 FP32_ONE_REPEAT(two_pass ×2) | 64 | VL_FP32(定义删除) | | GNV2 VECTOR_REG_WIDTH(VL_FP32/GetVLSize) | 裸名 SDK 常量 | Ops::Base::GetVRegSize() | | GNG 本地 GetVRegSize/GetUbBlockSize | 写死 256U/32U | 委托 Ops::Base:: | | GNG CACHE_LEVEL1/2_IDX | 256/512 | CACHE_BUFF_SIZE 派生 | | grad 系 platform:: 前缀(16 文件) | platform::GetVRegSize/GetUbBlockSize | Ops::Base::(include 换 op_kernel/platform_util.h) | ## 关联的Issue close #5515 ## 测试 - [x] 29 个 arch35 tiling cpp syntax-only 编译通过(UT 编译环境完整 -I 集) - [x] GroupNormGrad tiling make ophost_nn_tiling_obj 增量编译 + tiling UT 用例重编通过 - [x] 7 算子全部 arch35 kernel 模板显式实例化,经 ccec(--cce-aicore-arch=dav-c310-vec)编译通过 7/7 - [x] 数值等价验证:当前平台(VL=64、UB 块=32B)新旧表达式逐项相等(16384=4×64²、2048=64×32 等),零行为变化 ## 文档更新 无需更新文档 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9759 | 2 天前 | |
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 | 8 天前 | |
隔离group_norm_silu_quant不支持A5(ascend950)的example用例到arch22目录 Co-authored-by: ztj0209<zhangtianjiao6@huawei.com> # message auto-generated for no-merge-commit merge: !9528 merge fix_a5_isolate_group_norm_silu_quant into master 隔离group_norm_silu_quant不支持A5(ascend950)的example用例到arch22目录 Created-by: ztj0209 Commit-by: ztj0209 Merged-by: cann-robot Description: ## 描述 group_norm_silu_quant 算子中 aclnnGroupNormSiluQuant 接口不支持 ascend950,其 example 用例 test_aclnn_group_norm_silu_quant.cpp 原先位于 examples 顶层目录,A5 环境(--soc=ascend950)执行时因接口不支持而报错。 参照 arch 用例隔离机制(参考 !9152),将该用例移动到 examples/arch22/ 下:A5 环境不再扫描执行,910B 环境通过 arch22 目录正常运行。涉及 README 的用例路径链接已同步更新。 ## 关联的Issue [关联Issue #5200](https://gitcode.com/cann/ops-nn/issues/5200) ## 测试 - 本机 910B3 实测 bash build.sh --run_example group_norm_silu_quant eager --soc=ascend910b,test_aclnn_group_norm_silu_quant.cpp 经 arch22 目录正常运行(success) - 模拟 build.sh 扫描逻辑验证:--soc=ascend950 下该失败用例不再被扫描 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9528 | 3 天前 | |
规范化修改产品术语名 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 | 10 天前 | |
fix(softmax/group_norm): 平台参数与 VL 相关常量改为接口派生,消除跨平台写死 Co-authored-by: zhuzixian-lr<zhuzixian1@h-partners.com> # message auto-generated for no-merge-commit merge: !9759 merge softmax_vl into master fix(softmax/group_norm): 平台参数与 VL 相关常量改为接口派生,消除跨平台写死 Created-by: zhuzixian-lr Commit-by: zhuzixian-lr Merged-by: cann-robot Description: ## 描述 将 softmax 系 5 个算子(softmax_v2 / log_softmax_v2 / softmax_grad / log_softmax_grad / confusion_softmax_grad)与 GroupNormV2 / GroupNormGrad 中写死的平台相关常量改为接口派生,消除换设备平台时的功能/能力异常。 ### 问题背景 排查发现两类"由平台参数决定却写死为具体值"的常量: 1. **VL 算法界写死**: - R_MAX_VALUE = 16384 实为二分累加算法安全上限 4 * VL^2(SecondNormComputePost 要求 foldPoint <= 2*VL,故 r <= 4*VL*VL)。VL=64 平台恰好吻合;VL 变小平台将放行超界 r 导致 sum 不计算(功能错误),VL 变大平台错误拒绝合法 r(能力损失)。 - GroupNormV2 FP32_ONE_REPEAT = 64 即 VL_FP32 写死形态,two_pass 模板 dichotomyAdd buffer 按 64 切分,而 tiling 侧按 GetVRegSize(context) 接口值计算——跨侧不一致,换平台必现 buffer 尺寸错误。 - GroupNormV2 使用裸名 VECTOR_REG_WIDTH(AscendC::VECTOR_REG_WIDTH 定义于 SDK 常量表,各架构分支均为写死 256),改为 Ops::Base::GetVRegSize() 统一适配层。 2. **UB 块参数写死**: - BLOCK_SIZE = 32(DataCopy stride 换算)、FP32/FP16_BLOCK_ALIGN_NUM = 8/16(= 32B/dtypeSize) - AR_RECOMPUTE_MAX/SUM_BUFFER_BTYES = 32(标量 buffer 按 UB 块对齐) - AR_RECOMPUTE_BINARY_CACHE_BTYES = 2048(= 64 槽位 × 32B/槽,64 为二分层级 2 的幂上限) ### 修改内容(34 文件) | 修改点 | 前 | 后 | |---|---|---| | R_MAX_VALUE(3 家 ar_full_load tiling) | 16384 | CONST_FOUR * vlFp32_ * vlFp32_ | | BINARY_CACHE(5 算子 kernel + 2 tiling) | 2048 | 64 * GetUbBlockSize() | | MAX/SUM_BUFFER(kernel+tiling) | 32 | GetUbBlockSize() | | BLOCK_SIZE(5 kernel + softmax_v2 tiling) | 32 | Ops::Base::GetUbBlockSize() / blockSize_ | | FP32/FP16_BLOCK_ALIGN_NUM(2 tiling.h) | 8/16 | blockSize_ / dtypeSize(定义删除) | | GNV2 FP32_ONE_REPEAT(two_pass ×2) | 64 | VL_FP32(定义删除) | | GNV2 VECTOR_REG_WIDTH(VL_FP32/GetVLSize) | 裸名 SDK 常量 | Ops::Base::GetVRegSize() | | GNG 本地 GetVRegSize/GetUbBlockSize | 写死 256U/32U | 委托 Ops::Base:: | | GNG CACHE_LEVEL1/2_IDX | 256/512 | CACHE_BUFF_SIZE 派生 | | grad 系 platform:: 前缀(16 文件) | platform::GetVRegSize/GetUbBlockSize | Ops::Base::(include 换 op_kernel/platform_util.h) | ## 关联的Issue close #5515 ## 测试 - [x] 29 个 arch35 tiling cpp syntax-only 编译通过(UT 编译环境完整 -I 集) - [x] GroupNormGrad tiling make ophost_nn_tiling_obj 增量编译 + tiling UT 用例重编通过 - [x] 7 算子全部 arch35 kernel 模板显式实例化,经 ccec(--cce-aicore-arch=dav-c310-vec)编译通过 7/7 - [x] 数值等价验证:当前平台(VL=64、UB 块=32B)新旧表达式逐项相等(16384=4×64²、2048=64×32 等),零行为变化 ## 文档更新 无需更新文档 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9759 | 2 天前 | |
将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 | 10 天前 | |
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 | 11 天前 | |
将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 | 10 天前 | |
将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 | 10 天前 | |
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 | 4 天前 | |
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 | 6 天前 | |
将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 | 10 天前 | |
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 | 3 天前 | |
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 | 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 | 10 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 3 天前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 3 天前 | |
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 | 5 天前 | |
将卷积和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 | 5 天前 | |
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 | 5 天前 | |
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 | 5 天前 | |
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 | 8 天前 | |
[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 | 20 天前 | |
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 | 6 天前 | |
MovingSumWithSigmoid/BasicLSTMInplaceFillWindowCache/BasicGRUInplaceFillWindowCache/DynSeqOuter/DynamicGRUV2/MaskedSoftmaxWithRelPosBias算子注册去重宏 Co-authored-by: Coder_Nerd<shishuai5@huawei.com> # message auto-generated for no-merge-commit merge: !9705 merge master into master MovingSumWithSigmoid/BasicLSTMInplaceFillWindowCache/BasicGRUInplaceFillWindowCache/DynSeqOuter/DynamicGRUV2/MaskedSoftmaxWithRelPosBias算子注册去重宏 Created-by: Coder_Nerd Commit-by: Coder_Nerd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充op_nn_proto_extend.h中MovingSumWithSigmoid/BasicLSTMInplaceFillWindowCache/BasicGRUInplaceFillWindowCache/DynSeqOuter/DynamicGRUV2/MaskedSoftmaxWithRelPosBias算子注册去重宏 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5490 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9705 | 3 天前 | |
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 | 5 天前 | |
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 | 18 天前 | |
fix(norm): split oversized headers at declaration boundaries Co-authored-by: hushenxi<shenxi780803@163.com> # message auto-generated for no-merge-commit merge: !9861 merge fix/codecheck-large-headers-v2 into master fix(norm): split oversized headers at declaration boundaries Created-by: Hushenxi111 Commit-by: hushenxi Merged-by: cann-robot Description: ## 背景 修复 CleanCode 的 C/C++ 超大头文件告警。 ## 修改内容 - 拆分 5 个超过 500 LOC 的 Norm 内核头文件,保留原文件路径、接口、类及函数实现逻辑。 - 新增同目录 *_partN.h,由原头文件在合适的声明边界处 include。 - 所有 part 文件均不关闭父头文件的 #endif。 - 所有拆分边界位于完整函数/声明之间,不从函数体中间物理切分。 - 新增文件已补齐仓库许可证头。 See merge request: cann/ops-nn!9861 | 2 天前 | |
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 | 6 天前 | |
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 | 5 天前 | |
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 | 9 天前 | |
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 | 3 天前 | |
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 | 4 天前 | |
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 | 6 天前 | |
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 | 6 天前 | |
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 | 6 天前 | |
将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 | 10 天前 | |
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 | 13 天前 | |
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 | 13 天前 | |
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 | 13 天前 | |
将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 | 10 天前 | |
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 | 1 个月前 | |
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 | 16 天前 | |
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 | 13 天前 | |
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 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 10 天前 | ||
| 4 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 天前 | ||
| 6 天前 | ||
| 2 天前 | ||
| 12 天前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 6 天前 | ||
| 2 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 5 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 3 天前 | ||
| 6 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 9 天前 | ||
| 3 天前 | ||
| 4 天前 | ||
| 3 天前 | ||
| 2 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 6 天前 | ||
| 2 个月前 | ||
| 6 天前 | ||
| 2 天前 | ||
| 2 个月前 | ||
| 3 天前 | ||
| 6 天前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 8 天前 | ||
| 3 天前 | ||
| 1 个月前 | ||
| 10 天前 | ||
| 2 天前 | ||
| 10 天前 | ||
| 11 天前 | ||
| 10 天前 | ||
| 10 天前 | ||
| 4 天前 | ||
| 6 天前 | ||
| 10 天前 | ||
| 3 天前 | ||
| 16 天前 | ||
| 10 天前 | ||
| 3 天前 | ||
| 3 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 8 天前 | ||
| 20 天前 | ||
| 6 天前 | ||
| 3 天前 | ||
| 5 天前 | ||
| 18 天前 | ||
| 2 天前 | ||
| 6 天前 | ||
| 1 个月前 | ||
| 5 天前 | ||
| 9 天前 | ||
| 3 天前 | ||
| 4 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 10 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 13 天前 | ||
| 10 天前 | ||
| 1 个月前 | ||
| 16 天前 | ||
| 13 天前 | ||
| 8 个月前 |