| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
将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 | 9 天前 | |
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 个月前 | |
修复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 个月前 | |
将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 | 9 天前 | |
将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 | 9 天前 | |
将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 | 9 天前 | |
修改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 | 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 | 9 天前 | |
将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 | 9 天前 | |
add_rms_norm_dynamic_mx_quant算子新增可选输入x3及torch extension适配 Co-authored-by: wangqi_ai<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !8520 merge feat/add_rms_norm_dynamic_mx_quant_x0 into master add_rms_norm_dynamic_mx_quant算子新增可选输入x3及torch extension适配 Created-by: wangqi_ai Commit-by: wangqi_ai Merged-by: cann-robot Description: ## 描述 为 add_rms_norm_dynamic_mx_quant 算子新增可选输入 x3,支持 x = (x3+x1)+x2 三路残差加法融合。x3 位于 beta 之后(输入索引 4),dtype 为 {FLOAT16, BFLOAT16}。当 x3 缺省时算子行为与 V1 完全一致;当 x3 传入时,计算公式变为 x = (x3+x1)+x2,加法顺序匹配残差加法语义。 同时新增 aclnnAddRmsNormDynamicMxQuantV2 两段式 API,将 FP8/FP4 分离 kernel 统一为模板类,修复 SPLIT_R pipeline race,并补充全量泛化测试。 torch_extension 层接口从算子私有目录迁移至 nn 仓公共目录并更名为 add_rms_norm_dynamic_quant(去掉 mx,为后续多量化类型统一接口预留);ST 用例 CSV 按 TTK 规范迁入 tests/st/arch35/。 ### 改动原因 大模型推理场景中,RmsNorm 前的 Add 常需融合三路输入(残差 x3 + x1 + x2)。原算子仅支持两路(x1+x2),上层需额外调用一次 torch.add 再传入算子,引入一次额外的 GM 搬入搬出。本 MR 将三路加法融合进 kernel 内部,在 fp32 域完成累加,减少一次 kernel launch 和数据搬运。 ### 改动方法 **1. proto/def — 新增 x3 可选输入** - add_rms_norm_dynamic_mx_quant_proto.h: 在 beta 之后新增 .OPTIONAL_INPUT(x3, ...),dtype {DT_FLOAT16, DT_BF16} - add_rms_norm_dynamic_mx_quant_def.cpp: x3 声明为 OPTIONAL,tilingKey 增加 HAS_X3 维度 - add_rms_norm_dynamic_mx_quant_binary.json: 二进制配置新增 x3 输入绑定 **2. op_api — V2 两段式 API** - 新增 aclnnAddRmsNormDynamicMxQuantV2GetWorkspaceSize / aclnnAddRmsNormDynamicMxQuantV2 - 抽取 GetWorkspaceSizeImpl 共享逻辑:V1 传 x3=nullptr,V2 透传 x3 - CheckNotNull 不校验 x3(nullptr 合法,等价 V1);tiling 层 CheckX3Input() 校验 x3 存在时 shape/dtype 必须与 x1 一致 **3. tiling — HAS_X3 编译期模板参数 + GE const-compile fallback** - HAS_X3 作为编译期模板参数(非 tiling data 运行时字段),编译器消除所有 x3 运行时分支 - HAS_X3=false 变体保留用于二进制向后兼容(V1 API 复用原二进制) - tilingKey 从 5 → 10 variant(COMPUTE_MODE × Y_DATA_TYPE × HAS_X3) - 抽取 PostTilingImpl + GetTilingKeyCommon 到基类(DRY) - tiling_reduce_empty_arch35.cpp: 补充 perCorePerLoopElements < ubAlignElems 的 FloorAlign 归零 fallback 处理 - **GE const-compile fallback**(移植自 add_layer_norm_quant 模式):CompileInfo 新增 4 字段 isRegbase/vRegSize/ubBlockSize/sysWorkspaceSize,TilingPrepare 预存;CanUseRegbase/GetPlatformInfo/GetWorkspaceSize 在 platformInfo==null(GE 编译期)时从 CompileInfo 读取,解决 PreSmoke ATK const-compile 失败 **4. kernel — 统一 FP8/FP4 + 修复 SPLIT_R race** - 统一 kernel:将 4 个分离类合并为 2 个统一类,通过 IsFP4Type<T_Y> type trait 编译期推导 FP8/FP4 分支,if constexpr 消除运行时开销。净减约 916 行重复代码 - 删除死代码:移除未调用的 MxQuantDeletePadData - 修复 SPLIT_R MTE2→V pipeline race:Phase1 写 x_out 到 GM(MTE3),Phase2 读回(MTE2)。替换粗粒度 PipeBarrier 为精确的 MTE3_MTE2 + MTE2_V event flag - 修复加法顺序:(x3+x1)+x2,匹配残差加法语义 **5. torch_extension — 迁移公共目录 + 接口更名** - 代码从算子私有目录 norm/add_rms_norm_dynamic_mx_quant/torch_extension/ 迁移至 nn 仓公共目录 torch_extension/cann_ops_nn/ops/norm/add_rms_norm_dynamic_quant/,便于后续多个量化场景算子共用该 torch 接口 - torch API 更名为 add_rms_norm_dynamic_quant(去掉 mx,为后续扩展其他量化类型的统一接口预留;底层 aclnn API 名 aclnnAddRmsNormDynamicMxQuantV2 与 GE 算子名 AddRmsNormDynamicMxQuant 保持不变) - csrc/add_rms_norm_dynamic_quant.cpp: C++ binding(始终走 V2 API,x3 为 None 时传 nullptr 等价 V1) - add_rms_norm_dynamic_quant.py: Python wrapper(schema/meta/PrivateUse1,meta 校验 FP4 scale_alg==0 与 C++ 一致) - graph_convert_add_rms_norm_dynamic_quant.py: torchair dynamo GE 图转换,含 FP4 打包后处理(Reshape→Bitcast→Reshape 链将 GE 层未打包 FP4 输出转为 torch 层 uint8 打包) **6. ST 用例规范化(TTK 目录与命名约定)** - 用例 CSV 从 tests/assets/ 迁移至 tests/st/arch35/,按 TTK 规范命名:ttk_kernel/ttk_aclnn/ttk_e2e/ttk_geir_add_rms_norm_dynamic_mx_quant_st.csv,CI(ops_st_test.sh)可自动发现执行 - golden.py 适配新版 TTK:删除手写 FrameworkApiInfoKeeper.register() 参数注册(签名改由算子自带 schema 自动解析),__spec__ 注册 4 段名 torch.ops.cann_ops_nn.add_rms_norm_dynamic_quant - golden 新增 pre_compare 钩子:将 NPU 侧 uint8 打包 FP4 输出解包为 float4,使比对走 requant 判据 - 修复 golden bf16 输入静默提升为 fp32 的问题(位保留 view 转换),消除 SPLIT_R 边界场景 mxscale 1-bit 级偏差 **7. 文档** - 新增 aclnnAddRmsNormDynamicMxQuantV2.md,格式对齐 V1 文档 - README 更新 torch_extension 调用说明(包名 cann_ops_nn、接口名、新代码路径) ## 测试 ### 精度验证(TTK 框架,Ascend950PR,上机实测) - Kernel 模式:105/105 PASS(10 tilingKey variant × 边界场景,86 条含 x3) - ACLNN 模式:105/105 PASS(V1 + V2 API × 全 dstType/scaleAlg/roundMode 组合,105 条含 x3/V2) - E2E 模式(torch extension 标准包 cann_ops_nn,接口名 add_rms_norm_dynamic_quant):41/41 PASS(V1/V2 × FP8_E4M3/E5M2/FP4_E2M1/E1M2 × SPLIT_R 边界/bfloat16/beta=None/1D-4D,4 输出 y/x/mxscale/rstd 全比对) - GEIR 模式:18 条用例 - golden.py 合并 e2e spec(__spec__ + torch<->numpy 适配),--plugin tests 一条参数通吃 kernel/aclnn/e2e 三模式 ### torch_extension 套件(pytest,上机实测) - 104 passed, 0 skipped:全 tilingKey 变体、图模式(torchair + torch.compile)、FP4/FP8、fp16/bf16、SPLIT_R 性能基准 - FP4 性能用例改为偶数 R 参数化收集(替代运行时 skip,报告无跳过项) ### 端到端上机验证(Ascend950PR + CANN 9.2.0) - CMake 裁剪单算子 + build.sh --pkg --soc=ascend950 --vendor_name=custom_nn 整包编译,run 包安装后 torch.ops.cann_ops_nn.add_rms_norm_dynamic_quant JIT 编译执行通过 - 冒烟数值验证:rstd 误差 5.96e-08、x_out 达 fp16 精度上限、FP4 打包输出 shape/dtype 正确 ### UT(CMake 编译) - test_aclnn_add_rms_norm_dynamic_mx_quant.cpp: 17 个 TEST_F - test_add_rms_norm_dynamic_mx_quant_tiling.cpp: 33 个 TEST_F(新增 tiling_prepare_stores_const_compile_fields 验证 TilingPrepare 预存 GE const-compile fallback 字段;同步 UT 镜像 CompileInfo 至 6 字段,修复 OOB 越界读;更正 7 个 tiling-key 期望值,**全量 45 UT PASS**) - test_add_rms_norm_dynamic_mx_quant_apt.cpp: 5 个 TEST_F ### 代码质量 - golden.py monkey-patch 加版本锁 assert(上游 dynamic_mx_quant golden API 变更时 fail-fast) - pre-commit 全部通过(clang-format / ruff-check / ruff-format / codespell) ## 文档更新 - 新增 docs/aclnnAddRmsNormDynamicMxQuantV2.md - 更新 docs/zh/menu_aclnn_api.md、docs/zh/op_api_list.md - 更新 README.md ## 关联的Issue - #4693(需求:新增可选输入 x3) - #4939(需求:torch extension 适配) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8520 | 7 天前 | |
modify AddRmsNormDynamicQuant op aclnn abnormal check Co-authored-by: clwsy1<wangsiyang3@huawei.com> # message auto-generated for no-merge-commit merge: !9378 merge dev into master modify AddRmsNormDynamicQuant op aclnn abnormal check Created-by: clwsy1 Commit-by: clwsy1 Merged-by: cann-robot Description: ## 描述 修改AddRmsNormDynamicQUant算子在aclnn层的异常数据类型拦截校验,让报错信息更明确 ## 关联的Issue [#5282](https://gitcode.com/cann/ops-nn/issues/5282) ## 测试 完成异常用例测试,测试通过 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9378 | 8 天前 | |
fix(norm): 清理 RMSNormDynamicQuant 系列代码检查问题 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9186 merge fix/rms-norm-dynamic-quant-codecheck into master fix(norm): 清理 RMSNormDynamicQuant 系列代码检查问题 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 - 使用已有命名常量 NUM_TWO 替换除 2 操作中的魔鬼数字。 - 删除两个 aclnn 实现中未使用的 op_api_def_nn.h。 - 将内部 kernel 聚合头文件改名为 add_rms_norm_dynamic_quant_kernel.h,避免与公开 op_api 头文件同名。 - 更新 AddRmsNormDynamicQuant V1/V2 的 kernel 头文件引用。 - 本次修改不改变算子接口及执行逻辑。 ## 关联的Issue #5148 ## 测试 - Ascend 950 AddRmsNormDynamicQuant V1/V2 kernel 编译通过。 - Ascend 950 op_host/op_api/op_graph 定向编译通过。 - clang-format、git diff 和 pre-commit 检查通过。 - ttk回归测试 - 未新增测试用例。 ## 文档更新 无需更新文档。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9186 | 9 天前 | |
将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 | 9 天前 | |
fix(norm): 修复 AddRmsNormQuantV2 二维 gamma/beta 处理并保留兼容性 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !8966 merge fix/add-rms-norm-quant-v2-gamma-2d into master fix(norm): 修复 AddRmsNormQuantV2 二维 gamma/beta 处理并保留兼容性 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 修复 AddRmsNormQuantV2 对二维 gamma / beta 的错误处理,同时保留历史兼容行为。 原实现会将所有二维 gamma / beta reshape 为 {shape[1]}。当 gamma 为 (M,N) 且 M > 1 时,reshape 前后元素数不一致,可能导致 gamma / beta 变为空指针,最终无法匹配 AddRmsNormQuantV2 binary。 本次修改: - 在 V2 参数预处理阶段严格校验 gamma 与 x1 后 N 维的 shape 关系。 - 仅将前导维为 1 的二维 gamma / beta,即 (1,N),作为历史兼容别名 (N) 处理。 - 对 (1,N) 使用归一化后的逻辑 shape 完成校验,再执行带返回值检查的 reshape。 - 对 (M,N), M > 1 及其他维度的 gamma 不再压缩;shape 匹配时正常执行,不匹配时返回参数错误。 - 保留 910B、910_93、310P 和 950 平台已有 (1,N) 调用方式。 核心改动是:把 V2 的 gamma/beta 二维处理从“所有二维都压成一维”,改为“只兼容历史 (1,N),其他二维 shape 原样保留并严格校验”。 在 ops-nn/norm/add_rms_norm_quant_v2/op_host/op_api/aclnn_add_rms_norm_quant_v2.cpp:307 中,改动分为三部分: 1. 抽出基于 Shape 的检查 新增 CheckGammaShapeX(x1, gammaShape),让校验既可以使用 gamma 的真实 shape,也可以使用兼容归一化后的逻辑 shape。 CheckShapeGammaX(x1, gamma) 仍然保留,所以原有 V1 调用行为不变。 2. 新增 V2 输入预处理 ops-nn/norm/add_rms_norm_quant_v2/op_host/op_api/aclnn_add_rms_norm_quant_v2.cpp:592 的处理顺序是: - 先完成空指针、dtype、维数和输出 shape 等基础检查。 - 如果 gamma 是严格的二维 (1,N): - 按逻辑 shape (N) 校验它是否匹配 x 的尾维; - 再通过 Reshape 转成 (N),保持历史执行路径兼容。 - 其他 gamma shape 不做 reshape,直接按真实 shape 严格校验。 - beta 同样只对 (1,N) 做兼容 reshape。 - 检查 Reshape 返回值,避免空 tensor 继续进入后续执行。 3. V2 统一走预处理 ComputeAddRmsNormQuantV2() 不再直接调用 CheckParamsV2(),而是调用 PreprocessV2Inputs(),这样后续 binary key 选择和 kernel 执行拿到的是正确、兼容后的参 数。 具体行为如下: 输入 新行为 ━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ x=(8,64), gamma=(1,64) 视为历史 (64) 写法,reshape 后正常执行 ────────────────────────── ────────────────────────────────────────── x=(8,64), gamma=(8,64) 不 reshape,保留二维 shape,修复本次问题 ────────────────────────── ────────────────────────────────────────── x=(8,64), gamma=(2,64) shape 不匹配,返回参数错误 ────────────────────────── ────────────────────────────────────────── x=(4,8,64), gamma=(8,64) 与 x 尾部两维匹配,正常执行 之所以不能直接在 CheckParamsV2() 中校验原始 gamma,是因为 legacy 平台会把 (1,N) 路由到 V2;如果直接按照二维 shape 与 x 比较,它会在兼容 reshape 之前被拒 绝,从而破坏历史调用。 因此,这次修改的边界很明确: - 保留已有 (1,N) 兼容性; - 支持合法的 (M,N); - 不会把任意二维 gamma 错误地展平成一维; - 非法 shape 仍然会被拒绝。 ## 关联的Issue 关联 Issue:#4948 https://gitcode.com/cann/ops-nn/issues/4948 ## 测试 - pre-commit 全部通过:clang-format、codespell、OAT 等检查通过。 - cmake --build build --target nn_op_api_ut -j16:编译通过。 - l2_add_rms_norm_quant_v2_test.*:8/8 PASSED。 - 新增用例覆盖 910B、910_93、310P、950 的 (8,64)+(1,64) 兼容行为,以及 950 上合法/非法二维 gamma。 - 本次未执行 910B 实机 ST。 ## 文档更新 无。实现与现有 legacy 平台 (1,N) 约束保持一致。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8966 | 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 | 9 天前 | |
fix: 重命名 batch_norm3d 文件以对齐算子类型命名,并删除 op_kernel 单测 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !9081 merge deliver/batchnorm3d-rebased into master fix: 重命名 batch_norm3d 文件以对齐算子类型命名,并删除 op_kernel 单测 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 修复 batch_norm3d 系列算子文件命名与算子类型名不一致的问题,将 batch_norm3d_* 文件重命名为 batch_norm3_d_*,使其与算子类型名(batch_norm3_d / batch_norm3_d_grad)保持一致;同时删除 op_kernel 单测。 具体改动: - 重命名文件(6 个): - batch_norm3d_def.cpp → batch_norm3_d_def.cpp - batch_norm3d_infershape.cpp → batch_norm3_d_infershape.cpp - batch_norm3d_grad_proto.h → batch_norm3_d_grad_proto.h - batch_norm3d_grad_def.cpp → batch_norm3_d_grad_def.cpp - batch_norm3d_grad_infershape.cpp → batch_norm3_d_grad_infershape.cpp - test_batch_norm3d_grad_infershape.cpp → test_batch_norm3_d_grad_infershape.cpp - 同步更新引用:CMakeLists.txt(OPTYPE 改为 batch_norm3_d / batch_norm3_d_grad)、README.md、golden.py(spec/golden 名称) - 删除 op_kernel 单测(6 个):batch_norm3_d 与 batch_norm3_d_grad 的 tests/ut/op_kernel 目录(CMakeLists.txt、*_tiling_def.h、test_*.cpp) ## 关联的Issue - #5074 ## 测试 - op_host infershape 单测随文件重命名保留(test_batch_norm3_d_grad_infershape.cpp) - 删除 op_kernel 单测 ## 文档更新 - 更新 batch_norm3_d_grad/README.md 中 proto.h 引用路径 ## 类型标签 - [x] 其他,请描述:文件重命名与单测清理 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9081 | 12 天前 | |
fix: 重命名 batch_norm3d 文件以对齐算子类型命名,并删除 op_kernel 单测 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !9081 merge deliver/batchnorm3d-rebased into master fix: 重命名 batch_norm3d 文件以对齐算子类型命名,并删除 op_kernel 单测 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 修复 batch_norm3d 系列算子文件命名与算子类型名不一致的问题,将 batch_norm3d_* 文件重命名为 batch_norm3_d_*,使其与算子类型名(batch_norm3_d / batch_norm3_d_grad)保持一致;同时删除 op_kernel 单测。 具体改动: - 重命名文件(6 个): - batch_norm3d_def.cpp → batch_norm3_d_def.cpp - batch_norm3d_infershape.cpp → batch_norm3_d_infershape.cpp - batch_norm3d_grad_proto.h → batch_norm3_d_grad_proto.h - batch_norm3d_grad_def.cpp → batch_norm3_d_grad_def.cpp - batch_norm3d_grad_infershape.cpp → batch_norm3_d_grad_infershape.cpp - test_batch_norm3d_grad_infershape.cpp → test_batch_norm3_d_grad_infershape.cpp - 同步更新引用:CMakeLists.txt(OPTYPE 改为 batch_norm3_d / batch_norm3_d_grad)、README.md、golden.py(spec/golden 名称) - 删除 op_kernel 单测(6 个):batch_norm3_d 与 batch_norm3_d_grad 的 tests/ut/op_kernel 目录(CMakeLists.txt、*_tiling_def.h、test_*.cpp) ## 关联的Issue - #5074 ## 测试 - op_host infershape 单测随文件重命名保留(test_batch_norm3_d_grad_infershape.cpp) - 删除 op_kernel 单测 ## 文档更新 - 更新 batch_norm3_d_grad/README.md 中 proto.h 引用路径 ## 类型标签 - [x] 其他,请描述:文件重命名与单测清理 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9081 | 12 天前 | |
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 | 15 天前 | |
BN3DTrainingUpdate和BatchNormExt2算子golden支持三方精度校验 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !9128 merge golden_fix into master BN3DTrainingUpdate和BatchNormExt2算子golden文件修改 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为BN3DTrainingUpdate和BatchNormExt2算子的golden补充third_party部分内容,支持自动验证三方精度 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 修改后的golden已经可以测试三方精度 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9128 | 9 天前 | |
将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 | 9 天前 | |
feat: 新增 BatchNorm3D、BatchNorm3DGrad、BatchNormGradExt2 算子 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !8976 merge deliver/batchnorm3d-rebased into master feat: 新增 BatchNorm3D、BatchNorm3DGrad、BatchNormGradExt2 算子 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 新增 BatchNorm3D 系列算子,共 3 个,均支持 Ascend 950PR/Ascend 950DT 平台: - BatchNorm3D(batch_norm3d):对 5D 输入张量做批归一化,支持训练与推理模式。输入 x 支持 FLOAT16/FLOAT32、NCDHW/NDHWC 格式;输出 y、batch_mean、batch_variance 及辅助输出 reserve_space_1/reserve_space_2。 - BatchNorm3DGrad(batch_norm3d_grad):计算 BatchNorm3D 的反向梯度,输出输入梯度 x_backprop、scale 梯度、offset 梯度及辅助输出。输入支持 4D/5D,数据类型 FLOAT16/FLOAT32/BFLOAT16,格式 NCDHW/NCHW/NHWC/NDHWC。 - BatchNormGradExt2(batch_norm_grad_ext2):计算 BatchNorm 的反向梯度,接口与 BatchNorm3DGrad 类似,默认 data_format 为 NHWC。 ## 关联的Issue - #4966 ## 测试 - 新增 infershape 单测:test_batch_norm3d_infershape.cpp、test_batch_norm3d_grad_infershape.cpp、test_batch_norm_grad_ext2_infershape.cpp - 新增 kernel 单测:test_batch_norm3_d.cpp、test_batch_norm3_d_grad.cpp、test_batch_norm_grad_ext2.cpp - 新增 golden 数据:golden.py ## 文档更新 - 新增算子 README:norm/batch_norm3_d/README.md、norm/batch_norm3_d_grad/README.md、norm/batch_norm_grad_ext2/README.md - 更新算子清单:docs/zh/op_list.md ## 类型标签 - [x] 新特性 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!8976 | 12 天前 | |
fix(norm): 修复 norm 公共校验与 batch_norm_grad_v3 日志文案错误 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !8999 merge fix-norm-tiling-check-log-typo into master fix(norm): 修复 norm 公共校验与 batch_norm_grad_v3 日志文案错误 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 norm 公共校验头文件与 batch_norm_grad_v3 算子中若干日志文案拼写/语法错误与注释不一致问题,提升报错信息的准确性与可读性,避免误导问题排查。所有改动仅涉及日志字符串与注释,不改动任何判定逻辑。 ### 一、norm_tiling_check_common.h - CheckShapeBC:判定条件为 srcBcDimNum < srcDimNum(要求广播 shape 的维数不小于被广播 shape 的维数),日志却打印 "not bigger",方向相反;改为 "%s should not be smaller than %s" 并补全两个 %lu 之间的逗号。 - CheckDimBiggerZero:"should bigger or equal than zero" 语法不规范;改为 "should not be less than zero."(与 < 0 判定一致,允许 0)。 - CheckShapeSame:补全两个 %lu 之间缺失的逗号。 - #endif 注释与实际头文件保护宏名不一致,修正为 NORM_COMMON_NORM_TILING_CHECK_COMMON_H_。 ### 二、batch_norm_grad_v3(10 个文件,+12 -12) - **拼写错误**: - batch_norm_grad_v3_tiling.cpp:OP_LOGD 中 resserve → reserve。 - batch_norm_grad_v3_base_tiling.cpp / batch_norm_grad_v3_tiling_infer_base.cpp:报错文案 paremeter → parameter(各 1 处)。 - batch_norm_grad_v3_tiling_rar_split_core_r1.cpp:注释 simutaneously → simultaneously。 - **语法错误**: - aclnn_batch_norm_backward.cpp / aclnn_fast_batch_norm_backward.cpp:"outputMask size should not less than 1." → "should not be less than 1."(缺谓语 be)。 - **格式问题**: - _tiling_infer.cpp / _splitload_tiling.cpp / _fullload_tiling.cpp / _splitload_crosscore_tiling.cpp:去掉 "is capable" 后重复的逗号(", ," → ", ")。 - batch_norm_grad_v3_base_tiling.cpp / batch_norm_grad_v3_tiling_infer_base.cpp:CalcBasicInfo 的 OP_LOGD 中逗号后补缺失空格。 ### 说明 - 不重命名 CheckDimBiggerZero:该函数在 add_rms_norm_cast、add_rms_norm_dynamic_quant、multi_add_rms_norm_dynamic_quant 等多个算子中被调用,重命名会波及大量文件。 - 仅日志/注释修改,无逻辑变更,不影响编译与功能。 ## 关联的Issue - #4970 ## 测试 - 仅日志/注释修改,无逻辑变更,不影响编译与功能。 - 通过 git diff 逐项核对文案与判定条件一致。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8999 | 8 天前 | |
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 | 8 天前 | |
下一代支持BN3DTrainingReduceGrad && BatchNormExt2格式校验修改 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !9225 merge bn3_d_training_reduce_grad into master 下一代支持BN3DTrainingReduceGrad Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 下一代新增支持BN3DTrainingReduceGrad,用于计算3D Batch Normalization训练反传的收尾梯度 修复BatchNormExt2算子的格式校验问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5223 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT,ST,geir通路均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增算子的README.md文档,在op_list.md中补充该算子 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9225 | 9 天前 | |
BN3DTrainingUpdate和BatchNormExt2算子golden支持三方精度校验 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !9128 merge golden_fix into master BN3DTrainingUpdate和BatchNormExt2算子golden文件修改 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为BN3DTrainingUpdate和BatchNormExt2算子的golden补充third_party部分内容,支持自动验证三方精度 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 修改后的golden已经可以测试三方精度 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9128 | 9 天前 | |
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 | 8 天前 | |
fix(op_graph): 30 个算子原型头补 OPS_PROTO_DEF 隔离宏 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9218 merge fix/proto-isolation-macro into master fix(op_graph): 30 个算子原型头补 OPS_PROTO_DEF 隔离宏 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 **改动原因** op_graph/*_proto.h 中的 REG_OP 会被 scripts/util/merge_proto.py 合并进 ops_proto_nn.h/.cpp,再编成内置 op_proto 库(cmake/gen_ops_info.cmake 的 merge_graph_headers → cmake/symbol.cmake 的 gen_opgraph_symbol)。当同名算子在 canndev 侧的遗留原型头(nn_norm_ops.h、reduce_ops.h、ops_proto_legacy.h 等)也有 REG_OP 注册时,两份定义进入同一编译单元会重复定义。 仓库既有范式是在 REG_OP 外层加条件编译隔离宏,merge_proto.py 的匹配式会把该宏一并带入合并产物。本仓已有 activation/relu6_d、optim/sgd、norm/in_training_reduce_v2、vfusion/normalize_bbox 等先例,但本批 30 个算子的原型头遗漏了该保护。检视意见整改。 **改动方法** 对 30 个算子的 op_graph/*_proto.h,在 REG_OP 外层补 #ifndef/#define OPS_PROTO_DEF_<OPTYPE> … #endif: c #ifndef OPS_PROTO_DEF_DEEPNORM #define OPS_PROTO_DEF_DEEPNORM REG_OP(DeepNorm) ... .OP_END_FACTORY_REG(DeepNorm) #endif // OPS_PROTO_DEF_DEEPNORM 宏名取 OPS_PROTO_DEF_ + 算子名大写去下划线,与发布包 opp/built-in/op_graph/inc 中已有 967 个同类隔离宏的拼法一致。位置严格贴在 REG_OP 前、OP_END_FACTORY_REG 后一行——merge_proto.py 的正则要求 guard 与 REG_OP 相邻,位置写偏宏会被丢弃。 **涉及算子(30 个)** ApplyAdagrad、BatchNormExt2、BN3DTrainingUpdate、BNInfer、BNTrainingUpdateV2、BNTrainingUpdateV3、ChamferDistance、ClippedSwiglu、CosineEmbeddingLoss、DeepNorm、DeepNormGrad、DynamicQuantUpdateScatter、DynamicQuantUpdateScatterV2、GemmaRmsNorm、GroupNormSiluQuant、HardSigmoid、HardSwishGradV2、INInferV2、InplaceApplyRMSProp、InplaceSub、InstanceNormGrad、INTrainingUpdateGrad、L2NormalizeGrad、MultiAddRmsNormDynamicQuant、MultilabelMarginLoss、NonZeroWithValue、PoissonNllLoss、Relu6Grad、SoftmaxFocalLoss、SoftmaxFocalLossGrad **顺带修复**:deep_norm、deep_norm_grad、gemma_rms_norm、multi_add_rms_norm_dynamic_quant、dynamic_quant_update_scatter_v2 这 5 个原型头文件末尾缺换行,属存量问题;pre-commit 的 end-of-file-fixer 钩子只扫改动文件,一旦改动即会被拦,故一并补齐。 **变更范围**:30 个文件,+95 −5,改动全部为条件编译指令与文件末尾换行,不改动任何 IR 的输入/输出/属性/dtype 定义,无功能与支持面变化。未改动 common/inc/op_graph/op_nn_proto_extend.h——merge_proto.py 会按算子名把聚合头中的重复项去重,改它不会进入合并产物。 ## 关联的Issue 关联 Issue #5170 ## 测试 1. **合并产物验证**:对 30 个改动文件跑 python3 scripts/util/merge_proto.py,合并产物中 REG_OP 30 个、#ifndef OPS_PROTO_DEF_ 30 个,隔离宏 30/30 全部正确带出。 2. **宏名配对验证**:与发布包 cann-9.2.0/opp/built-in/op_graph/inc/*.h 中同名算子的既有隔离宏逐个比对,宏名不一致项 0 处。 3. **重名检查**:30 个新增宏在三仓范围内无跨文件重名,每个文件内 OPS_PROTO_DEF_ 宏数恰为 1(无嵌套/重复保护)。 4. **格式与合规门禁**:按 .pre-commit-config.yaml 逐钩子本地复现 —— clang-format 18.1.8 --style=file --dry-run -Werror 整文件检查 30/30 通过、OAT 许可头 30/30 合规、trailing-whitespace / end-of-file-fixer / check-merge-conflict / detect-private-key / check-added-large-files 全部通过。 ## 文档更新 无。本 PR 不涉及文档变更。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 <!-- 关联 Issue: https://gitcode.com/cann/ops-nn/issues/5170 --> See merge request: cann/ops-nn!9218 | 10 天前 | |
fix(docs): 修正 Softsign/ApplyCenteredRMSProp/BNInferGrad 产品支持表 Atlas 200I/500 A2 标记 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !9336 merge fix_doc into master fix(docs): 修正 Softsign/ApplyCenteredRMSProp/BNInferGrad 产品支持表 Atlas 200I/500 A2 标记 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 修复内容 修正 3 个算子 README.md「产品支持情况」表中 **Atlas 200I/500 A2 推理产品** 的支持标记错误(× → √): | 算子 | 文件 | 修改前 | 修改后 | |---|---|---|---| | Softsign | activation/softsign/README.md | × | √ | | ApplyCenteredRMSProp | optim/apply_centered_rms_prop/README.md | × | √ | | BNInferGrad | norm/bn_infer_grad/README.md | × | √ | ## 修复依据 以 canndev 仓 ini 为产品支持判据(Ascend 950PR/DT 按规则默认支持,其余系列以 ini 实际注册为准)。 在 canndev/ops/built-in/tbe/op_info_cfg/ai_core/ascend310b/aic-ascend310b-ops-info.ini 中检索到上述三算子均已注册: - [Softsign] input0.dtype=float16,float - [ApplyCenteredRMSProp] dynamicShapeSupport.flag=true - [BNInferGrad] compute.cost=10 「Atlas 200I/500 A2 推理产品」对应 Ascend 310B 系列(Ascend310B1/B2/B3/B4),即 ascend310b ini。因此三算子在该产品实际可用,README 应标记为 √。 ## 不在本次修改范围 - **SeluGrad**:ascend310b ini 中未注册 [SeluGrad],其 README「×」标记正确,保持不变。 - 其余产品行(950PR/DT、A3、A2、推理系列、训练系列)均与 ini 一致,无需改动。 ## 变更清单 - activation/softsign/README.md - optim/apply_centered_rms_prop/README.md - norm/bn_infer_grad/README.md Fixes #5244 See merge request: cann/ops-nn!9336 | 8 天前 | |
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 | 8 天前 | |
bn_training_reduce算子支持NCDHW Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !9089 merge bn_training_reduce into master bn_training_reduce算子支持NCDHW Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 本 PR 为 Ascend 950 的 BNTrainingReduce GE 内核补充 NCDHW 5 维格式支持。算子保留 C 轴并归约其余维度;对 NCDHW 输入沿 N、D、H、W 轴计算每通道 sum 与 square_sum。 主要改动: - 在 OpDef 中为 FLOAT16、BFLOAT16、FLOAT 输入补充 NCDHW 格式组合,输出固定为 FLOAT,并保持 GE 输出格式元数据与输入一致。 - 扩展 InferShape:支持 NCHW 2~4 维、NHWC 4 维和 NCDHW 5 维;NCHW/NCDHW 使用第 1 维作为 C 轴,NHWC 使用第 3 维;拒绝 NDC1HWC0 及格式/Rank 不匹配输入。 - 扩展 Ascend 950 Tiling 公共输入结构、格式枚举和校验逻辑,新增 NCDHW 路由,并兼容逻辑输出 [C] 与仅通道维非 1 的展开输出。 - 保持 ACLNN 接口仅支持 NCHW 的既有契约;将一维输出在 AICore 调用前扩展为 NCHW 四维视图,同时补充空 Tensor 与格式校验。 - 确定性模式下改用用户 workspace,避免将框架 workspace 直接传入算子实现。 - 更新 GEIR 示例、README 及相关 Host UT。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5085 ## 测试 - InferShape UT:覆盖 NCHW 2 维、NCDHW 5 维、NHWC 4 维,以及 ND、NDC1HWC0、NHWC/NCDHW 错误 Rank 拒绝场景。 - Tiling UT:覆盖 NCHW 2 维、NHWC、NCDHW、空通道/空归约轴、非法格式、错误 Rank 和输出 Shape 不匹配场景。 - ACLNN UT:覆盖 BF16 正向场景,并验证 NHWC 与空 NHWC 输入被拒绝,确保 ACLNN 契约无扩张。 - GEIR 示例:增加 NCDHW 格式解析与输出格式打印支持。 - GitCode CI 已通过:antipoison、codecheck、codespell、链接有效性、资源存在性、标签闭合、markdownlint、pre-commit 和 SCA 检查;当前 PR 标签为 ci-pipeline-passed。 ## 文档更新 更新 norm/bn_training_reduce/README.md:补充 Ascend 950 GE 内核支持 NCDHW 5 维、各格式 Rank 范围、输出 Shape/格式约束,以及 ACLNN 与 GE 通路的格式差异。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9089 | 8 天前 | |
feat: 新增 BNTrainingReduceGrad 算子 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !9230 merge deliver/bn-training-reduce-grad into master feat: 新增 BNTrainingReduceGrad 算子 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 新增 BNTrainingReduceGrad 算子,用于批归一化训练反向的 reduce-grad 阶段。 给定上层梯度 grads、前向输入 x、BNTrainingUpdateGrad 产出的逐通道统计量 diff_scale/diff_offset,以及 scale/batch_mean/batch_variance,计算回传给 x 的梯度 y。该算子在 GE 图内由 FusedBatchNormGrad 融合展开生成,与 BNTrainingUpdateGrad 配套使用。 - 数据类型:grads/x/y 支持 FLOAT16/FLOAT32/BFLOAT16;diff_scale/diff_offset/scale/batch_mean/batch_variance 恒为 FLOAT32。 - 数据格式:ND(dim0=N、dim1=C、后导维展平为归一化轴 R),支持 ≥2 维。 - 属性:epsilon 为可选 FLOAT 属性,默认 0.0001。 - 平台:Ascend 950PR/Ascend 950DT(arch35),def.cpp 通过 AddConfig("ascend950") 注册。 同时将原 common/inc/op_graph/op_nn_proto_extend.h 中内联的 BNTrainingReduceGrad 注册迁移至独立算子目录 norm/bn_training_reduce_grad/,并更新 docs/zh/op_list.md 算子清单。 ## 关联的Issue - #5172 ## 测试 - 新增 tiling 单测:tests/ut/op_host/arch35/test_bn_training_reduce_grad_tiling.cpp - 新增 golden 数据:tests/assets/golden.py - 新增图模式调用样例:examples/arch35/test_geir_bn_training_reduce_grad.cpp ## 文档更新 - 新增算子 README:norm/bn_training_reduce_grad/README.md - 更新算子清单:docs/zh/op_list.md ## 类型标签 - [x] 新特性 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9230 | 10 天前 | |
feat: 新增BNTrainingUpdateGrad算子(Ascend 950PR) Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !9153 merge BNTrainingUpdateGrad into master feat: 新增BNTrainingUpdateGrad算子(Ascend 950PR) Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 新增BNTrainingUpdateGrad自定义算子,用于批归一化训练反向的update阶段。给定上游梯度grads、前向输入x及逐通道统计量batch_mean/batch_variance,在batch与空间维上做逐通道归约,输出仿射参数scale/offset的梯度diff_scale/diff_offset。 ### 改动内容 - 新增算子目录 norm/bn_training_update_grad/,包含完整实现: - **Proto注册**:从 op_nn_proto_extend.h 迁移至独立 bn_training_update_grad_proto.h,注册体与canndev built-in逐字一致 - **Op Host**:def注册(ascend950 vendor config)、infershape(diff_scale/diff_offset shape/dtype同batch_mean)、tiling(channel维主切分,UB反推cLenCap/sliceR/rowsPerTile) - **Op Kernel(arch35)**:AscendC kernel实现,fp16/bf16/fp32三二进制;快慢双路(cLenCap==1为快路:1D连续段+Kahan补偿累加;cLenCap>1为慢路:2D tile+位置归约) - **Framework**:TF plugin注册(AutoMappingFn + ImplyType::TVM) - **Config**:ascend950 binary.json(float16/bfloat16/float32三个bin,ND格式,FormatAgnostic) - **Tests**:tiling单元测试 + golden验证脚本 - **Examples**:图模式调用样例(两组shape/epsilon用例) - 从 common/inc/op_graph/op_nn_proto_extend.h 移除旧BNTrainingUpdateGrad proto定义(42行),迁移至独立proto文件 - 在 docs/zh/op_list.md 添加算子列表条目 ### 支持情况 - 硬件平台:Ascend 950PR/Ascend 950DT - 数据类型:grads/x支持FLOAT16/FLOAT32/BFLOAT16(三者同型),batch_mean/batch_variance/diff_scale/diff_offset恒为FLOAT32 - 数据格式:ND - 属性:epsilon(可选float,缺省0.0001) ## 关联的Issue - #5134 ## 测试 - tiling单元测试(test_bn_training_update_grad_tiling.cpp) - golden验证脚本(tests/assets/golden.py) - 图模式调用示例(examples/arch35/test_geir_bn_training_update_grad.cpp) ## 文档更新 - 新增 norm/bn_training_update_grad/README.md(含产品支持情况、功能说明、参数说明、约束说明、调用说明) - 更新 docs/zh/op_list.md 添加算子列表条目 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9153 | 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 | 9 天前 | |
将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 | 9 天前 | |
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 | 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 | 9 天前 | |
将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 | 9 天前 | |
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 | 1 个月前 | |
fix: group R 分组均匀分配 Co-authored-by: andong_hw<andong2@huawei.com> # message auto-generated for no-merge-commit merge: !9221 merge fix-group-empty-rgroup into master fix: group R 分组均匀分配 Created-by: andong_hw Commit-by: andong_hw Merged-by: cann-robot Description: ## 描述 修复 Group 模板 Phase1 的 R 分组截断分配 bug:原实现按 rPerCore = CeilDiv(rOuter, rGroupCnt) 均分 R chunk,CeilDiv 量化会造出空组(rStart ≥ rOuter 的核早退、不写 workspace 对应行),Phase 2 以 blockCount = rGroupCnt 全行 Reduce,将未写入的脏 GM 数据当 partial sum 读入,导致静默数值错误。改为大小核式均匀分配(rSmallGroupLoopCnt / rBigGroupCnt / rBigGroupLoopCnt),tiling 侧保证 rGroupCnt ≤ rLoopCntTotal 恒成立,每组 ≥1 chunk,无空组。涉及算子:euclidean_norm、bn_training_reduce、act_ulq_clamp_max_grad、act_ulq_clamp_min_grad。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5162 ## 测试 - kernel 编译验证:bash build.sh --ops=euclidean_norm,bn_training_reduce,act_ulq_clamp_max_grad,act_ulq_clamp_min_grad --noexec --soc=ascend950 -j32 编译通过 - euclidean_norm 上板复现并验证修复:shape (11396,150) fp32 axes=[0],修复前精度 FAIL(输出 NaN/超大值),修复后 PASS ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!9221 | 9 天前 | |
fix(op_graph): 30 个算子原型头补 OPS_PROTO_DEF 隔离宏 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9218 merge fix/proto-isolation-macro into master fix(op_graph): 30 个算子原型头补 OPS_PROTO_DEF 隔离宏 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 **改动原因** op_graph/*_proto.h 中的 REG_OP 会被 scripts/util/merge_proto.py 合并进 ops_proto_nn.h/.cpp,再编成内置 op_proto 库(cmake/gen_ops_info.cmake 的 merge_graph_headers → cmake/symbol.cmake 的 gen_opgraph_symbol)。当同名算子在 canndev 侧的遗留原型头(nn_norm_ops.h、reduce_ops.h、ops_proto_legacy.h 等)也有 REG_OP 注册时,两份定义进入同一编译单元会重复定义。 仓库既有范式是在 REG_OP 外层加条件编译隔离宏,merge_proto.py 的匹配式会把该宏一并带入合并产物。本仓已有 activation/relu6_d、optim/sgd、norm/in_training_reduce_v2、vfusion/normalize_bbox 等先例,但本批 30 个算子的原型头遗漏了该保护。检视意见整改。 **改动方法** 对 30 个算子的 op_graph/*_proto.h,在 REG_OP 外层补 #ifndef/#define OPS_PROTO_DEF_<OPTYPE> … #endif: c #ifndef OPS_PROTO_DEF_DEEPNORM #define OPS_PROTO_DEF_DEEPNORM REG_OP(DeepNorm) ... .OP_END_FACTORY_REG(DeepNorm) #endif // OPS_PROTO_DEF_DEEPNORM 宏名取 OPS_PROTO_DEF_ + 算子名大写去下划线,与发布包 opp/built-in/op_graph/inc 中已有 967 个同类隔离宏的拼法一致。位置严格贴在 REG_OP 前、OP_END_FACTORY_REG 后一行——merge_proto.py 的正则要求 guard 与 REG_OP 相邻,位置写偏宏会被丢弃。 **涉及算子(30 个)** ApplyAdagrad、BatchNormExt2、BN3DTrainingUpdate、BNInfer、BNTrainingUpdateV2、BNTrainingUpdateV3、ChamferDistance、ClippedSwiglu、CosineEmbeddingLoss、DeepNorm、DeepNormGrad、DynamicQuantUpdateScatter、DynamicQuantUpdateScatterV2、GemmaRmsNorm、GroupNormSiluQuant、HardSigmoid、HardSwishGradV2、INInferV2、InplaceApplyRMSProp、InplaceSub、InstanceNormGrad、INTrainingUpdateGrad、L2NormalizeGrad、MultiAddRmsNormDynamicQuant、MultilabelMarginLoss、NonZeroWithValue、PoissonNllLoss、Relu6Grad、SoftmaxFocalLoss、SoftmaxFocalLossGrad **顺带修复**:deep_norm、deep_norm_grad、gemma_rms_norm、multi_add_rms_norm_dynamic_quant、dynamic_quant_update_scatter_v2 这 5 个原型头文件末尾缺换行,属存量问题;pre-commit 的 end-of-file-fixer 钩子只扫改动文件,一旦改动即会被拦,故一并补齐。 **变更范围**:30 个文件,+95 −5,改动全部为条件编译指令与文件末尾换行,不改动任何 IR 的输入/输出/属性/dtype 定义,无功能与支持面变化。未改动 common/inc/op_graph/op_nn_proto_extend.h——merge_proto.py 会按算子名把聚合头中的重复项去重,改它不会进入合并产物。 ## 关联的Issue 关联 Issue #5170 ## 测试 1. **合并产物验证**:对 30 个改动文件跑 python3 scripts/util/merge_proto.py,合并产物中 REG_OP 30 个、#ifndef OPS_PROTO_DEF_ 30 个,隔离宏 30/30 全部正确带出。 2. **宏名配对验证**:与发布包 cann-9.2.0/opp/built-in/op_graph/inc/*.h 中同名算子的既有隔离宏逐个比对,宏名不一致项 0 处。 3. **重名检查**:30 个新增宏在三仓范围内无跨文件重名,每个文件内 OPS_PROTO_DEF_ 宏数恰为 1(无嵌套/重复保护)。 4. **格式与合规门禁**:按 .pre-commit-config.yaml 逐钩子本地复现 —— clang-format 18.1.8 --style=file --dry-run -Werror 整文件检查 30/30 通过、OAT 许可头 30/30 合规、trailing-whitespace / end-of-file-fixer / check-merge-conflict / detect-private-key / check-added-large-files 全部通过。 ## 文档更新 无。本 PR 不涉及文档变更。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 <!-- 关联 Issue: https://gitcode.com/cann/ops-nn/issues/5170 --> See merge request: cann/ops-nn!9218 | 10 天前 | |
ops 算子日志问题整改(swi_glu/group_norm 等 7 处日志修复) Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !9318 merge ops-log-fix into master ops 算子日志问题整改(swi_glu/group_norm 等 7 处日志修复) Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 本次 PR 修复 ops-nn 中 **5 个算子 7 处**生产代码日志问题(源自日志质量测评 2026-08-27),均为纯日志整改,不影响业务逻辑: 1. **swi_glu(3 处)** - devide → divide(拼写) - CalcOptBaseShape is invalid:保留 INFO,文案改为中性回退描述 falls back to previous optimal solution(该路径为搜索回退,可能成功) - Unsupported input data type:OP_LOGI → OP_LOGE(CalcTiling 真实失败路径) 2. **group_norm_silu(1 处)**:apiRet faild:%d → apiRet failed: %d(拼写) 3. **swiglu_group_quant(1 处)**:quant_mode=2 补充 (dynamic hifp8 quant) 说明(魔鬼数字) 4. **sparse_tensor_dense_mat_mul(1 处)**:字符串拼接补空格 transpose? Dimension;inner dimension → contraction dimension(避开内部敏感词 inner,语义等价) 5. **group_norm(1 处)**:ND、NCL 顿号改英文逗号(禁止中文) > 说明:以上算子其余 90 处测试代码问题(禁止自定义打印等)本次暂不处理,测试文件保持不动。sigmoid_cross_entropy_with_logits_v2、swiglu_group 的问题全部在测试代码,本次不涉及。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5232 ## 测试 - 7 处问题逐条核对:全部修复 - 逻辑零改动:条件判断、返回值、计算均未修改(仅日志级别/文案/打印内容) - pre-commit 门禁全过(含 OAT 合规检查) ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9318 | 9 天前 | |
将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 | 9 天前 | |
ops 算子日志问题整改(swi_glu/group_norm 等 7 处日志修复) Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !9318 merge ops-log-fix into master ops 算子日志问题整改(swi_glu/group_norm 等 7 处日志修复) Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 本次 PR 修复 ops-nn 中 **5 个算子 7 处**生产代码日志问题(源自日志质量测评 2026-08-27),均为纯日志整改,不影响业务逻辑: 1. **swi_glu(3 处)** - devide → divide(拼写) - CalcOptBaseShape is invalid:保留 INFO,文案改为中性回退描述 falls back to previous optimal solution(该路径为搜索回退,可能成功) - Unsupported input data type:OP_LOGI → OP_LOGE(CalcTiling 真实失败路径) 2. **group_norm_silu(1 处)**:apiRet faild:%d → apiRet failed: %d(拼写) 3. **swiglu_group_quant(1 处)**:quant_mode=2 补充 (dynamic hifp8 quant) 说明(魔鬼数字) 4. **sparse_tensor_dense_mat_mul(1 处)**:字符串拼接补空格 transpose? Dimension;inner dimension → contraction dimension(避开内部敏感词 inner,语义等价) 5. **group_norm(1 处)**:ND、NCL 顿号改英文逗号(禁止中文) > 说明:以上算子其余 90 处测试代码问题(禁止自定义打印等)本次暂不处理,测试文件保持不动。sigmoid_cross_entropy_with_logits_v2、swiglu_group 的问题全部在测试代码,本次不涉及。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5232 ## 测试 - 7 处问题逐条核对:全部修复 - 逻辑零改动:条件判断、返回值、计算均未修改(仅日志级别/文案/打印内容) - pre-commit 门禁全过(含 OAT 合规检查) ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9318 | 9 天前 | |
将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 | 9 天前 | |
规范化修改产品术语名 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 | 30 天前 | |
将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 | 9 天前 | |
将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 | 9 天前 | |
将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 | 9 天前 | |
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 | 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 | 9 天前 | |
将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 | 9 天前 | |
InplaceAddLayerNormFusionPass 融合规则迁移 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9018 merge inplace_aln_pass into master InplaceAddLayerNormFusionPass 融合规则迁移 Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 本 PR 对 InplaceAddLayerNormFusionPass 图融合 pass 进行了迁移重构,使用 graph_metadef 的原生 Graph/GNode 接口改图,将图中的 AddLayerNorm 算子替换为 InplaceAddLayerNorm 算子,使 x1/x2 输入被原地写回,省去额外输出拷贝,降低显存占用与访存开销。配套 16 个 UT 用例覆盖正向替换与各守卫负向拦截。 ### 改动原因 - 该融合规则原先存在于其他路径,本 PR 将其迁移至 graph base(op_graph)路径,统一使用原生 Graph/GNode 接口改图,便于维护与后续演进; - InplaceAddLayerNorm 支持原地写回 x1/x2,推理场景下可减少显存与带宽开销。 ### 改动方法 - inplace_add_layer_norm_fusion_pass.{h,cpp}:实现 ZInplaceAddLayerNormFusionPass,继承 FusionBasePass。Run 入口先做全局守卫(场景、平台,只判一次),再扫图取所有 AddLayerNorm 候选节点,逐节点过守卫链后执行单节点替换(建点→接输入→改接输出→搬控制边→断旧边删旧点),替换失败时整图回退; - 守卫链: - 场景守卫:ge.graphRunMode==1(训练)跳过;CANN < 9.0.0 运行期 GetOptionValue 不可达时静默不改; - 平台守卫:仅 Ascend910B/Ascend910_93/Ascend950 支持,并取 L2 容量用于 shape 收益判定; - 独占性守卫:x1/x2 必须被本节点独占消费,避免原地写回踩踏他人数据; - shape 守卫:静态 shape 按 x1 大小相对 L2 的上下界判定收益;动态 shape 仅当最后一维为 5120(reduce 轴)时放行; - dtype 守卫:x1/x2/gamma 必须同 dtype; - 属性透传:epsilon、additional_output 原样拷贝到新节点; - tests/ut/op_graph/:UT 覆盖正向(无 bias/有 bias/bf16/输入输出改接/下游改接/属性透传/控制边迁移/910B 平台/动态 reduce 轴)与负向守卫(不支持平台/输入被共享/shape 过小/shape 过大/动态非 reduce 轴/混合 dtype)。 涉及算子:inplace_add_layer_norm(op_graph 融合规则)。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5108 ## 测试 - UT:tests/ut/op_graph/test_inplace_add_layer_norm_fusion_pass.cpp 共 16 个用例,覆盖正向替换与全部守卫负向拦截,全部通过; ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:融合规则迁移 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9018 | 9 天前 | |
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 | 12 天前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 9 天前 | |
将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 | 9 天前 | |
feat: rename op_api_def.h to op_api_def_nn.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8360 merge rename_opapidef into master feat: rename op_api_def.h to op_api_def_nn.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 本次改动将 op_api/op_api_def.h 重命名为 op_api/op_api_def_nn.h,并同步更新了所有引用该头文件的源文件与测试文件中的 #include 路径,共涉及 161 个文件。 改动原因:将 op_api 定义头文件统一命名为 op_api_def_nn.h,以更好地体现其所属模块(NN 算子)的语义,便于后续与其他模块的头文件区分管理。 此外,在提交过程中发现 4 个文件(aclnn_foreach_addcmul_scalar_v2.cpp、aclnn_max_unpool3d.cpp、test_aclnn_addmv.cpp、test_aclnn_fast_batchnorm_backward.cpp)的许可证头使用了非标准的旧格式,导致 OAT 合规检查失败。本次一并将其更新为标准的 CANN 开源许可证头格式,确保通过合规校验。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4954 ## 测试 - 通过 pre-commit 钩子校验:trailing whitespace、end-of-file-fixer、clang-format 均通过 - 通过 OAT 合规检查(161 个文件全部通过) - 本次为头文件重命名改动,不涉及逻辑变更,编译依赖关系保持不变 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:头文件重命名与许可证头修复 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8360 | 15 天前 | |
将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 | 9 天前 | |
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 | 12 天前 | |
perf: 预计算rstd避免LayerNormGrad BigM模板热循环内重复计算 Co-authored-by: zhuzixian-lr<zhuzixian1@h-partners.com> # message auto-generated for no-merge-commit merge: !9229 merge perf/lng-bigm-rstd-precompute into master perf: 预计算rstd避免LayerNormGrad BigM模板热循环内重复计算 Created-by: zhuzixian-lr Commit-by: zhuzixian-lr Merged-by: cann-robot Description: ## 描述 对 arch35 平台 LayerNormGrad BigM 模板进行性能优化:将 rstd(倒数标准差)的计算从 ComputeGamma 和 ComputeDx 的热循环中提取到数据加载阶段(Prologue/ComputeGammaBeta),避免在每次外循环迭代中重复调用 ComputeRstdNewtonRaphsonReg 计算 rstd。 具体改动: 1. 新增 NormalizeWithRstd() 方法:直接使用预计算的 rstd Tensor 进行归一化,省去内部 rstd 计算 2. 新增 ComputeRstdFromVar() 方法:在数据加载后将 var 原地转换为 rstd,后续直接复用 3. ComputeGamma() 和 ComputeDx() 参数从 varTensor 改为 rstdTensor,直接加载预计算好的 rstd 4. 移除热循环内冗余的 varReg 加载、CreateMask ALL 和 ComputeRstdNewtonRaphsonReg 调用 5. Prologue/ComputeGammaBeta 中加载 var 后立即调用 ComputeRstdFromVar() 完成原地转换 ## 关联的Issue #5184 ## 测试 - pre-commit 校验全部通过(clang-format、codespell、OAT 合规检查) - 功能验证:LayerNormGrad 算子在 arch35 平台精度保持一致 ## 文档更新 无需文档更新 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9229 | 8 天前 | |
将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 | 9 天前 | |
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 个月前 | |
将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 | 9 天前 | |
将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 | 9 天前 | |
fix: inplace_apply_keras_momentum/lp_norm_update 属性标记为 OPTIONAL 与 REG_OP 行为对齐 Co-authored-by: Davon14272<liuwenda4@huawei.com> # message auto-generated for no-merge-commit merge: !8161 merge proto into master fix: inplace_apply_keras_momentum/lp_norm_update 属性标记为 OPTIONAL 与 REG_OP 行为对齐 Created-by: Davon14272 Commit-by: Davon14272 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将inplace_apply_keras_momentum/lp_norm_update 算子的kernel定义文件与proto文件中的属性定义不一致,需要和proto文件对齐,改为可选属性 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4498](https://gitcode.com/cann/ops-nn/issues/4498) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8161 | 1 个月前 | |
[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 | 19 天前 | |
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 | 8 天前 | |
md大模型检测低错修复 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9420 merge master into master md大模型检测低错修复 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md aidd大模型检测低错修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5254 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> acl*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9420 | 8 天前 | |
将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 | 9 天前 | |
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 | 17 天前 | |
fix(norm): 修复 norm 公共校验与 batch_norm_grad_v3 日志文案错误 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !8999 merge fix-norm-tiling-check-log-typo into master fix(norm): 修复 norm 公共校验与 batch_norm_grad_v3 日志文案错误 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 norm 公共校验头文件与 batch_norm_grad_v3 算子中若干日志文案拼写/语法错误与注释不一致问题,提升报错信息的准确性与可读性,避免误导问题排查。所有改动仅涉及日志字符串与注释,不改动任何判定逻辑。 ### 一、norm_tiling_check_common.h - CheckShapeBC:判定条件为 srcBcDimNum < srcDimNum(要求广播 shape 的维数不小于被广播 shape 的维数),日志却打印 "not bigger",方向相反;改为 "%s should not be smaller than %s" 并补全两个 %lu 之间的逗号。 - CheckDimBiggerZero:"should bigger or equal than zero" 语法不规范;改为 "should not be less than zero."(与 < 0 判定一致,允许 0)。 - CheckShapeSame:补全两个 %lu 之间缺失的逗号。 - #endif 注释与实际头文件保护宏名不一致,修正为 NORM_COMMON_NORM_TILING_CHECK_COMMON_H_。 ### 二、batch_norm_grad_v3(10 个文件,+12 -12) - **拼写错误**: - batch_norm_grad_v3_tiling.cpp:OP_LOGD 中 resserve → reserve。 - batch_norm_grad_v3_base_tiling.cpp / batch_norm_grad_v3_tiling_infer_base.cpp:报错文案 paremeter → parameter(各 1 处)。 - batch_norm_grad_v3_tiling_rar_split_core_r1.cpp:注释 simutaneously → simultaneously。 - **语法错误**: - aclnn_batch_norm_backward.cpp / aclnn_fast_batch_norm_backward.cpp:"outputMask size should not less than 1." → "should not be less than 1."(缺谓语 be)。 - **格式问题**: - _tiling_infer.cpp / _splitload_tiling.cpp / _fullload_tiling.cpp / _splitload_crosscore_tiling.cpp:去掉 "is capable" 后重复的逗号(", ," → ", ")。 - batch_norm_grad_v3_base_tiling.cpp / batch_norm_grad_v3_tiling_infer_base.cpp:CalcBasicInfo 的 OP_LOGD 中逗号后补缺失空格。 ### 说明 - 不重命名 CheckDimBiggerZero:该函数在 add_rms_norm_cast、add_rms_norm_dynamic_quant、multi_add_rms_norm_dynamic_quant 等多个算子中被调用,重命名会波及大量文件。 - 仅日志/注释修改,无逻辑变更,不影响编译与功能。 ## 关联的Issue - #4970 ## 测试 - 仅日志/注释修改,无逻辑变更,不影响编译与功能。 - 通过 git diff 逐项核对文案与判定条件一致。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8999 | 8 天前 | |
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 | 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 个月前 | |
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 | 15 天前 | |
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 | 8 天前 | |
fix(norm): 清理 RMSNormDynamicQuant 系列代码检查问题 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9186 merge fix/rms-norm-dynamic-quant-codecheck into master fix(norm): 清理 RMSNormDynamicQuant 系列代码检查问题 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 - 使用已有命名常量 NUM_TWO 替换除 2 操作中的魔鬼数字。 - 删除两个 aclnn 实现中未使用的 op_api_def_nn.h。 - 将内部 kernel 聚合头文件改名为 add_rms_norm_dynamic_quant_kernel.h,避免与公开 op_api 头文件同名。 - 更新 AddRmsNormDynamicQuant V1/V2 的 kernel 头文件引用。 - 本次修改不改变算子接口及执行逻辑。 ## 关联的Issue #5148 ## 测试 - Ascend 950 AddRmsNormDynamicQuant V1/V2 kernel 编译通过。 - Ascend 950 op_host/op_api/op_graph 定向编译通过。 - clang-format、git diff 和 pre-commit 检查通过。 - ttk回归测试 - 未新增测试用例。 ## 文档更新 无需更新文档。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9186 | 9 天前 | |
fix: torch ops cpp sources Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !8489 merge torch into master fix: torch ops cpp sources Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 本次PR主要修复了 Torch 算子 C++ 源码的路径管理问题,将原本按算子类别(如 activation、matmul、norm、quant)分目录存放的 .cpp 文件统一扁平化到 csrc/ 根目录。同时简化了 OpBuilder 基类,移除 category 参数及相关路径拼接逻辑,并增强了 JIT 编译阶段的错误诊断能力和构建过程中的文件清理机制。 主要改动 OpBuilder 基类重构:移除 __init__ 中的 category 参数,resolve_source 方法简化为直接返回 csrc/{cpp_filename},不再拼接子目录;各子类 sources() 方法统一改用 self.resolve_source("xxx.cpp") 替代原有的硬编码子目录路径。 load 方法增强:新增 ninja 可用性检查,若未安装则抛出明确的 RuntimeError;JIT 编译失败时提供包含常见原因(CANN toolkit 未 source、缺少编译器、缺少 ninja)的诊断信息。 setup.py 打包逻辑适配:_non_python_files 和 _collect_op 中 .cpp 文件的收集路径从 csrc/<category>/ 调整为 csrc/;BuildPyWithOps 新增对 csrc 子目录的处理,构建时清理不属于当前选中算子的残留 .cpp 文件。 install_requires 依赖调整:移除 torch>=2.6.0 和 torch_npu,新增 ninja 作为安装依赖。 ## 关联的Issue [#4690](https://gitcode.com/cann/ops-nn/issues/4690) ## 测试 本地编译构建,查看build目录下的目录层级 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8489 | 24 天前 | |
将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 | 9 天前 | |
将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 | 9 天前 | |
fix(log): 修复 rms_norm_quant/sync_batch_norm_backward_reduce 算子日志拼写、错误op名、格式符及语义问题 Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !8733 merge fix/norm-rms-sync-log-quality into master fix(log): 修复 rms_norm_quant/sync_batch_norm_backward_reduce 算子日志拼写、错误op名、格式符及语义问题 Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 本PR对 ops-nn 仓库中 rms_norm_quant / sync_batch_norm_backward_reduce 算子的日志消息进行质量修复,仅修改日志字符串,不涉及任何功能逻辑变更。 ### 改动原因 代码审计发现该系列算子日志存在拼写错误、错误op名引用、语义描述与实际检查不匹配等问题。 ### 改动方法 - aclnn_add_rms_norm_quant_v2.cpp:130 — 移除 "tensor's" 中多余撇号 → "tensor" - aclnn_rms_norm_quant.cpp:247 — "surport" → "support" - aclnn_rms_norm_quant.cpp:318 — 错误op名 "AclnnDynamicQuant" → "aclnnRmsNormQuant" - rms_norm_quant_v2_tiling_regbase_base.cpp:690 — "Set Output shape failed" → "The output shape is invalid"(校验检查而非设置操作) - aclnn_batch_norm_backward_reduce.cpp:351 — "less than 2" → "not equal to 2"(实际检查为 != 2) 注:rms_norm_quant_common_tiling.cpp 的修改已撤销,不在本PR范围内。 ## 关联的Issue #4815 ## 测试 本次修改仅涉及日志字符串,不影响算子功能逻辑,无需额外功能测试。 ## 文档更新 无文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8733 | 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 | 9 天前 | |
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 | 12 天前 | |
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 | 12 天前 | |
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 | 12 天前 | |
将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Co-authored-by: m0_71149169<1907825139@qq.com> # message auto-generated for no-merge-commit merge: !9291 merge norm-quant-microapi-to-reg into master 将norm,quant目录下 MicroAPI 命名空间统一替换为 Reg Created-by: m0_71149169 Commit-by: m0_71149169 Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: norm,quant CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:norm,quant ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: norm,quant目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9291 | 9 天前 | |
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 | 15 天前 | |
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 | 12 天前 | |
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 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 9 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 11 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 7 天前 | ||
| 8 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 11 天前 | ||
| 9 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 15 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 12 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 8 天前 | ||
| 10 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 10 天前 | ||
| 10 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 1 个月前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 1 个月前 | ||
| 9 天前 | ||
| 10 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 30 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 10 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 12 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 15 天前 | ||
| 9 天前 | ||
| 12 天前 | ||
| 8 天前 | ||
| 9 天前 | ||
| 1 个月前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 1 个月前 | ||
| 19 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 9 天前 | ||
| 17 天前 | ||
| 8 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 15 天前 | ||
| 8 天前 | ||
| 9 天前 | ||
| 24 天前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 16 天前 | ||
| 9 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 12 天前 | ||
| 9 天前 | ||
| 1 个月前 | ||
| 15 天前 | ||
| 12 天前 | ||
| 8 个月前 |