| docs(norm): 修正 6 个 aclnn 算子 A5 确定性计算描述 Co-authored-by: HelloWord-LuXin<luxin67@h-partners.com> # message auto-generated for no-merge-commit merge: !8709 merge fix-bn-groupnorm-deterministic-doc into master docs(norm): 修正 6 个 aclnn 算子 A5 确定性计算描述 Created-by: HelloWord-LuXin Commit-by: HelloWord-LuXin Merged-by: cann-robot Description: ## 修改内容 修正 aclnnBatchNorm、aclnnBatchNormElemt、aclnnBatchNormBackward、aclnnGroupNormBackward、aclnnRmsNormGrad、aclnnRmsNormGradQuant 六个算子文档中 A5(Ascend 950) 确定性计算描述与代码实际行为不符的问题。 close #4890 ## 问题分析 原描述为「默认非确定性实现,支持通过 aclrtCtxSetSysParamOpt 开启确定性」,未区分芯片版本。代码核查表明: A5(Ascend 950) 的 arch35/regbase kernel 使用 SyncAll 做核间同步,无 SetAtomicAdd;regbase tiling 不检查 GetDeterministic(),不读取 aclrtCtxSetSysParamOpt 设置。因此 A5 实际为默认确定性实现,且不支持通过 aclrtCtxSetSysParamOpt 开启确定性。 ## 代码依据 | 算子 | A5 GetDeterministic() | A5 SetAtomicAdd | A5 同步机制 | |------|-----------------------|-----------------|-------------| | aclnnBatchNorm | 否 | 否 | SyncAll | | aclnnBatchNormElemt | 否 | 否 | 无跨核归约 | | aclnnBatchNormBackward | 否 | 否 | SyncAll | | aclnnGroupNormBackward | 否 | 是(workspace写入) | SyncAll+二分树归约 | | aclnnRmsNormGrad | 否 | 否 | SyncAll | | aclnnRmsNormGradQuant | 否 | 否 | 无跨核归约 | > GroupNormBackward A5 虽使用 SetAtomicAdd 写 workspace,但 SPLIT_COUNT=2 保证每个 workspace slot 仅 2 个核写入,浮点加法交换律(a+b==b+a)保证结果确定;stage2 用 SyncAll + 二分树归约,最终输出无 atomic add。 ## 修改方案 仅修改 A5(Ascend 950) 描述,区分芯片版本描述: | 算子 | A5 描述 | |------|---------| | aclnnBatchNorm | → 默认确定性实现 | | aclnnBatchNormElemt | → 默认确定性实现 | | aclnnBatchNormBackward | → 默认确定性实现 | | aclnnGroupNormBackward | → 默认确定性实现 | | aclnnRmsNormGrad | → 默认确定性实现 | | aclnnRmsNormGradQuant | → 默认确定性实现 | ## 涉及文件 - norm/batch_norm_v3/docs/aclnnBatchNorm.md — 分架构描述,A5 改为默认确定性实现 - norm/batch_norm_elemt/docs/aclnnBatchNormElemt.md — 分架构描述,A5 改为默认确定性实现 - norm/batch_norm_grad_v3/docs/aclnnBatchNormBackward.md — 分架构描述,A5 改为默认确定性实现 - norm/group_norm_grad/docs/aclnnGroupNormBackward.md — 分架构描述,A5 改为默认确定性实现 - norm/rms_norm_grad/docs/aclnnRmsNormGrad.md — 分架构描述,A5 改为默认确定性实现 - norm/rms_norm_grad_quant/docs/aclnnRmsNormGradQuant.md — 仅 A5 支持,改为默认确定性实现 - docs/zh/op_api_list.md — 同步修正上述 6 个算子的 A5 列 See merge request: cann/ops-nn!8709 | 20 天前 |
| fix: 修复 norm 类算子示例及文档中 CHECK_RET 宏语法错误 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !8348 merge code_check_0806 into master fix: 修复 norm 类算子示例及文档中 CHECK_RET 宏语法错误 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 修复 norm 目录下 4 个算子的示例代码(.cpp)及文档(.md)中 CHECK_RET 宏调用的语法错误。原代码在宏的第二个参数末尾多了一个分号,形成 return ret;); 的结构,宏展开后会产生语法错误。同时规范了 group_norm_grad 示例的版权声明格式并补充了部分文件缺失的末尾换行符。 ### 改动原因 CHECK_RET 宏的第二个参数是代码块表达式,原代码 LOG_PRINT(...); return ret;); 中 return ret 后多余的分号导致宏展开后出现 ); 语法错误。该问题在 AddLayerNorm、AddLayerNormQuant、BatchNormReduce、GroupNormBackward 四个算子的 docs 和 examples 中均存在。 ### 改动方法 - 将 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("allocate workspace failed. ERROR: %d\n", ret); return ret;); 修正为 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("allocate workspace failed. ERROR: %d\n", ret); return ret); - 涉及算子:AddLayerNorm、AddLayerNormQuant、BatchNormReduce、GroupNormBackward - 更新 test_aclnn_group_norm_grad.cpp 版权声明(年份 2025→2026,格式规范化),添加 Doxygen \file / \brief 注释 - 为 3 个 cpp 文件补充末尾换行符 ## 关联的Issue - #4626 ## 测试 代码审查确认 CHECK_RET 宏修正后语法合法,宏展开无语法问题。 ## 文档更新 同步更新了 4 个算子文档(aclnnAddLayerNorm.md、aclnnAddLayerNormQuant.md、aclnnBatchNormReduce.md、aclnnGroupNormBackward.md)中示例代码的 CHECK_RET 语法。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!8348 | 1 个月前 |
| BatchNormV3/GroupNormGrad/GroupNormV2/LayerNormGrad/LayerNormGradV3/LayerNormV3/LayerNormV4算子支持下一代芯片 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !995 merge nn_ops_fix_2 into master BatchNormV3/GroupNormGrad/GroupNormV2/LayerNormGrad/LayerNormGradV3/LayerNormV3/LayerNormV4算子支持下一代芯片 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 BatchNormV3/GroupNormGrad/GroupNormV2/LayerNormGrad/LayerNormGradV3/LayerNormV3/LayerNormV4算子支持下一代芯片 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!995 | 7 个月前 |
| feat: softmax/group_norm 系列算子添加 FormatAgnostic 格式匹配模式并重构 softmax_grad 编译信息获取接口 Co-authored-by: zhuzixian-lr<zhuzixian1@h-partners.com> # message auto-generated for no-merge-commit merge: !8083 merge softmax_bin into master feat: softmax/group_norm 系列算子添加 FormatAgnostic 格式匹配模式并重构 softmax_grad 编译信息获取接口 Created-by: zhuzixian-lr Commit-by: zhuzixian-lr Merged-by: cann-robot Description: ## 描述 本 PR 为 softmax 和 group_norm 系列算子在 ascend950 平台的 binary JSON 配置中添加 format_match_mode: FormatAgnostic 格式匹配模式,使这些算子能够以格式无关方式接收输入/输出张量。同时重构 softmax_grad 算子的编译信息获取接口,将 reinterpret_cast 强制类型转换替换为类型安全的模板 API。 ### 改动原因 当前 softmax/group_norm 系列算子的 ascend950 binary JSON 配置未设置 format_match_mode,在格式匹配时存在限制。仓库中其他算子(如 relu_grad_v2、gelu_grad、log_sigmoid_grad、hard_swish_grad_v2、swiglu_group 等)已广泛使用 FormatAgnostic 模式,本 PR 将该模式统一扩展至 softmax/group_norm 系列,保持一致性。 ### 改动方法 **1. Binary JSON 配置变更(6 个算子,ascend950 平台)** 为以下算子的所有输入和输出张量添加 "format_match_mode": "FormatAgnostic" 字段: | 算子 | 配置文件 | binary 变体数 | 数据类型 | 张量数 | |------|----------|:---:|------|:---:| | ConfusionSoftmaxGrad | activation/confusion_softmax_grad/op_host/config/ascend950/confusion_softmax_grad_binary.json | 3 | bfloat16 / float16 / float32 | 9 | | LogSoftmaxGrad | activation/log_softmax_grad/op_host/config/ascend950/log_softmax_grad_binary.json | 3 | float16 / bfloat16 / float32 | 9 | | SoftmaxGrad | activation/softmax_grad/op_host/config/ascend950/softmax_grad_binary.json | 3 | float16 / float32 / bfloat16 | 9 | | SoftmaxV2 | activation/softmax_v2/op_host/config/ascend950/softmax_v2_binary.json | 4 | bfloat16 / float16 / float16_to_float32 / float32 | 8 | | GroupNormGrad | norm/group_norm_grad/op_host/config/ascend950/group_norm_grad_binary.json | 5 | fp32 / fp16 / bf16 / fp16_f32 / bf16_f32 | 40 | | GroupNormV2 | norm/group_norm_v2/op_host/config/ascend950/group_norm_v2_binary.json | 5 | fp16 / fp32 / bf16 / bf16_f32 / fp16_f32 | 30 | 共 105 个张量条目添加了 FormatAgnostic 格式匹配模式。 **2. C++ 接口重构** activation/softmax_grad/op_host/arch35/softmax_grad_tiling_base.cpp 中 GetPlatformInfo() 方法: - 将 reinterpret_cast<const SoftmaxGradCompileInfo*>(context_->GetCompileInfo()) 替换为 context->GetCompileInfo<SoftmaxGradCompileInfo>() - 使用类型安全的模板 API 替代不安全的强制类型转换 **3. 其他变更** - 新增 .opencode/opencode.json(opencode 工具配置文件) ## 关联的Issue - #4469 ## 测试 - 验证各算子 binary JSON 配置文件格式正确性 - 验证 FormatAgnostic 模式下算子能够正确匹配不同格式的输入/输出张量 - 验证 softmax_grad 编译信息获取接口重构后功能正常 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8083 | 20 天前 |
| refactor: rename APIs in ops-nn batch3 (10 ops) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8568 merge rename-api-batch3 into master refactor: rename APIs in ops-nn batch3 (10 ops) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 对 ops-nn 仓 10 个算子的 arch35 kernel 进行 AscendC MicroAPI 重命名整改,涉及以下 API 映射: - __local_mem__ → __ubuf__(地址空间限定符) - DataCopy(load 方向) → LoadAlign - DataCopy(store 方向) → StoreAlign - ReduceSum → Reduce<ReduceType::SUM> - DataCopyUnAlign → StoreUnAlign - DataCopyUnAlignPost → StoreUnAlignPost - UnalignReg → UnalignRegForStore / UnalignRegForLoad 涉及算子(10 个): - activation/log_softmax_grad - activation/log_softmax_v2 - loss/kl_div_loss_grad - norm/group_norm_grad - norm/group_norm_v2 - norm/instance_norm - norm/layer_norm_grad - norm/layer_norm_grad_v3 - norm/layer_norm_v3 - norm/layer_norm_v4 共修改 45 个 arch35 kernel 头文件,纯 API 重命名,无逻辑变更。 ## 关联的Issue ## 测试 纯 API 重命名整改,编译验证通过;无新增测试用例。 ## 文档更新 无需更新文档。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:API 重命名重构 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8568 | 24 天前 |
| add_cases Co-authored-by: zhaogrug<zhaohai16@h-partners.com> # message auto-generated for no-merge-commit merge: !7583 merge add_cases into master add_cases Created-by: zhaogrug Commit-by: zhaogrug Merged-by: cann-robot Description: ## 描述 新增仓内新版ttk用例 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue [#4223](https://gitcode.com/cann/ops-nn/issues/4223) <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟测试,本地验证 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:用例添加 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7583 | 1 个月前 |
| BatchNormV3/GroupNormGrad/GroupNormV2/LayerNormGrad/LayerNormGradV3/LayerNormV3/LayerNormV4算子支持下一代芯片 Co-authored-by: cai-chengchao<caichengchao1@h-partners.com> # message auto-generated for no-merge-commit merge: !995 merge nn_ops_fix_2 into master BatchNormV3/GroupNormGrad/GroupNormV2/LayerNormGrad/LayerNormGradV3/LayerNormV3/LayerNormV4算子支持下一代芯片 Created-by: cai-chengchao Commit-by: cai-chengchao Merged-by: cann-robot Description: ## 描述 BatchNormV3/GroupNormGrad/GroupNormV2/LayerNormGrad/LayerNormGradV3/LayerNormV3/LayerNormV4算子支持下一代芯片 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!995 | 7 个月前 |
| modified md files(for readability improvement) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !7592 merge master into master modified md files(for readability improvement) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Optimized the function description and parameter description. Optimized the calculation formula. Modified the description of interface invoking, deleted repeated content, and corrected parameter names. ## 关联的Issue [#4236](https://gitcode.com/cann/ops-nn/issues/4236) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7592 | 1 个月前 |