| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 2 个月前 | |
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 | 2 个月前 | |
修复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 | 2 个月前 | |
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 | 2 个月前 | |
fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8943 merge q_work8 into master fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 CANN 9.0.0 中 ReduceType 枚举移至 AscendC::Reg 命名空间,arch35 算子文件中通过 using namespace AscendC 已无法将 ReduceType 引入当前作用域,导致编译时 ReduceType::SUM/ReduceType::MAX 无法解析。 本次改动将 arch35 目录下 62 个算子头文件中的 ReduceType::SUM(502 处)和 ReduceType::MAX(32 处)显式限定为 AscendC::Reg::ReduceType::SUM 和 AscendC::Reg::ReduceType::MAX,修复编译兼容性问题。 涉及的算子模块:activation、norm、loss、index、quant,均为 arch35 架构专用文件,不影响其他架构。 ## 关联的Issue #4937 ## 测试 在 CANN 9.0.0(ascend950)环境下对 62 个文件涉及的算子进行编译验证,全部编译通过。 ## 文档更新 无文档更新,本次为编译兼容性修复。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8943 | 1 个月前 | |
AddLayerNormGrad算子实现Ascend 950支持 Co-authored-by: zhaosusu<zhaosusu1@h-partners.com> # message auto-generated for no-merge-commit merge: !7925 merge master into master AddLayerNormGrad算子实现Ascend 950支持 Created-by: zhaosusu Commit-by: zhaosusu Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AddLayerNormGrad算子实现Ascend 950支持,进行性能优化。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4845](https://gitcode.com/cann/ops-nn/issues/4845) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本地泛化2000条用例精度通过,性能通过。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7925 | 1 个月前 | |
fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !9003 merge fix-geir-test-log-level-mismatch into master fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 14 个算子 geir 测试文件中日志级别与描述不一致的问题:3 类失败消息被误标记为 INFO,而同文件内其他失败消息均正确标记为 ERROR,构成内部不一致。本次将这 3 类失败消息的日志级别从 INFO 改为 ERROR。 ### 改动原因 geir 测试文件统一使用 printf("%s - LEVEL - [XIR]: message") 格式输出日志。在以下 3 类失败分支中,消息内容明确表示失败,但日志级别却写成 INFO,与同文件内其他失败消息(如 Generate input data failed、Create ir session using build options failed、Session add ir compute graph failed、Output verification FAILED,均标记为 ERROR)不一致,会误导日志排查: - Initialize ge using ge global options failed - Run graph failed - Finalize ir graph session failed ### 改动方法 仅将上述 3 类失败消息的日志级别标签 - INFO - 改为 - ERROR -,不修改任何测试逻辑、消息文本或参数。 ### 涉及文件(每个 3 处,共 42 处,14 文件 +42 -42) - activation/log_softmax_v2 - activation/confusion_softmax_grad - index/broadcast_gradient_args - norm/add_layer_norm_quant - norm/add_rms_norm_dynamic_quant_v2 - norm/batch_norm - norm/group_norm_v2 - norm/instance_norm - norm/layer_norm - norm/layer_norm_v3 - norm/sync_batch_norm_backward_elemt - norm/sync_batch_norm_backward_reduce - norm/sync_batch_norm_gather_stats - norm/sync_bn_training_update ## 关联的Issue - #4973 ## 测试 - 仅日志级别字符串修改,无逻辑变更,不影响测试编译与运行结果。 - 通过 git diff 逐项核对:仅 - INFO - → - ERROR -,消息文本与参数不变。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9003 | 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 | 1 个月前 | |
fix(norm): AddRmsNorm/AddRmsNormCast/InplaceAddRmsNorm arch35/regbase 去除 VL 与 UB block 硬编码 Co-authored-by: liangyuhua<liangyuhua4@huawei.com> # message auto-generated for no-merge-commit merge: !8796 merge fix/vl_ub_block_size_dynamic into master fix(norm): AddRmsNorm/AddRmsNormCast/InplaceAddRmsNorm arch35/regbase 去除 VL 与 UB block 硬编码 Created-by: liangyuhua Commit-by: liangyuhua Merged-by: cann-robot Description: ## 描述 按 VL / UB block 动态获取规范检视 **AddRmsNorm、AddRmsNormCast、InplaceAddRmsNorm**(InplaceAddRmsNorm 独立算子,kernel 与 tiling 复用 AddRmsNorm 实现)三个算子在 **arch35 / regbase(950)路径**上写死的 VL(64/128/256)、UB block(32B 及 8/16/32 block 元素数)、全载/二分累加阈值(16384),改为平台接口派生。 **Host 侧**: Ops::Base::GetVRegSize(context) / Ops::Base::GetUbBlockSize(context) **Kernel 侧**:platform::GetVRegSize() / platform::GetUbBlockSize() | 原字面量 | 改后表达式 | 值(当前平台 950) | |---|---|---| | FULL_LOAD_R_MAX = 16384 | vecLength * vecLength * 2 * 2 | 16384 | | VL / FLOAT_PER_REAPEAT = 64 | GetVRegSize() / sizeof(float)、V_LENGTH | 64 | | ONCE_VECTOR_SIZE = 256(levelbuf 每级容量,host 侧原按 LEVEL_MERGE_PARALLEL * vecLength 推导) | Ops::Base::GetVRegSize(context),与 kernel RmsNorm::ONCE_VECTOR_SIZE(=256 个 fp32) 严格一致 | 256 | | B32_BLOCK_NUM / FLOAT_BLOCK_ALIGN = 8 | GetUbBlockSize() / sizeof(float) | 8 | | B8_BLOCK_NUM = 32 | GetUbBlockSize() / sizeof(int8_t) | 32 | | BLOCK_SIZE / ALIGN_32_FACTOR = 32 | GetUbBlockSize() | 32 | **本次改动数值全等价,无行为变更**(当前平台 VRegSize = 256B、UB block = 32B)。 **变更范围**:严格限定为 arch35 / regbase(950)路径的 5 个文件 (add_rms_norm_tiling_arch35.cpp、arch35/add_rms_norm_regbase.h、 add_rms_norm_cast_tiling.h、add_rms_norm_cast_tiling_arch35.cpp、 arch35/add_rms_norm_cast_regbase_common.h);公共 vector 路径 (910B / 910_93 等)未做改动。 ## 关联的Issue #4849 ## 测试 - host UT(独立编译运行):AddRmsNormTiling 10 + AddRmsNormCastTiling 7 + AddRmsNormCast infershape 3 = **20/20 通过** - Ascend950 真机 ttk ST(build.sh --pkg --soc=ascend950 + vendor 安装 + -b=release,确认加载本 vendor 包,BIN_GOLD PASS): - AddRmsNorm 全量 **78/78 通过** - AddRmsNormCast 全量 **49/49 通过** - kernel binary:ascend950(arch35)AddRmsNorm / AddRmsNormCast 编译通过 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:去除 VL / UB block 平台参数硬编码,行为等价的可维护性重构 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8796 | 1 个月前 | |
fix(norm): AddRmsNorm/AddRmsNormCast/InplaceAddRmsNorm arch35/regbase 去除 VL 与 UB block 硬编码 Co-authored-by: liangyuhua<liangyuhua4@huawei.com> # message auto-generated for no-merge-commit merge: !8796 merge fix/vl_ub_block_size_dynamic into master fix(norm): AddRmsNorm/AddRmsNormCast/InplaceAddRmsNorm arch35/regbase 去除 VL 与 UB block 硬编码 Created-by: liangyuhua Commit-by: liangyuhua Merged-by: cann-robot Description: ## 描述 按 VL / UB block 动态获取规范检视 **AddRmsNorm、AddRmsNormCast、InplaceAddRmsNorm**(InplaceAddRmsNorm 独立算子,kernel 与 tiling 复用 AddRmsNorm 实现)三个算子在 **arch35 / regbase(950)路径**上写死的 VL(64/128/256)、UB block(32B 及 8/16/32 block 元素数)、全载/二分累加阈值(16384),改为平台接口派生。 **Host 侧**: Ops::Base::GetVRegSize(context) / Ops::Base::GetUbBlockSize(context) **Kernel 侧**:platform::GetVRegSize() / platform::GetUbBlockSize() | 原字面量 | 改后表达式 | 值(当前平台 950) | |---|---|---| | FULL_LOAD_R_MAX = 16384 | vecLength * vecLength * 2 * 2 | 16384 | | VL / FLOAT_PER_REAPEAT = 64 | GetVRegSize() / sizeof(float)、V_LENGTH | 64 | | ONCE_VECTOR_SIZE = 256(levelbuf 每级容量,host 侧原按 LEVEL_MERGE_PARALLEL * vecLength 推导) | Ops::Base::GetVRegSize(context),与 kernel RmsNorm::ONCE_VECTOR_SIZE(=256 个 fp32) 严格一致 | 256 | | B32_BLOCK_NUM / FLOAT_BLOCK_ALIGN = 8 | GetUbBlockSize() / sizeof(float) | 8 | | B8_BLOCK_NUM = 32 | GetUbBlockSize() / sizeof(int8_t) | 32 | | BLOCK_SIZE / ALIGN_32_FACTOR = 32 | GetUbBlockSize() | 32 | **本次改动数值全等价,无行为变更**(当前平台 VRegSize = 256B、UB block = 32B)。 **变更范围**:严格限定为 arch35 / regbase(950)路径的 5 个文件 (add_rms_norm_tiling_arch35.cpp、arch35/add_rms_norm_regbase.h、 add_rms_norm_cast_tiling.h、add_rms_norm_cast_tiling_arch35.cpp、 arch35/add_rms_norm_cast_regbase_common.h);公共 vector 路径 (910B / 910_93 等)未做改动。 ## 关联的Issue #4849 ## 测试 - host UT(独立编译运行):AddRmsNormTiling 10 + AddRmsNormCastTiling 7 + AddRmsNormCast infershape 3 = **20/20 通过** - Ascend950 真机 ttk ST(build.sh --pkg --soc=ascend950 + vendor 安装 + -b=release,确认加载本 vendor 包,BIN_GOLD PASS): - AddRmsNorm 全量 **78/78 通过** - AddRmsNormCast 全量 **49/49 通过** - kernel binary:ascend950(arch35)AddRmsNorm / AddRmsNormCast 编译通过 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:去除 VL / UB block 平台参数硬编码,行为等价的可维护性重构 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8796 | 1 个月前 | |
docs: 修正 rmsnorm 系列算子 rstdOut shape 描述 Co-authored-by: liangyuhua<liangyuhua4@huawei.com> # message auto-generated for no-merge-commit merge: !9008 merge fix/rstdout-shape-doc into master docs: 修正 rmsnorm 系列算子 rstdOut shape 描述 Created-by: liangyuhua Commit-by: liangyuhua Merged-by: cann-robot Description: ## 描述 修正 rmsnorm 系列算子 rstdOut 输出的 shape 描述,补充"维度数需与输入保持一致、需要norm的维度均为1"的说明,并增加 shape 关系举例。 原描述仅提及"shape前几维保持一致",未说明维度数需一致及norm维度为1的要求,与 kernel infershape 实际逻辑不符,容易导致用户对 rstdOut shape 理解错误。 **涉及算子**(4 个文件): | 算子 | 输入参数 | gamma 维度约束 | |------|----------|---------------| | add_rms_norm_cast | x1 | 1-8 维 | | inplace_add_rms_norm | x1Ref | 1-8 维 | | add_rms_norm_dynamic_mx_quant | x1 | 1 维 | | rms_norm_dynamic_mx_quant | x | 1 维 | **修正前**(以 add_rms_norm_cast 为例): > shape与入参x1的shape前几维保持一致,前几维指x1的维度减去gamma的维度,表示不需要norm的维度。 **修正后**: > 维度数与入参x1保持一致,其中不需要norm的维度(x1的维度减去gamma的维度后的前几维)与x1对应维度保持一致,需要norm的维度(与gamma维度数相同的后几维)均为1。rstdOut shape与x1 shape、gamma shape关系举例:若x1 shape为(2,3,4,8),gamma shape为(8),则rstdOut shape为(2,3,4,1);若x1 shape为(2,3,4,8),gamma shape为(4,8),则rstdOut shape为(2,3,1,1)。 与 infershape 代码逻辑完全一致: cpp rstdShape->SetDimNum(xDimNum); for (size_t i = 0; i < xDimNum; i++) { if (i < xDimNum - gammaDimNum) { rstdShape->SetDim(i, x1Shape->GetDim(i)); // 不需要norm的维度 } else { rstdShape->SetDim(i, 1); // 需要norm的维度均为1 } } ## 关联的Issue #4974 ## 测试 本次变更仅涉及文档描述,无代码改动,无需测试。 ## 文档更新 - norm/add_rms_norm_cast/docs/aclnnAddRmsNormCast.md - norm/inplace_add_rms_norm/docs/aclnnInplaceAddRmsNorm.md - norm/add_rms_norm_dynamic_mx_quant/docs/aclnnAddRmsNormDynamicMxQuant.md - norm/rms_norm_dynamic_mx_quant/docs/aclnnRmsNormDynamicMxQuant.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9008 | 1 个月前 | |
fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8943 merge q_work8 into master fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 CANN 9.0.0 中 ReduceType 枚举移至 AscendC::Reg 命名空间,arch35 算子文件中通过 using namespace AscendC 已无法将 ReduceType 引入当前作用域,导致编译时 ReduceType::SUM/ReduceType::MAX 无法解析。 本次改动将 arch35 目录下 62 个算子头文件中的 ReduceType::SUM(502 处)和 ReduceType::MAX(32 处)显式限定为 AscendC::Reg::ReduceType::SUM 和 AscendC::Reg::ReduceType::MAX,修复编译兼容性问题。 涉及的算子模块:activation、norm、loss、index、quant,均为 arch35 架构专用文件,不影响其他架构。 ## 关联的Issue #4937 ## 测试 在 CANN 9.0.0(ascend950)环境下对 62 个文件涉及的算子进行编译验证,全部编译通过。 ## 文档更新 无文档更新,本次为编译兼容性修复。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8943 | 1 个月前 | |
fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !9003 merge fix-geir-test-log-level-mismatch into master fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 14 个算子 geir 测试文件中日志级别与描述不一致的问题:3 类失败消息被误标记为 INFO,而同文件内其他失败消息均正确标记为 ERROR,构成内部不一致。本次将这 3 类失败消息的日志级别从 INFO 改为 ERROR。 ### 改动原因 geir 测试文件统一使用 printf("%s - LEVEL - [XIR]: message") 格式输出日志。在以下 3 类失败分支中,消息内容明确表示失败,但日志级别却写成 INFO,与同文件内其他失败消息(如 Generate input data failed、Create ir session using build options failed、Session add ir compute graph failed、Output verification FAILED,均标记为 ERROR)不一致,会误导日志排查: - Initialize ge using ge global options failed - Run graph failed - Finalize ir graph session failed ### 改动方法 仅将上述 3 类失败消息的日志级别标签 - INFO - 改为 - ERROR -,不修改任何测试逻辑、消息文本或参数。 ### 涉及文件(每个 3 处,共 42 处,14 文件 +42 -42) - activation/log_softmax_v2 - activation/confusion_softmax_grad - index/broadcast_gradient_args - norm/add_layer_norm_quant - norm/add_rms_norm_dynamic_quant_v2 - norm/batch_norm - norm/group_norm_v2 - norm/instance_norm - norm/layer_norm - norm/layer_norm_v3 - norm/sync_batch_norm_backward_elemt - norm/sync_batch_norm_backward_reduce - norm/sync_batch_norm_gather_stats - norm/sync_bn_training_update ## 关联的Issue - #4973 ## 测试 - 仅日志级别字符串修改,无逻辑变更,不影响测试编译与运行结果。 - 通过 git diff 逐项核对:仅 - INFO - → - ERROR -,消息文本与参数不变。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9003 | 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 | 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 | 1 个月前 | |
算子插件迁移 | 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 | 1 个月前 | |
fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8943 merge q_work8 into master fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 CANN 9.0.0 中 ReduceType 枚举移至 AscendC::Reg 命名空间,arch35 算子文件中通过 using namespace AscendC 已无法将 ReduceType 引入当前作用域,导致编译时 ReduceType::SUM/ReduceType::MAX 无法解析。 本次改动将 arch35 目录下 62 个算子头文件中的 ReduceType::SUM(502 处)和 ReduceType::MAX(32 处)显式限定为 AscendC::Reg::ReduceType::SUM 和 AscendC::Reg::ReduceType::MAX,修复编译兼容性问题。 涉及的算子模块:activation、norm、loss、index、quant,均为 arch35 架构专用文件,不影响其他架构。 ## 关联的Issue #4937 ## 测试 在 CANN 9.0.0(ascend950)环境下对 62 个文件涉及的算子进行编译验证,全部编译通过。 ## 文档更新 无文档更新,本次为编译兼容性修复。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8943 | 1 个月前 | |
fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8943 merge q_work8 into master fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 CANN 9.0.0 中 ReduceType 枚举移至 AscendC::Reg 命名空间,arch35 算子文件中通过 using namespace AscendC 已无法将 ReduceType 引入当前作用域,导致编译时 ReduceType::SUM/ReduceType::MAX 无法解析。 本次改动将 arch35 目录下 62 个算子头文件中的 ReduceType::SUM(502 处)和 ReduceType::MAX(32 处)显式限定为 AscendC::Reg::ReduceType::SUM 和 AscendC::Reg::ReduceType::MAX,修复编译兼容性问题。 涉及的算子模块:activation、norm、loss、index、quant,均为 arch35 架构专用文件,不影响其他架构。 ## 关联的Issue #4937 ## 测试 在 CANN 9.0.0(ascend950)环境下对 62 个文件涉及的算子进行编译验证,全部编译通过。 ## 文档更新 无文档更新,本次为编译兼容性修复。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8943 | 1 个月前 | |
fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8943 merge q_work8 into master fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 CANN 9.0.0 中 ReduceType 枚举移至 AscendC::Reg 命名空间,arch35 算子文件中通过 using namespace AscendC 已无法将 ReduceType 引入当前作用域,导致编译时 ReduceType::SUM/ReduceType::MAX 无法解析。 本次改动将 arch35 目录下 62 个算子头文件中的 ReduceType::SUM(502 处)和 ReduceType::MAX(32 处)显式限定为 AscendC::Reg::ReduceType::SUM 和 AscendC::Reg::ReduceType::MAX,修复编译兼容性问题。 涉及的算子模块:activation、norm、loss、index、quant,均为 arch35 架构专用文件,不影响其他架构。 ## 关联的Issue #4937 ## 测试 在 CANN 9.0.0(ascend950)环境下对 62 个文件涉及的算子进行编译验证,全部编译通过。 ## 文档更新 无文档更新,本次为编译兼容性修复。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8943 | 1 个月前 | |
feat(bn3d_training_reduce): 新增 Ascend 950 NCDHW/NDHWC 图模式实现 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !8536 merge BN3DTrainingReduce into master feat(bn3d_training_reduce): 新增 Ascend 950 NCDHW/NDHWC 图模式实现 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 新增 BN3DTrainingReduce 算子(三维 Batch Normalization 训练前向的 reduce 阶段),面向 Ascend 950PR / 950DT(arch35 RegBase)。算子沿 batch 与全部空间轴规约,逐通道输出 FLOAT32 的 sum = Σx 与 square_sum = Σx²,与 BN3DTrainingUpdate 配对,由 GE 图调度;不提供 aclnn 接口。 本次将“公开原始格式”和“内部运行时排布”明确拆分: | 层级 | Ascend 950 格式 | 说明 | | --- | --- | --- | | 公开 origin format | NCDHW、NDHWC | 当前对外支持面;README 与 GEIR 样例只展示这两种 | | 内部 storage / Kernel | NCDHW、NCHW、NDC1HWC0 | 保留现有 InferShape、Tiling、Kernel 与 binary 能力,不扩大公开输入格式集合 | NDC1HWC0 公开 origin 当前关闭:启用 NeedCheckSupportFlag(true) 并注册 CheckSupport,在 Kernel 选路前返回不支持。NDC1HWC0 的功能代码和 3 dtype × 3 storage format 的 9 组注册保持不变,后续策略放开时可恢复入口、文档和图模式正例。 实现覆盖动态 shape、动态 rank、空 Tensor 与 INT64 shape;FP16 / BF16 输入提升到 FP32 计算与累加。channel-first storage 使用 TilingKey 100000,NDC1HWC0 内部路线使用 TilingKey 200000;两条路线共用 R1-A-R0 归一化和数据搬运框架。 ## 关联的Issue 关联 Issue #4933 —— [[Requirement|需求建议]: BN3DTrainingReduce 支持 Ascend950(arch35),支持面对齐 canndev](https://gitcode.com/cann/ops-nn/issues/4933) ## 测试 本次格式收口后的新鲜验证: | 验证项 | 结果 | | --- | --- | | op_host UT | **55 / 55 PASS**:InferShape / CheckSupport 19 条,Tiling 36 条 | | CANN 9.2 单算子编译、出包、部署 | **PASS**;ops_group=ops_nn、vendor 通道、binary 与 libophost_nn.so 一致性检查通过 | | GEIR 公开格式 | **6 / 6 PASS**:NCDHW、NDHWC × FP16、FP32、BF16,输出均与 CPU 参考一致 | | NDC1HWC0 公开 origin 负例 | **1 / 1 按预期拒绝**;旧客户端在 RunGraph 阶段返回原始格式不支持,未执行 BN Kernel;算子 CheckSupport 的 NDC1HWC0 拒绝另有 host UT 覆盖 | | NDC1HWC0 内部 binary 抽测 | **1 / 1 PASS**;BINARY_MATCH,双输出精度 PASS,内存检查 OK | | pre-push 快速门禁 | **PASS**:JIT build、ophost UT、opgraph UT、opkernel UT、Ascend 950 pkg | 受影响测例盘点: | 测例集合 | NDC1HWC0 数量 | 收口后的处理 | | --- | ---: | --- | | 原 InferShape UT | 3 / 16 | 保留,作为内部推导能力回归;新增 3 条 CheckSupport 公共策略用例 | | Tiling UT | 11 / 36 | 保留,继续看护内部 Tiling 路线 | | TTK kernel case store | 160 / 500 | 保留,属于直调 Kernel / storage 回归 | | 泛化交付记录 | 313 / 1000 | 保留,属于内部 Kernel 回归 | | 性能交付记录 | 62 / 200 | 保留,属于内部 Kernel 性能数据 | | 三方精度交付记录 | 62 / 200 | 保留,属于内部 Kernel 精度数据 | | 历史 GEIR 正例 | 31 / 100 | 不再作为当前公开正例;仓内样例已由 NDC1HWC0 正例改为 NDHWC 正例 | 既有交付基线中,Kernel 泛化与 CPU FP64 golden 的绝对精度为 **1000 / 1000 PASS**,200 例性能测试通过。A100 三方相对精度两轮为 **93.5% / 94.5%**,均值 **94%**;残余差距已定位为 FP32 归约顺序导致的舍入落点差异。本次只增加公开入口策略,不修改这些内部计算路径。 ## 文档更新 - 更新 norm/bn3d_training_reduce/README.md:Ascend 950 公开 origin format 仅列 NCDHW、NDHWC,明确 NDC1HWC0 当前不支持;不再把内部 storage 能力写成公开支持面。 - 更新 GEIR 样例:移除 NDC1HWC0 公开正例,新增 NDHWC 正例及 CPU 参考计算。 - docs/zh/op_list.md 新增 bn3d_training_reduce 条目。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8536 | 1 个月前 | |
BNInferGrad算子问题修复 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !8302 merge bn_infer_grad into master BNInferGrad算子问题修复 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 本 PR 修复 BNInferGrad 在转测准入检查中发现的 Golden、数据格式、Shape/Rank 异常拦截及 UT 构建问题,并按 runtime proto.h 的数据格式语义完善 Ascend950 实现。 主要修改: - 对齐格式契约:原型逻辑格式支持 NCHW、NHWC、NC1HWC0;Ascend950 Vector 分支仅支持属于 ND 类格式的 NCHW、NHWC,并显式拒绝 NC1HWC0。 - 按数据格式识别 C 轴:NCHW 取第 2 维,NHWC 取最后一维;校验 scale、batch_variance 均为一维 FP32 Tensor,且长度等于 C 轴大小。 - 完善 Tiling 输入/输出校验:拦截不支持的 dtype/format、输入间格式不一致、输出 shape/dtype/format 与 grads 不一致,以及 grads rank 不在 2~5 范围内等异常场景。 - 修复空 Tensor Golden:空输入直接返回同 shape、同 dtype 的空输出,避免调用 PyTorch BatchNorm backward 时出现异常。 - 更新 NCHW/NHWC GEIR 示例、Tiling UT、README,并修复 op_host UT CMake 对 arch35 用例的收集问题。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4595 ## 测试 - bash build.sh -u --cov --ophost -f pr_filelist.txt -j16:通过 - Ascend950 Tiling UT:29/29 通过 - InferShape UT:3/3 通过 - 行覆盖率:87.5%(537/614) - 函数覆盖率:92.9%(144/155) - 静态 GEIR:NCHW FP16、NHWC BF16 场景通过 - 动态 GEIR:动态 Shape、动态 Rank 场景通过 - git diff --check:通过 - PR 当前检查状态:api-check-pass、ci-pipeline-passed ## 文档更新 - 更新 norm/bn_infer_grad/README.md,补充原型格式、Ascend950 Vector 格式限制、C 轴规则及输出约束。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8302 | 2 个月前 | |
BatchNormReduce算子在ascend 950 NPU上支持ascendc实现 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !8543 merge bn_training_reduce into master BatchNormReduce算子在ascend 950 NPU上支持ascendc实现 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 本 PR 为 BNTrainingReduce 算子在 Ascend 950PR/Ascend 950DT(arch35)新增 AscendC 实现。算子对四维 NCHW 输入沿 N、H、W 轴归约,按通道输出元素和 sum 与平方和 square_sum。 主要改动: - 新增 BNTrainingReduce 算子原型、OpDef 注册及图级 InferShape/InferDataType;输入支持 FLOAT16、BFLOAT16、FLOAT + NCHW,两个输出固定为 FLOAT + ND,Shape 为 [C]。 - 新增 arch35 Host Tiling,实现基于 Shape、DType、UB 容量和核数的多核切分,覆盖 normal、group、tail 和 empty 等执行分支。 - 新增 AscendC Kernel,实现 sum_c = Σ(n,h,w) x[n,c,h,w] 与 square_sum_c = Σ(n,h,w) x[n,c,h,w]^2;FLOAT16/BFLOAT16 输入按 FLOAT 精度执行平方与累加,并处理空 Tensor。 - 调整 ACLNN 文件目录与构建配置,新增 Ascend 950 ACLNN 两段式调用示例。 - 新增 GEIR 静态/动态 Shape、未知 Rank、数据类型/格式/非法输入及特殊值场景的验证代码。 - 更新算子 README、aclnnBatchNormReduce 产品支持说明和中英文算子清单。 本次变更共涉及 27 个文件,新增 6373 行、删除 33 行。 ## 关联的Issue 关联 Issue #4715:https://gitcode.com/cann/ops-nn/issues/4715 ## 测试 已补充以下验证资产: - ACLNN:新增 aclnnBatchNormReduceGetWorkspaceSize + aclnnBatchNormReduce 两段式调用示例。 - GEIR:新增静态/动态 Shape 与未知 Rank 执行框架,覆盖 FLOAT16、BFLOAT16、FLOAT、NCHW 输入、FLOAT/ND 输出、空 Tensor、NaN/Inf 及非法 Rank/Format/DType 等场景。 - Host/API UT:同步修正 ACLNN UT 的 include 路径以适配目录调整。 当前 PR 描述未附可独立核对的全量执行报告;最终结果以仓库 CI、复测记录及未解决检视意见闭环为准。 ## 文档更新 - 更新 norm/bn_training_reduce/README.md,补充功能、公式、参数、约束和调用说明。 - 更新 norm/bn_training_reduce/docs/aclnnBatchNormReduce.md,声明 Ascend 950PR/Ascend 950DT 支持。 - 更新 docs/zh/op_api_list.md、docs/zh/op_list.md 及对应英文算子清单。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8543 | 1 个月前 | |
[bugfix] 修复bn_training_update_v2算子资料格式问题 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !8766 merge master into master [bugfix] 修复bn_training_update_v2算子资料格式问题 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 修复bn_training_update_v2算子资料格式问题,将html中不兼容md格式的 x调整为<code>x</code> <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 仅资料格式修改,不涉及测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了ops-nn/norm/bn_training_update_v2/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8766 | 1 个月前 | |
feat: A5新增BNTrainingUpdateV3算子 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !8778 merge BNTrainingUpdateV3 into master feat: A5新增BNTrainingUpdateV3算子 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 本 PR 新增 BNTrainingUpdateV3 算子,实现批归一化训练前向的 update 阶段(Batch Normalization Training Update V3)。给定 BNTrainingReduce 产出的逐通道 sum/square_sum,结合 scale 与 offset 对输入 x 做归一化仿射变换,输出 y 及本 batch 统计量 batch_mean/batch_variance(无偏)、reserve_1(save_mean)、reserve_2(save_variance,有偏),适用于不含 moving average 更新的场景,与 BNTrainingReduce 配套使用。 ### 改动原因 补充 A5平台上 BN 训练 update 阶段的算子能力,覆盖 fp16/fp32/bf16 输入与动态 shape/rank 场景。 ### 改动方法 - op_graph: bn_training_update_v3_proto.h 通过 REG_OP 注册算子原型(5 输入 x/sum/square_sum/scale/offset、必选属性 epsilon、5 输出 y/batch_mean/batch_variance/reserve_1/reserve_2),与 canndev built-in 定义一致。 - op_host: - bn_training_update_v3_def.cpp 以 OpDef 注册 ascend950 vendor:x/y 支持 FLOAT16/FLOAT32/BF16(ND),sum/square_sum/scale/offset 及四路统计量输出恒为 FLOAT32;开启 DynamicCompileStatic、DynamicRank、DynamicShape 支持,PrecisionReduce=true。 - bn_training_update_v3_infershape.cpp 实现 gert infershape 2.0:y shape/dtype 同 x,四路统计量输出同 scale;支持 unknown rank 早退。 - arch35/bn_training_update_v3_tiling_arch35.* 实现单条 ND 计算路径(tilingKey=0)的 tiling:plane(N*C)按 unitCores 均分(former/latter),plane 不足时 inner 维再切 innerCores 份;numRecip 与 batchVarScaler 以 fp64 计算后舍入 fp32(对齐 A2 TBE 语义);无 workspace。 - op_kernel:arch35/bn_training_update_v3.{h,cpp} 实现 per-channel 仿射系数(multiplier/addend)广播计算 y,fp16/bf16 输入升 fp32 计算后单次舍入写回。 - 测试:UT tests/ut/op_host/arch35/test_bn_training_update_v3_tiling.cpp 覆盖 tiling;ST tests/st/arch35/ttk_kernel_bn_training_update_v3.csv;tests/assets/golden.py 提供 golden;examples/arch35/test_geir_bn_training_update_v3.cpp 提供图模式调用样例(含两组 shape/epsilon 用例)。 ## 关联的Issue - #4841 ## 测试 - UT:op_host tiling 单测(test_bn_training_update_v3_tiling.cpp)。 - ST:kernel 端到端用例(ttk_kernel_bn_training_update_v3.csv),golden 由 tests/assets/golden.py 生成。 - 图模式样例:examples/arch35/test_geir_bn_training_update_v3.cpp 含两组 shape/epsilon 用例。 ## 文档更新 - 新增 norm/bn_training_update_v3/README.md,含产品支持情况、功能说明、计算公式、参数说明、约束说明与调用说明。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8778 | 1 个月前 | |
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 | 3 个月前 | |
fix(arch35): GroupNormSiluQuant/MultilabelMarginLoss/L2NormalizeGrad算子功能修复 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9017 merge fix/issue-batch-0820 into master fix(arch35): GroupNormSiluQuant/MultilabelMarginLoss/L2NormalizeGrad算子功能修复 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复测试问题单 #21 / #31 / #32 暴露的三个算子的内核与 tiling 缺陷,并整改 0820 批次核对出的资料与实现不一致项。 ### 一、GroupNormSiluQuant —— UB 记账越界(issue #21) 现象:geir 动静态双腿 7 例全崩(MTE2 写越界 82 / VEC 访存越界 341 / scalar 越界 263),其中 3 例入参完全合法。四处缺陷: 1. SetPartialFallback 的 ubSize - meanAndRstd - gamma - beta - quantScale **无下溢保护**。实测 C=5408396 时 ubRemain 下溢成 2^64-21380096,processSize 被算成 2^61 级。 2. 同函数用 isLargeChannel && hasOptional 决定走 1120 还是 1100,而 quantScale 是否整段常驻**只取决于 C**:大 C 且无 gamma/beta 时被错选进 1100。判据改为「整段常驻装不装得下」。 3. MaybeSetSplitReduce 覆盖成 1140 时不做 UB 预算校验,而 1140 内核按「本核通道数」常驻 gamma/beta(每通道 12B,且无 gamma/beta 时也照开)。新增 SplitReduceFitsUb(与内核 InitUbBuffers 逐项对应),内核侧改为按 hasGamma/hasBeta 条件分配。 4. host 的 couldFold 漏了 kernel isFold = hwNum <= NDDMA_SIZE || (!hasGamma && !hasBeta) 的后半个条件,导致「无 gamma/beta + 大 hwNum」档 kernel 按 fold 布局写 451KB 而 host 只预留 shapeC 个 fp32。 另加防御:generalized 环两处减法加下溢保护;两处 DownAlign 为 0 时直接返回;tiling 出口统一校验——凡靠 processSize 驱动搬运的 key 解不出正值一律 GRAPH_FAILED,不把 0/下溢值下发给内核。 ### 二、MultilabelMarginLoss —— 支持面窄于 A2(issue #32) 原实现七块 buffer 全部随 C 线性增长且不参与分块,UB 253952B 直接换算出 C≈8000 上限,超过即 tiling 主动 GRAPH_FAILED(实测 C<=2842 全过、C>=195万 全败),而 A2 由 TBE DSL 承担切分对 C 无上限。 - tiling 新增 cFactor:整行装得下时 == C(走原全行路径,行为不变),装不下时解出分块长度(解时先给行方向分块 buffer 留 TILE_MIN 份,否则 ubFactor 会解出 0)。 - kernel 新增 C 分块路径:逐段在 UB 内建掩码并产出 is_target,标签分批缓存(每批至多 cFactor 个,连 x[k] 一并取回),每批对全部 x 段各做一次向量累加。复杂度与全行路径同为 O(P*C)。 - 三处同步缺陷(均由「同一用例跑两遍结果不同」暴露):DeQue 只给 MTE2→V,标量读 target 段需自补 MTE2→S;EnQue 只给 V→MTE3,标量写的缓冲搬出前需自补 S→MTE3;类内固定 EVENT_ID0 的 PipeBarrier 在本路径会与队列/LocalReduceSum 的同 ID 事件互踩,改用独立事件 ID。 ### 三、L2NormalizeGrad —— SPLIT_D 累加槽位写穿(issue #31 的超大 D 档) kernel 的 accum 缓冲固定 SPLIT_D_MAX_CHUNKS(=256) 槽,而 FormerProcess 按 numChunks_ 直接 Duplicate/写槽。1 维 D=1.51e8 需约 3.7 万槽,当场写穿 → errcode 341,host 侧无守卫。改为分组累加(组内向量规约 + 组间标量累加),D 不再有上限。 ### 四、GroupNormSiluQuant —— 空 Tensor 的 meanOut 语义两条通路不一致 资料两处(README.md:73、docs/aclnnGroupNormSiluQuant.md:112)与手写 aclnn 都规定「空 Tensor 时 meanOut 填 0、rstdOut 填 NAN」:op_host/op_api/aclnn_group_norm_silu_quant.cpp:251 的 IsEmpty() 分支显式 FillScalar(meanOut, 0) + FillScalar(rstdOut, NAN) 后直接返回,不下发内核。 而 arch35 内核的 empty 分支调 ProcessMeanAndRstd 时,该函数把填充值写死成 NAN,mean/rstd 都填 NAN——走 GE 图通路(aclnn 不参与)时 meanOut 变成 NaN,违反算子自己的契约。修法:把填充值提成入参,mean 传 0、rstd 传 NAN。 (对照:同族 GroupNormSilu 的 aclnn 对 regbase 显式跳过 FillScalar、把空张量交给内核,两条通路自洽;本算子的 aclnn 是无条件填充,所以只有本算子存在通路间不一致。) ### 五、GroupNormSiluQuant golden 补两档 + 判据显式声明 新配额用例集暴露:可选输入缺省(gamma/beta 传 None)与空张量在 golden 里判不了(15 例 GOLDEN_FAILURE),而「可选输入不给」正是 issue #21 中 L1_014 的画像——该档此前从设计上就没被验证过。按内核语义补缺省(1.0/0.0),空张量短路按上述契约取 mean=0 / rstd=NaN。 并把每个输出的判据显式声明到 Spec.tolerance,不再依赖 CLI 传什么: - int8 输出声明 quant —— 否则 TTK 把 int8 硬路由到 binary_equal,量化舍入的 ±1 LSB 被大面积误判(26 例「失败」实测最大 |diff| 全为 1)。 - mean/rstd 三种浮点 dtype 声明 CANN 开源标准 stat_rel_err(mere < th 且 mare < 10*th)。此前未声明,落到 TTK 默认的 isclose(atol=1e-8),该地板低于 bf16/fp32 在常见量级上的分辨率。实测 case00603_rg(2,5120,7) bf16:2560 个 mean 元素里 10 个不相等,**每个恰好差 1 ULP**(--dump 取原始数组算得 ULP 倍数 max=1.0000,超 1 ULP 的 0 个)——内核 fp32 累加后舍入到 bf16 与 torch 求和次序不同,边界值差一格,任何实现都做不到更好。 ### 六、0820 批次资料与实现一致性(issue #36~#49) 判据:aclnn 是手写还是自动生成(前者看 l0op::Contiguous/ViewCopy 的实际调用,后者看 OpDef 的 AutoContiguous,依据 cmake/func.cmake:502 有无 op_api/*.cpp 分流);再看参数是输入、ref(输入/输出复用)还是纯输出——自动生成路径下只有输入与 ref 有非连续支持,纯输出没有这一说。 - 6 个 foreach inplace 的第一参数(ref,输入侧已声明 AutoContiguous):资料 × → √(#38/#39/#44/#45/#46/#47) - ForeachAddcdivList / ForeachAddcmulList:def + arch35 内核 + config/ascend950 三层齐备,资料「A5 不支持」→ 支持(#40/#42) - DeepNorm / DeepNormGrad 的 7 个纯输出:资料 √ → ×(#36/#37) - FusedCrossEntropyLossWithMaxSum:inputOptional/weightOptional 的「非连续Tensor」列 √ → -(不涉及)(#48)。这两个参数当前只支持空指针(资料使用说明已写明),且实现中完全未被使用:aclnn 的 CheckParams 将其标为 [[maybe_unused]],kernel 的 GM_ADDR gmTensor[6] 张量列表也不含它们。既然不可能传入张量,「支持非连续」对其为空谈,正确整改是把该列标为不涉及,而不是给一个永不使用的入参补 l0op::Contiguous。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4994 ## 测试 全部为 Ascend950PR 真机实测(TTK geir 通路 + op_host UT)。 **issue 原始用例** | 项 | 结果 | |---|---| | #21 原始 7 例 | **7/7 PASS**(修复前 7/7 崩) | | #31 超大 D(1.51 亿元素)2 例 | 由 errcode 341 转 **PASS** | | #32 C 轴切分专项 57 例(旧全行路径 33 + 新 C 分块路径 24) | **57/57 PASS** | **回归与泛化** | 算子 | 交付回归集 | 配额集(七条硬约束派生) | 改动路径专项 | |---|---|---|---| | MultilabelMarginLoss | **1098/1098** | **113/113** | 57/57 | | L2NormalizeGrad | **1018/1018** | 79/81 | fp32 精度 13/13 | | GroupNormSiluQuant | 前 158 例 **158/158** | **211/211** | 空张量 **44/44**、改动路径集 **779/779** | 说明: - L2G 配额集余 2 例是 TTK 建图侧问题(rank==1 且属性 dim 缺省时,生成的图把输入 dtype 写错一档),算子对 DT_DOUBLE 正确拒收,该用例未测到算子;同一档由 fp16 那例以正确的 EZ0026 拒收覆盖。 - GNSQ 改动路径集按「本次改动真正生效的条件」筛选(大 C 路由/下溢保护区 + 空张量),未改动路径不重复验证。过程中 6 例 PROFILE_CRASH 退出码为 -9(宿主 OOM,容器 32G 上限),降并发单进程复跑 **6/6 PASS**。 - L2G fp32 13 例按算子自己声明的 cross_check L1 三方比对复判全 PASS:mare 比值 1.0~1.11(阈值 5.0)、mere 0.0036(阈值 1.5),NPU 误差与 GPU 竞品同量级。 ## 文档更新 10 个资料文件的一致性订正(详见「六、0820 批次资料与实现一致性」): - foreach/*/docs/aclnnForeach{ACos,AddList,MulList,MulScalar,SubList,SubScalar}Inplace.md - foreach/*/docs/aclnnForeach{Addcdiv,Addcmul}List.md - norm/deep_norm/docs/aclnnDeepNorm.md、norm/deep_norm_grad/docs/aclnnDeepNormGrad.md - loss/fused_cross_entropy_loss_with_max_sum/docs/aclnnFusedCrossEntropyLossWithMaxSum.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9017 | 1 个月前 | |
fix(arch35): GroupNormSiluQuant/MultilabelMarginLoss/L2NormalizeGrad算子功能修复 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9017 merge fix/issue-batch-0820 into master fix(arch35): GroupNormSiluQuant/MultilabelMarginLoss/L2NormalizeGrad算子功能修复 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复测试问题单 #21 / #31 / #32 暴露的三个算子的内核与 tiling 缺陷,并整改 0820 批次核对出的资料与实现不一致项。 ### 一、GroupNormSiluQuant —— UB 记账越界(issue #21) 现象:geir 动静态双腿 7 例全崩(MTE2 写越界 82 / VEC 访存越界 341 / scalar 越界 263),其中 3 例入参完全合法。四处缺陷: 1. SetPartialFallback 的 ubSize - meanAndRstd - gamma - beta - quantScale **无下溢保护**。实测 C=5408396 时 ubRemain 下溢成 2^64-21380096,processSize 被算成 2^61 级。 2. 同函数用 isLargeChannel && hasOptional 决定走 1120 还是 1100,而 quantScale 是否整段常驻**只取决于 C**:大 C 且无 gamma/beta 时被错选进 1100。判据改为「整段常驻装不装得下」。 3. MaybeSetSplitReduce 覆盖成 1140 时不做 UB 预算校验,而 1140 内核按「本核通道数」常驻 gamma/beta(每通道 12B,且无 gamma/beta 时也照开)。新增 SplitReduceFitsUb(与内核 InitUbBuffers 逐项对应),内核侧改为按 hasGamma/hasBeta 条件分配。 4. host 的 couldFold 漏了 kernel isFold = hwNum <= NDDMA_SIZE || (!hasGamma && !hasBeta) 的后半个条件,导致「无 gamma/beta + 大 hwNum」档 kernel 按 fold 布局写 451KB 而 host 只预留 shapeC 个 fp32。 另加防御:generalized 环两处减法加下溢保护;两处 DownAlign 为 0 时直接返回;tiling 出口统一校验——凡靠 processSize 驱动搬运的 key 解不出正值一律 GRAPH_FAILED,不把 0/下溢值下发给内核。 ### 二、MultilabelMarginLoss —— 支持面窄于 A2(issue #32) 原实现七块 buffer 全部随 C 线性增长且不参与分块,UB 253952B 直接换算出 C≈8000 上限,超过即 tiling 主动 GRAPH_FAILED(实测 C<=2842 全过、C>=195万 全败),而 A2 由 TBE DSL 承担切分对 C 无上限。 - tiling 新增 cFactor:整行装得下时 == C(走原全行路径,行为不变),装不下时解出分块长度(解时先给行方向分块 buffer 留 TILE_MIN 份,否则 ubFactor 会解出 0)。 - kernel 新增 C 分块路径:逐段在 UB 内建掩码并产出 is_target,标签分批缓存(每批至多 cFactor 个,连 x[k] 一并取回),每批对全部 x 段各做一次向量累加。复杂度与全行路径同为 O(P*C)。 - 三处同步缺陷(均由「同一用例跑两遍结果不同」暴露):DeQue 只给 MTE2→V,标量读 target 段需自补 MTE2→S;EnQue 只给 V→MTE3,标量写的缓冲搬出前需自补 S→MTE3;类内固定 EVENT_ID0 的 PipeBarrier 在本路径会与队列/LocalReduceSum 的同 ID 事件互踩,改用独立事件 ID。 ### 三、L2NormalizeGrad —— SPLIT_D 累加槽位写穿(issue #31 的超大 D 档) kernel 的 accum 缓冲固定 SPLIT_D_MAX_CHUNKS(=256) 槽,而 FormerProcess 按 numChunks_ 直接 Duplicate/写槽。1 维 D=1.51e8 需约 3.7 万槽,当场写穿 → errcode 341,host 侧无守卫。改为分组累加(组内向量规约 + 组间标量累加),D 不再有上限。 ### 四、GroupNormSiluQuant —— 空 Tensor 的 meanOut 语义两条通路不一致 资料两处(README.md:73、docs/aclnnGroupNormSiluQuant.md:112)与手写 aclnn 都规定「空 Tensor 时 meanOut 填 0、rstdOut 填 NAN」:op_host/op_api/aclnn_group_norm_silu_quant.cpp:251 的 IsEmpty() 分支显式 FillScalar(meanOut, 0) + FillScalar(rstdOut, NAN) 后直接返回,不下发内核。 而 arch35 内核的 empty 分支调 ProcessMeanAndRstd 时,该函数把填充值写死成 NAN,mean/rstd 都填 NAN——走 GE 图通路(aclnn 不参与)时 meanOut 变成 NaN,违反算子自己的契约。修法:把填充值提成入参,mean 传 0、rstd 传 NAN。 (对照:同族 GroupNormSilu 的 aclnn 对 regbase 显式跳过 FillScalar、把空张量交给内核,两条通路自洽;本算子的 aclnn 是无条件填充,所以只有本算子存在通路间不一致。) ### 五、GroupNormSiluQuant golden 补两档 + 判据显式声明 新配额用例集暴露:可选输入缺省(gamma/beta 传 None)与空张量在 golden 里判不了(15 例 GOLDEN_FAILURE),而「可选输入不给」正是 issue #21 中 L1_014 的画像——该档此前从设计上就没被验证过。按内核语义补缺省(1.0/0.0),空张量短路按上述契约取 mean=0 / rstd=NaN。 并把每个输出的判据显式声明到 Spec.tolerance,不再依赖 CLI 传什么: - int8 输出声明 quant —— 否则 TTK 把 int8 硬路由到 binary_equal,量化舍入的 ±1 LSB 被大面积误判(26 例「失败」实测最大 |diff| 全为 1)。 - mean/rstd 三种浮点 dtype 声明 CANN 开源标准 stat_rel_err(mere < th 且 mare < 10*th)。此前未声明,落到 TTK 默认的 isclose(atol=1e-8),该地板低于 bf16/fp32 在常见量级上的分辨率。实测 case00603_rg(2,5120,7) bf16:2560 个 mean 元素里 10 个不相等,**每个恰好差 1 ULP**(--dump 取原始数组算得 ULP 倍数 max=1.0000,超 1 ULP 的 0 个)——内核 fp32 累加后舍入到 bf16 与 torch 求和次序不同,边界值差一格,任何实现都做不到更好。 ### 六、0820 批次资料与实现一致性(issue #36~#49) 判据:aclnn 是手写还是自动生成(前者看 l0op::Contiguous/ViewCopy 的实际调用,后者看 OpDef 的 AutoContiguous,依据 cmake/func.cmake:502 有无 op_api/*.cpp 分流);再看参数是输入、ref(输入/输出复用)还是纯输出——自动生成路径下只有输入与 ref 有非连续支持,纯输出没有这一说。 - 6 个 foreach inplace 的第一参数(ref,输入侧已声明 AutoContiguous):资料 × → √(#38/#39/#44/#45/#46/#47) - ForeachAddcdivList / ForeachAddcmulList:def + arch35 内核 + config/ascend950 三层齐备,资料「A5 不支持」→ 支持(#40/#42) - DeepNorm / DeepNormGrad 的 7 个纯输出:资料 √ → ×(#36/#37) - FusedCrossEntropyLossWithMaxSum:inputOptional/weightOptional 的「非连续Tensor」列 √ → -(不涉及)(#48)。这两个参数当前只支持空指针(资料使用说明已写明),且实现中完全未被使用:aclnn 的 CheckParams 将其标为 [[maybe_unused]],kernel 的 GM_ADDR gmTensor[6] 张量列表也不含它们。既然不可能传入张量,「支持非连续」对其为空谈,正确整改是把该列标为不涉及,而不是给一个永不使用的入参补 l0op::Contiguous。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4994 ## 测试 全部为 Ascend950PR 真机实测(TTK geir 通路 + op_host UT)。 **issue 原始用例** | 项 | 结果 | |---|---| | #21 原始 7 例 | **7/7 PASS**(修复前 7/7 崩) | | #31 超大 D(1.51 亿元素)2 例 | 由 errcode 341 转 **PASS** | | #32 C 轴切分专项 57 例(旧全行路径 33 + 新 C 分块路径 24) | **57/57 PASS** | **回归与泛化** | 算子 | 交付回归集 | 配额集(七条硬约束派生) | 改动路径专项 | |---|---|---|---| | MultilabelMarginLoss | **1098/1098** | **113/113** | 57/57 | | L2NormalizeGrad | **1018/1018** | 79/81 | fp32 精度 13/13 | | GroupNormSiluQuant | 前 158 例 **158/158** | **211/211** | 空张量 **44/44**、改动路径集 **779/779** | 说明: - L2G 配额集余 2 例是 TTK 建图侧问题(rank==1 且属性 dim 缺省时,生成的图把输入 dtype 写错一档),算子对 DT_DOUBLE 正确拒收,该用例未测到算子;同一档由 fp16 那例以正确的 EZ0026 拒收覆盖。 - GNSQ 改动路径集按「本次改动真正生效的条件」筛选(大 C 路由/下溢保护区 + 空张量),未改动路径不重复验证。过程中 6 例 PROFILE_CRASH 退出码为 -9(宿主 OOM,容器 32G 上限),降并发单进程复跑 **6/6 PASS**。 - L2G fp32 13 例按算子自己声明的 cross_check L1 三方比对复判全 PASS:mare 比值 1.0~1.11(阈值 5.0)、mere 0.0036(阈值 1.5),NPU 误差与 GPU 竞品同量级。 ## 文档更新 10 个资料文件的一致性订正(详见「六、0820 批次资料与实现一致性」): - foreach/*/docs/aclnnForeach{ACos,AddList,MulList,MulScalar,SubList,SubScalar}Inplace.md - foreach/*/docs/aclnnForeach{Addcdiv,Addcmul}List.md - norm/deep_norm/docs/aclnnDeepNorm.md、norm/deep_norm_grad/docs/aclnnDeepNormGrad.md - loss/fused_cross_entropy_loss_with_max_sum/docs/aclnnFusedCrossEntropyLossWithMaxSum.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9017 | 1 个月前 | |
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 | 3 个月前 | |
legacy日落-给一些算子增加InferDataTpye和Tiling日志 Co-authored-by: m0_64999461<xiongpan666@outlook.com> # message auto-generated for no-merge-commit merge: !8630 merge ops-dev into master legacy日落-给一些算子增加InferDataTpye和Tiling日志 Created-by: pan_xiong Commit-by: m0_64999461 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> legacy日落-给一些算子增加InferDataTpye、Infershape打印outputshape和Tiling日志 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 二级冒烟,本地通路验证完毕 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 暂无文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [X] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8630 | 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 | 2 个月前 | |
feat: rename op_api_def.h to op_api_def_nn.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8360 merge rename_opapidef into master feat: rename op_api_def.h to op_api_def_nn.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 本次改动将 op_api/op_api_def.h 重命名为 op_api/op_api_def_nn.h,并同步更新了所有引用该头文件的源文件与测试文件中的 #include 路径,共涉及 161 个文件。 改动原因:将 op_api 定义头文件统一命名为 op_api_def_nn.h,以更好地体现其所属模块(NN 算子)的语义,便于后续与其他模块的头文件区分管理。 此外,在提交过程中发现 4 个文件(aclnn_foreach_addcmul_scalar_v2.cpp、aclnn_max_unpool3d.cpp、test_aclnn_addmv.cpp、test_aclnn_fast_batchnorm_backward.cpp)的许可证头使用了非标准的旧格式,导致 OAT 合规检查失败。本次一并将其更新为标准的 CANN 开源许可证头格式,确保通过合规校验。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4954 ## 测试 - 通过 pre-commit 钩子校验:trailing whitespace、end-of-file-fixer、clang-format 均通过 - 通过 OAT 合规检查(161 个文件全部通过) - 本次为头文件重命名改动,不涉及逻辑变更,编译依赖关系保持不变 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:头文件重命名与许可证头修复 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8360 | 1 个月前 | |
fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8943 merge q_work8 into master fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 CANN 9.0.0 中 ReduceType 枚举移至 AscendC::Reg 命名空间,arch35 算子文件中通过 using namespace AscendC 已无法将 ReduceType 引入当前作用域,导致编译时 ReduceType::SUM/ReduceType::MAX 无法解析。 本次改动将 arch35 目录下 62 个算子头文件中的 ReduceType::SUM(502 处)和 ReduceType::MAX(32 处)显式限定为 AscendC::Reg::ReduceType::SUM 和 AscendC::Reg::ReduceType::MAX,修复编译兼容性问题。 涉及的算子模块:activation、norm、loss、index、quant,均为 arch35 架构专用文件,不影响其他架构。 ## 关联的Issue #4937 ## 测试 在 CANN 9.0.0(ascend950)环境下对 62 个文件涉及的算子进行编译验证,全部编译通过。 ## 文档更新 无文档更新,本次为编译兼容性修复。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8943 | 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 | 1 个月前 | |
fix(arch35): GroupNormSiluQuant/MultilabelMarginLoss/L2NormalizeGrad算子功能修复 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9017 merge fix/issue-batch-0820 into master fix(arch35): GroupNormSiluQuant/MultilabelMarginLoss/L2NormalizeGrad算子功能修复 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复测试问题单 #21 / #31 / #32 暴露的三个算子的内核与 tiling 缺陷,并整改 0820 批次核对出的资料与实现不一致项。 ### 一、GroupNormSiluQuant —— UB 记账越界(issue #21) 现象:geir 动静态双腿 7 例全崩(MTE2 写越界 82 / VEC 访存越界 341 / scalar 越界 263),其中 3 例入参完全合法。四处缺陷: 1. SetPartialFallback 的 ubSize - meanAndRstd - gamma - beta - quantScale **无下溢保护**。实测 C=5408396 时 ubRemain 下溢成 2^64-21380096,processSize 被算成 2^61 级。 2. 同函数用 isLargeChannel && hasOptional 决定走 1120 还是 1100,而 quantScale 是否整段常驻**只取决于 C**:大 C 且无 gamma/beta 时被错选进 1100。判据改为「整段常驻装不装得下」。 3. MaybeSetSplitReduce 覆盖成 1140 时不做 UB 预算校验,而 1140 内核按「本核通道数」常驻 gamma/beta(每通道 12B,且无 gamma/beta 时也照开)。新增 SplitReduceFitsUb(与内核 InitUbBuffers 逐项对应),内核侧改为按 hasGamma/hasBeta 条件分配。 4. host 的 couldFold 漏了 kernel isFold = hwNum <= NDDMA_SIZE || (!hasGamma && !hasBeta) 的后半个条件,导致「无 gamma/beta + 大 hwNum」档 kernel 按 fold 布局写 451KB 而 host 只预留 shapeC 个 fp32。 另加防御:generalized 环两处减法加下溢保护;两处 DownAlign 为 0 时直接返回;tiling 出口统一校验——凡靠 processSize 驱动搬运的 key 解不出正值一律 GRAPH_FAILED,不把 0/下溢值下发给内核。 ### 二、MultilabelMarginLoss —— 支持面窄于 A2(issue #32) 原实现七块 buffer 全部随 C 线性增长且不参与分块,UB 253952B 直接换算出 C≈8000 上限,超过即 tiling 主动 GRAPH_FAILED(实测 C<=2842 全过、C>=195万 全败),而 A2 由 TBE DSL 承担切分对 C 无上限。 - tiling 新增 cFactor:整行装得下时 == C(走原全行路径,行为不变),装不下时解出分块长度(解时先给行方向分块 buffer 留 TILE_MIN 份,否则 ubFactor 会解出 0)。 - kernel 新增 C 分块路径:逐段在 UB 内建掩码并产出 is_target,标签分批缓存(每批至多 cFactor 个,连 x[k] 一并取回),每批对全部 x 段各做一次向量累加。复杂度与全行路径同为 O(P*C)。 - 三处同步缺陷(均由「同一用例跑两遍结果不同」暴露):DeQue 只给 MTE2→V,标量读 target 段需自补 MTE2→S;EnQue 只给 V→MTE3,标量写的缓冲搬出前需自补 S→MTE3;类内固定 EVENT_ID0 的 PipeBarrier 在本路径会与队列/LocalReduceSum 的同 ID 事件互踩,改用独立事件 ID。 ### 三、L2NormalizeGrad —— SPLIT_D 累加槽位写穿(issue #31 的超大 D 档) kernel 的 accum 缓冲固定 SPLIT_D_MAX_CHUNKS(=256) 槽,而 FormerProcess 按 numChunks_ 直接 Duplicate/写槽。1 维 D=1.51e8 需约 3.7 万槽,当场写穿 → errcode 341,host 侧无守卫。改为分组累加(组内向量规约 + 组间标量累加),D 不再有上限。 ### 四、GroupNormSiluQuant —— 空 Tensor 的 meanOut 语义两条通路不一致 资料两处(README.md:73、docs/aclnnGroupNormSiluQuant.md:112)与手写 aclnn 都规定「空 Tensor 时 meanOut 填 0、rstdOut 填 NAN」:op_host/op_api/aclnn_group_norm_silu_quant.cpp:251 的 IsEmpty() 分支显式 FillScalar(meanOut, 0) + FillScalar(rstdOut, NAN) 后直接返回,不下发内核。 而 arch35 内核的 empty 分支调 ProcessMeanAndRstd 时,该函数把填充值写死成 NAN,mean/rstd 都填 NAN——走 GE 图通路(aclnn 不参与)时 meanOut 变成 NaN,违反算子自己的契约。修法:把填充值提成入参,mean 传 0、rstd 传 NAN。 (对照:同族 GroupNormSilu 的 aclnn 对 regbase 显式跳过 FillScalar、把空张量交给内核,两条通路自洽;本算子的 aclnn 是无条件填充,所以只有本算子存在通路间不一致。) ### 五、GroupNormSiluQuant golden 补两档 + 判据显式声明 新配额用例集暴露:可选输入缺省(gamma/beta 传 None)与空张量在 golden 里判不了(15 例 GOLDEN_FAILURE),而「可选输入不给」正是 issue #21 中 L1_014 的画像——该档此前从设计上就没被验证过。按内核语义补缺省(1.0/0.0),空张量短路按上述契约取 mean=0 / rstd=NaN。 并把每个输出的判据显式声明到 Spec.tolerance,不再依赖 CLI 传什么: - int8 输出声明 quant —— 否则 TTK 把 int8 硬路由到 binary_equal,量化舍入的 ±1 LSB 被大面积误判(26 例「失败」实测最大 |diff| 全为 1)。 - mean/rstd 三种浮点 dtype 声明 CANN 开源标准 stat_rel_err(mere < th 且 mare < 10*th)。此前未声明,落到 TTK 默认的 isclose(atol=1e-8),该地板低于 bf16/fp32 在常见量级上的分辨率。实测 case00603_rg(2,5120,7) bf16:2560 个 mean 元素里 10 个不相等,**每个恰好差 1 ULP**(--dump 取原始数组算得 ULP 倍数 max=1.0000,超 1 ULP 的 0 个)——内核 fp32 累加后舍入到 bf16 与 torch 求和次序不同,边界值差一格,任何实现都做不到更好。 ### 六、0820 批次资料与实现一致性(issue #36~#49) 判据:aclnn 是手写还是自动生成(前者看 l0op::Contiguous/ViewCopy 的实际调用,后者看 OpDef 的 AutoContiguous,依据 cmake/func.cmake:502 有无 op_api/*.cpp 分流);再看参数是输入、ref(输入/输出复用)还是纯输出——自动生成路径下只有输入与 ref 有非连续支持,纯输出没有这一说。 - 6 个 foreach inplace 的第一参数(ref,输入侧已声明 AutoContiguous):资料 × → √(#38/#39/#44/#45/#46/#47) - ForeachAddcdivList / ForeachAddcmulList:def + arch35 内核 + config/ascend950 三层齐备,资料「A5 不支持」→ 支持(#40/#42) - DeepNorm / DeepNormGrad 的 7 个纯输出:资料 √ → ×(#36/#37) - FusedCrossEntropyLossWithMaxSum:inputOptional/weightOptional 的「非连续Tensor」列 √ → -(不涉及)(#48)。这两个参数当前只支持空指针(资料使用说明已写明),且实现中完全未被使用:aclnn 的 CheckParams 将其标为 [[maybe_unused]],kernel 的 GM_ADDR gmTensor[6] 张量列表也不含它们。既然不可能传入张量,「支持非连续」对其为空谈,正确整改是把该列标为不涉及,而不是给一个永不使用的入参补 l0op::Contiguous。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4994 ## 测试 全部为 Ascend950PR 真机实测(TTK geir 通路 + op_host UT)。 **issue 原始用例** | 项 | 结果 | |---|---| | #21 原始 7 例 | **7/7 PASS**(修复前 7/7 崩) | | #31 超大 D(1.51 亿元素)2 例 | 由 errcode 341 转 **PASS** | | #32 C 轴切分专项 57 例(旧全行路径 33 + 新 C 分块路径 24) | **57/57 PASS** | **回归与泛化** | 算子 | 交付回归集 | 配额集(七条硬约束派生) | 改动路径专项 | |---|---|---|---| | MultilabelMarginLoss | **1098/1098** | **113/113** | 57/57 | | L2NormalizeGrad | **1018/1018** | 79/81 | fp32 精度 13/13 | | GroupNormSiluQuant | 前 158 例 **158/158** | **211/211** | 空张量 **44/44**、改动路径集 **779/779** | 说明: - L2G 配额集余 2 例是 TTK 建图侧问题(rank==1 且属性 dim 缺省时,生成的图把输入 dtype 写错一档),算子对 DT_DOUBLE 正确拒收,该用例未测到算子;同一档由 fp16 那例以正确的 EZ0026 拒收覆盖。 - GNSQ 改动路径集按「本次改动真正生效的条件」筛选(大 C 路由/下溢保护区 + 空张量),未改动路径不重复验证。过程中 6 例 PROFILE_CRASH 退出码为 -9(宿主 OOM,容器 32G 上限),降并发单进程复跑 **6/6 PASS**。 - L2G fp32 13 例按算子自己声明的 cross_check L1 三方比对复判全 PASS:mare 比值 1.0~1.11(阈值 5.0)、mere 0.0036(阈值 1.5),NPU 误差与 GPU 竞品同量级。 ## 文档更新 10 个资料文件的一致性订正(详见「六、0820 批次资料与实现一致性」): - foreach/*/docs/aclnnForeach{ACos,AddList,MulList,MulScalar,SubList,SubScalar}Inplace.md - foreach/*/docs/aclnnForeach{Addcdiv,Addcmul}List.md - norm/deep_norm/docs/aclnnDeepNorm.md、norm/deep_norm_grad/docs/aclnnDeepNormGrad.md - loss/fused_cross_entropy_loss_with_max_sum/docs/aclnnFusedCrossEntropyLossWithMaxSum.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9017 | 1 个月前 | |
规范化修改产品术语名 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 | 2 个月前 | |
modified md files (update product labels) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !8256 merge master into master modified md files (update product labels) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Update product labels. ## 关联的Issue [#4574](https://gitcode.com/cann/ops-nn/issues/4574) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 norm/group_norm_swish_grad/docs/aclnnGroupNormSwishGrad.md norm/rms_norm_quant_v3/docs/aclnnRmsNormQuantV3.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8256 | 2 个月前 | |
fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !9003 merge fix-geir-test-log-level-mismatch into master fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 14 个算子 geir 测试文件中日志级别与描述不一致的问题:3 类失败消息被误标记为 INFO,而同文件内其他失败消息均正确标记为 ERROR,构成内部不一致。本次将这 3 类失败消息的日志级别从 INFO 改为 ERROR。 ### 改动原因 geir 测试文件统一使用 printf("%s - LEVEL - [XIR]: message") 格式输出日志。在以下 3 类失败分支中,消息内容明确表示失败,但日志级别却写成 INFO,与同文件内其他失败消息(如 Generate input data failed、Create ir session using build options failed、Session add ir compute graph failed、Output verification FAILED,均标记为 ERROR)不一致,会误导日志排查: - Initialize ge using ge global options failed - Run graph failed - Finalize ir graph session failed ### 改动方法 仅将上述 3 类失败消息的日志级别标签 - INFO - 改为 - ERROR -,不修改任何测试逻辑、消息文本或参数。 ### 涉及文件(每个 3 处,共 42 处,14 文件 +42 -42) - activation/log_softmax_v2 - activation/confusion_softmax_grad - index/broadcast_gradient_args - norm/add_layer_norm_quant - norm/add_rms_norm_dynamic_quant_v2 - norm/batch_norm - norm/group_norm_v2 - norm/instance_norm - norm/layer_norm - norm/layer_norm_v3 - norm/sync_batch_norm_backward_elemt - norm/sync_batch_norm_backward_reduce - norm/sync_batch_norm_gather_stats - norm/sync_bn_training_update ## 关联的Issue - #4973 ## 测试 - 仅日志级别字符串修改,无逻辑变更,不影响测试编译与运行结果。 - 通过 git diff 逐项核对:仅 - INFO - → - ERROR -,消息文本与参数不变。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9003 | 1 个月前 | |
test(golden): 升级 INInferV2 TestSpec Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !8513 merge fix/in-infer-v2-golden-spec-update into master test(golden): 升级 INInferV2 TestSpec Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 本次仅更新 norm/in_infer_v2/tests/assets/golden.py: - 引入 __spec__ TestSpec 注册,kernel 与 GEIR 共用 in_infer_v2 算子键和 Spec。 - 使用 Promote 感知的 Torch CPU true-value,保留框架提供的 FP64 输入,不再强制降为 FP32。 - 增加独立 Torch third-party composition,按 arch35 kernel 的 FP32 运算顺序执行,并配置 FP16/FP32 cross_check 容差。 - 保留兼容旧加载器的 __golden__,并与 TestSpec 复用同一计算核心。 - 删除无真实接口支撑的 ACLNN golden 注册;该算子配置为 ACLNNTYPE aclnn_exclude,不新增 ACLNN 或 e2e 通路。 ## 关联的Issue 关联 Issue #4684:https://gitcode.com/cann/ops-nn/issues/4684 ## 测试 - pre-commit run --files norm/in_infer_v2/tests/assets/golden.py:通过。 - Python AST/import、TestSpec 惰性加载与注册检查:通过。 - FP16/FP32、gamma/beta 有无、不同 rank/统计量 shape、Promote 输出 dtype 与 third-party 本地语义检查:通过。 - TTK 用例校验:100/100 valid;覆盖 FP16/FP32 各 50 条、gamma/beta 有无、rank 2~5、epsilon 与 inner 边界。 - TTK kernel release binary + Promote 双向精度验证:100/100 PASS;三个输出均 PASS,内存越界检查 100/100 PASS。 - TTK GEIR release 集成冒烟:FP16 无 gamma/beta 与 FP32 有 gamma/beta 共 2/2 PASS,三个输出均 PASS。 ## 文档更新 无,本次仅更新 golden 测试资产。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试 golden 规范升级 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8513 | 2 个月前 | |
feat(in_training_reduce_v2): sub-R分组折叠解除规约轴R的上限 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !8862 merge feat/in-training-reduce-v2-lift-r-limit into master feat(in_training_reduce_v2): sub-R分组折叠解除规约轴R的上限 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 解除 INTrainingReduceV2 规约轴长度 R 的上限。 ### 问题 sub-R 分块路径把 numChunks = ceil(R / rFactor) 个部分和**全部常驻 UB**,于是"输入分块双缓冲"与"随 R 增长的部分和数组"争抢同一块 UB: 2·e·rFactor + 8·(R/rFactor) ≤ usable ⟹ e·R ≤ (usable/8)² (e = 元素字节宽度) 按 Ascend 950 的 ub_size=253952 复算 DoSubRTiling() 并二分求临界点,上限为 **FLOAT32 R ≤ 249,892,864 / FLOAT16 R ≤ 500,797,440**(均约 0.93 GiB 输入),超出即在 Host Tiling 阶段返回失败。上游反馈的用例 InTrainingReduceV2_L1_upboundary_highpre_047(N=1, C=1, R=4294967296)正是因此失败: EZ9999: sub-R tiling requires N, C, R and N*C to fit in uint32: N=1 C=1 R=4294967296. [FUNC:CheckSubRNarrowable][FILE:in_training_reduce_v2_tiling_ar_full_reduce_arch35.cpp][LINE:127] 这个上限并非硬件或算法固有,而是实现耦合。同族对照支持"该能力本应具备":canndev 的 A2/A3 实现(TBE tuple_reduce)在类型与架构上均不设 R 上限;本仓 batch_norm_v3 的 block_split_r 也通过分级归约避开了同样的耦合。 ### 方案:分组折叠 给部分和缓存一个**固定**的分组预算:每 chunksPerGroup 个 chunk 折叠一次,结果写入 carry 槽并参与下一组的树形折叠,使 UB 占用与 R 完全解耦。 runningFold = 0 for g in [0, numGroups): for c in [0, chunksInGroup): CopyIn / ReduceChunk → partial[c] foldCnt = chunksInGroup + (g > 0 ? 1 : 0) # g>0 时含上一组的 carry FoldGroupSubR(partial[0, foldCnt)) → 末组写输出,否则写下一组的 carry 槽 实测 UB 用量恒为 **253,056 / 253,440 字节**,R 从 2.6×10⁸ 到 4.29×10⁹ 完全不变。**R 不再有上限,仅受设备内存约束。** ### 三点设计取舍 1. **保留原有求解作为快路径。** 装得下即 numGroups == 1,tiling 参数与 Kernel 行为逐位不变,存量 shape 零影响;分组仅在原本会被拒绝的 R 上启用。TTK 851 条泛化用例**全部走快路径**,这既解释了它们全绿,也印证了改造对存量行为无影响。 2. **chunksPerGroup 取"VL 对齐值 − 1"**,使 CeilAlign(chunksPerGroup + 1, VL) 恰好等于该对齐值,carry 槽不额外多吃一个 VL —— 分组路径的 UB 开销为零。 3. **carry 与本组 chunk 走同一次向量折叠**,而非标量顺序累加,精度优于顺序加。 ### 附带 sub-R 路径的 numN / numC / numR / perCoreCnt 由 uint32_t 放宽到 uint64_t,并移除 CheckSubRNarrowable() 中对 numR 的守卫(N / C / N×C 的 uint32 约束保留)。顺带修正 ar_full_reduce.h 中 perCoreCnt_ 的隐式收窄(同段其余字段均有显式 static_cast)。 README 未作改动:R 的上限是被**删除**的,不是被补充的,「约束说明」无需新增条目。 ## 关联的Issue 关联Issue #4872 —— 该 Issue 原诉求是把 R 上限写入文档;排查后确认上限可解除,故改为直接解除,Issue 将同步说明。原 PR !8838(文档化该上限)已因此关闭。 ## 测试 **op_host UT:22/22 通过** 新增 / 改写: - ..._sub_r_r_over_uint32_015:R=2³²(即上游失败用例的 R),改造前被拒,现须出 tiling - ..._sub_r_r_far_over_uint32_fp16_017:R=2³⁴ fp16,验证上限是"解除"而非"抬高一档" - ..._sub_r_nc_over_uint32_rejected_018:N×C=2³²,验证 N/C 的 uint32 守卫仍生效 - ..._sub_r_grouped_fold_2e9_014:原为"断言拒绝",改为"断言分组后接受" - 新增 ExpectSubRSelfConsistent():断言 numChunks/tailLen/numGroups/tailChunks 彼此自洽,且 Kernel 按该组参数申请的 UB 不越界 - 存量用例 013 / 016 增加 numGroups == 1 断言,守住"快路径不变" **TTK kernel 泛化:851 / 851 全部 PASS**(Ascend 950PR_9579) | 项 | 结果 | |---|---| | precision_status | PASS × 851,0 FAIL | | bin_precision | 100.0%,100.0% × 851 | | bin_compile_s | BINARY_MATCH × 851(跑的是部署的预编译 .o,非 JIT 兜底) | | memory_oob | PASS × 851 | 命令:ttk kernel -i in_training_reduce_v2_full.csv -d=false -b=release --compare close --plugin <op>/tests/assets **超限用例实测**(这批是唯一能覆盖新增分组路径的用例,851 条泛化全部走快路径) | R | dtype | numGroups | 结果 | |---:|---|---:|---| | 260,000,000 | fp32 | 2 | PASS,精度 100% | | 600,000,000 | fp32 | 3 | PASS,精度 100% | | 520,000,000 | fp16 | 2 | PASS,精度 100% | | 1,200,000,000 | fp16 | 3 | 跑批中 | | 4,294,967,296 | fp16 | 9 | 跑批中 | | 4,294,967,296 | fp32 | 18 | 跑批中 | 前三条均已超过改造前的上限(改造前会被 Host Tiling 拒绝)。后三条规模较大(fp64 golden 需 32 GiB),结果出来后补充到评论。 **本地门禁**:pre-commit 全项 Passed(含 clang-format / codespell / OAT 合规)。 ## 文档更新 无。R 的上限被解除而非文档化,README 无需改动。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8862 | 1 个月前 | |
fix(arch35): 修复 InTrainingUpdateGrad NDC1HWC0 与 MultiAddRmsNormDynamicQuant 动态输入取值;8 算子 golden 适配三方对比 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !8492 merge fix/op-binary-json-missing into master fix(arch35): 修复 InTrainingUpdateGrad NDC1HWC0 与 MultiAddRmsNormDynamicQuant 动态输入取值;8 算子 golden 适配三方对比 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 按照ttk最新支持规范更新ttk golden ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4685 ## 测试 st ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8492 | 2 个月前 | |
文档更新: inplace_add_layer_norm 修正 x2 输出描述 Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9056 merge ialn_md into master 文档更新: inplace_add_layer_norm 修正 x2 输出描述 Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 修正 inplace_add_layer_norm 算子 README 中 x2 输出参数的描述错误。 根据算子计算公式: - x = x1 + x2 + biasOptional(Add 结果) - y = (x - x̄) * rstd * γ + β(LayerNorm 结果) x2 输出对应公式中的 x,是 Add 计算的结果输出,而非 LayerNorm 结果。原描述误写为"表示LayerNorm的结果输出",与 x1 输出(对应 y,LayerNorm 结果)描述混淆,现修正为"表示Add的结果输出"。 ### 改动原因 README 功能说明(第 18 行)已明确"输出参数 x1(对应公式中的 y)、x2(对应公式中的 x)",其中 x = x1 + x2 + biasOptional 为 Add 结果。但参数表格中 x2 输出描述误标为"LayerNorm的结果输出",与 x1 输出描述(LayerNorm 结果 y)混淆,与公式及功能说明不一致。 ### 改动方法 将 norm/inplace_add_layer_norm/README.md 第 124 行 x2 输出描述由"表示LayerNorm的结果输出,对应公式中的 x"修改为"表示Add的结果输出,对应公式中的 x"。 ## 关联的Issue - #https://gitcode.com/cann/ops-nn/issues/5032 ## 测试 文档描述修正,不涉及代码逻辑变更,无需测试。 ## 文档更新 - 更新 norm/inplace_add_layer_norm/README.md:修正 x2 输出参数描述(LayerNorm 结果 → Add 结果)。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [] AI辅助编写 See merge request: cann/ops-nn!9056 | 1 个月前 | |
docs: 修正 rmsnorm 系列算子 rstdOut shape 描述 Co-authored-by: liangyuhua<liangyuhua4@huawei.com> # message auto-generated for no-merge-commit merge: !9008 merge fix/rstdout-shape-doc into master docs: 修正 rmsnorm 系列算子 rstdOut shape 描述 Created-by: liangyuhua Commit-by: liangyuhua Merged-by: cann-robot Description: ## 描述 修正 rmsnorm 系列算子 rstdOut 输出的 shape 描述,补充"维度数需与输入保持一致、需要norm的维度均为1"的说明,并增加 shape 关系举例。 原描述仅提及"shape前几维保持一致",未说明维度数需一致及norm维度为1的要求,与 kernel infershape 实际逻辑不符,容易导致用户对 rstdOut shape 理解错误。 **涉及算子**(4 个文件): | 算子 | 输入参数 | gamma 维度约束 | |------|----------|---------------| | add_rms_norm_cast | x1 | 1-8 维 | | inplace_add_rms_norm | x1Ref | 1-8 维 | | add_rms_norm_dynamic_mx_quant | x1 | 1 维 | | rms_norm_dynamic_mx_quant | x | 1 维 | **修正前**(以 add_rms_norm_cast 为例): > shape与入参x1的shape前几维保持一致,前几维指x1的维度减去gamma的维度,表示不需要norm的维度。 **修正后**: > 维度数与入参x1保持一致,其中不需要norm的维度(x1的维度减去gamma的维度后的前几维)与x1对应维度保持一致,需要norm的维度(与gamma维度数相同的后几维)均为1。rstdOut shape与x1 shape、gamma shape关系举例:若x1 shape为(2,3,4,8),gamma shape为(8),则rstdOut shape为(2,3,4,1);若x1 shape为(2,3,4,8),gamma shape为(4,8),则rstdOut shape为(2,3,1,1)。 与 infershape 代码逻辑完全一致: cpp rstdShape->SetDimNum(xDimNum); for (size_t i = 0; i < xDimNum; i++) { if (i < xDimNum - gammaDimNum) { rstdShape->SetDim(i, x1Shape->GetDim(i)); // 不需要norm的维度 } else { rstdShape->SetDim(i, 1); // 需要norm的维度均为1 } } ## 关联的Issue #4974 ## 测试 本次变更仅涉及文档描述,无代码改动,无需测试。 ## 文档更新 - norm/add_rms_norm_cast/docs/aclnnAddRmsNormCast.md - norm/inplace_add_rms_norm/docs/aclnnInplaceAddRmsNorm.md - norm/add_rms_norm_dynamic_mx_quant/docs/aclnnAddRmsNormDynamicMxQuant.md - norm/rms_norm_dynamic_mx_quant/docs/aclnnRmsNormDynamicMxQuant.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9008 | 1 个月前 | |
fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !9003 merge fix-geir-test-log-level-mismatch into master fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 14 个算子 geir 测试文件中日志级别与描述不一致的问题:3 类失败消息被误标记为 INFO,而同文件内其他失败消息均正确标记为 ERROR,构成内部不一致。本次将这 3 类失败消息的日志级别从 INFO 改为 ERROR。 ### 改动原因 geir 测试文件统一使用 printf("%s - LEVEL - [XIR]: message") 格式输出日志。在以下 3 类失败分支中,消息内容明确表示失败,但日志级别却写成 INFO,与同文件内其他失败消息(如 Generate input data failed、Create ir session using build options failed、Session add ir compute graph failed、Output verification FAILED,均标记为 ERROR)不一致,会误导日志排查: - Initialize ge using ge global options failed - Run graph failed - Finalize ir graph session failed ### 改动方法 仅将上述 3 类失败消息的日志级别标签 - INFO - 改为 - ERROR -,不修改任何测试逻辑、消息文本或参数。 ### 涉及文件(每个 3 处,共 42 处,14 文件 +42 -42) - activation/log_softmax_v2 - activation/confusion_softmax_grad - index/broadcast_gradient_args - norm/add_layer_norm_quant - norm/add_rms_norm_dynamic_quant_v2 - norm/batch_norm - norm/group_norm_v2 - norm/instance_norm - norm/layer_norm - norm/layer_norm_v3 - norm/sync_batch_norm_backward_elemt - norm/sync_batch_norm_backward_reduce - norm/sync_batch_norm_gather_stats - norm/sync_bn_training_update ## 关联的Issue - #4973 ## 测试 - 仅日志级别字符串修改,无逻辑变更,不影响测试编译与运行结果。 - 通过 git diff 逐项核对:仅 - INFO - → - ERROR -,消息文本与参数不变。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9003 | 1 个月前 | |
InTrainingUpdateGrad\MultiAddRmsNormDynamicQuant\MultilabelMarginLoss\InstanceNormGrad 算子精度优化 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !8723 merge fix/op-binary-json-missing into master InTrainingUpdateGrad\MultiAddRmsNormDynamicQuant\MultilabelMarginLoss\InstanceNormGrad 算子精度优化 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 fix(arch35): 修复 InTrainingUpdateGrad NDC1HWC0 与 MultiAddRmsNormDynamicQuant 动态输入取值;MultilabelMarginLoss A5 独立 tiling 与归约精度;InstanceNormGrad UB 记账与缓冲下发;8 算子 golden 适配三方对比 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4818 ## 测试 ut/st ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8723 | 1 个月前 | |
算子插件迁移 | 1 个月前 | |
fix(arch35): GroupNormSiluQuant/MultilabelMarginLoss/L2NormalizeGrad算子功能修复 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9017 merge fix/issue-batch-0820 into master fix(arch35): GroupNormSiluQuant/MultilabelMarginLoss/L2NormalizeGrad算子功能修复 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修复测试问题单 #21 / #31 / #32 暴露的三个算子的内核与 tiling 缺陷,并整改 0820 批次核对出的资料与实现不一致项。 ### 一、GroupNormSiluQuant —— UB 记账越界(issue #21) 现象:geir 动静态双腿 7 例全崩(MTE2 写越界 82 / VEC 访存越界 341 / scalar 越界 263),其中 3 例入参完全合法。四处缺陷: 1. SetPartialFallback 的 ubSize - meanAndRstd - gamma - beta - quantScale **无下溢保护**。实测 C=5408396 时 ubRemain 下溢成 2^64-21380096,processSize 被算成 2^61 级。 2. 同函数用 isLargeChannel && hasOptional 决定走 1120 还是 1100,而 quantScale 是否整段常驻**只取决于 C**:大 C 且无 gamma/beta 时被错选进 1100。判据改为「整段常驻装不装得下」。 3. MaybeSetSplitReduce 覆盖成 1140 时不做 UB 预算校验,而 1140 内核按「本核通道数」常驻 gamma/beta(每通道 12B,且无 gamma/beta 时也照开)。新增 SplitReduceFitsUb(与内核 InitUbBuffers 逐项对应),内核侧改为按 hasGamma/hasBeta 条件分配。 4. host 的 couldFold 漏了 kernel isFold = hwNum <= NDDMA_SIZE || (!hasGamma && !hasBeta) 的后半个条件,导致「无 gamma/beta + 大 hwNum」档 kernel 按 fold 布局写 451KB 而 host 只预留 shapeC 个 fp32。 另加防御:generalized 环两处减法加下溢保护;两处 DownAlign 为 0 时直接返回;tiling 出口统一校验——凡靠 processSize 驱动搬运的 key 解不出正值一律 GRAPH_FAILED,不把 0/下溢值下发给内核。 ### 二、MultilabelMarginLoss —— 支持面窄于 A2(issue #32) 原实现七块 buffer 全部随 C 线性增长且不参与分块,UB 253952B 直接换算出 C≈8000 上限,超过即 tiling 主动 GRAPH_FAILED(实测 C<=2842 全过、C>=195万 全败),而 A2 由 TBE DSL 承担切分对 C 无上限。 - tiling 新增 cFactor:整行装得下时 == C(走原全行路径,行为不变),装不下时解出分块长度(解时先给行方向分块 buffer 留 TILE_MIN 份,否则 ubFactor 会解出 0)。 - kernel 新增 C 分块路径:逐段在 UB 内建掩码并产出 is_target,标签分批缓存(每批至多 cFactor 个,连 x[k] 一并取回),每批对全部 x 段各做一次向量累加。复杂度与全行路径同为 O(P*C)。 - 三处同步缺陷(均由「同一用例跑两遍结果不同」暴露):DeQue 只给 MTE2→V,标量读 target 段需自补 MTE2→S;EnQue 只给 V→MTE3,标量写的缓冲搬出前需自补 S→MTE3;类内固定 EVENT_ID0 的 PipeBarrier 在本路径会与队列/LocalReduceSum 的同 ID 事件互踩,改用独立事件 ID。 ### 三、L2NormalizeGrad —— SPLIT_D 累加槽位写穿(issue #31 的超大 D 档) kernel 的 accum 缓冲固定 SPLIT_D_MAX_CHUNKS(=256) 槽,而 FormerProcess 按 numChunks_ 直接 Duplicate/写槽。1 维 D=1.51e8 需约 3.7 万槽,当场写穿 → errcode 341,host 侧无守卫。改为分组累加(组内向量规约 + 组间标量累加),D 不再有上限。 ### 四、GroupNormSiluQuant —— 空 Tensor 的 meanOut 语义两条通路不一致 资料两处(README.md:73、docs/aclnnGroupNormSiluQuant.md:112)与手写 aclnn 都规定「空 Tensor 时 meanOut 填 0、rstdOut 填 NAN」:op_host/op_api/aclnn_group_norm_silu_quant.cpp:251 的 IsEmpty() 分支显式 FillScalar(meanOut, 0) + FillScalar(rstdOut, NAN) 后直接返回,不下发内核。 而 arch35 内核的 empty 分支调 ProcessMeanAndRstd 时,该函数把填充值写死成 NAN,mean/rstd 都填 NAN——走 GE 图通路(aclnn 不参与)时 meanOut 变成 NaN,违反算子自己的契约。修法:把填充值提成入参,mean 传 0、rstd 传 NAN。 (对照:同族 GroupNormSilu 的 aclnn 对 regbase 显式跳过 FillScalar、把空张量交给内核,两条通路自洽;本算子的 aclnn 是无条件填充,所以只有本算子存在通路间不一致。) ### 五、GroupNormSiluQuant golden 补两档 + 判据显式声明 新配额用例集暴露:可选输入缺省(gamma/beta 传 None)与空张量在 golden 里判不了(15 例 GOLDEN_FAILURE),而「可选输入不给」正是 issue #21 中 L1_014 的画像——该档此前从设计上就没被验证过。按内核语义补缺省(1.0/0.0),空张量短路按上述契约取 mean=0 / rstd=NaN。 并把每个输出的判据显式声明到 Spec.tolerance,不再依赖 CLI 传什么: - int8 输出声明 quant —— 否则 TTK 把 int8 硬路由到 binary_equal,量化舍入的 ±1 LSB 被大面积误判(26 例「失败」实测最大 |diff| 全为 1)。 - mean/rstd 三种浮点 dtype 声明 CANN 开源标准 stat_rel_err(mere < th 且 mare < 10*th)。此前未声明,落到 TTK 默认的 isclose(atol=1e-8),该地板低于 bf16/fp32 在常见量级上的分辨率。实测 case00603_rg(2,5120,7) bf16:2560 个 mean 元素里 10 个不相等,**每个恰好差 1 ULP**(--dump 取原始数组算得 ULP 倍数 max=1.0000,超 1 ULP 的 0 个)——内核 fp32 累加后舍入到 bf16 与 torch 求和次序不同,边界值差一格,任何实现都做不到更好。 ### 六、0820 批次资料与实现一致性(issue #36~#49) 判据:aclnn 是手写还是自动生成(前者看 l0op::Contiguous/ViewCopy 的实际调用,后者看 OpDef 的 AutoContiguous,依据 cmake/func.cmake:502 有无 op_api/*.cpp 分流);再看参数是输入、ref(输入/输出复用)还是纯输出——自动生成路径下只有输入与 ref 有非连续支持,纯输出没有这一说。 - 6 个 foreach inplace 的第一参数(ref,输入侧已声明 AutoContiguous):资料 × → √(#38/#39/#44/#45/#46/#47) - ForeachAddcdivList / ForeachAddcmulList:def + arch35 内核 + config/ascend950 三层齐备,资料「A5 不支持」→ 支持(#40/#42) - DeepNorm / DeepNormGrad 的 7 个纯输出:资料 √ → ×(#36/#37) - FusedCrossEntropyLossWithMaxSum:inputOptional/weightOptional 的「非连续Tensor」列 √ → -(不涉及)(#48)。这两个参数当前只支持空指针(资料使用说明已写明),且实现中完全未被使用:aclnn 的 CheckParams 将其标为 [[maybe_unused]],kernel 的 GM_ADDR gmTensor[6] 张量列表也不含它们。既然不可能传入张量,「支持非连续」对其为空谈,正确整改是把该列标为不涉及,而不是给一个永不使用的入参补 l0op::Contiguous。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4994 ## 测试 全部为 Ascend950PR 真机实测(TTK geir 通路 + op_host UT)。 **issue 原始用例** | 项 | 结果 | |---|---| | #21 原始 7 例 | **7/7 PASS**(修复前 7/7 崩) | | #31 超大 D(1.51 亿元素)2 例 | 由 errcode 341 转 **PASS** | | #32 C 轴切分专项 57 例(旧全行路径 33 + 新 C 分块路径 24) | **57/57 PASS** | **回归与泛化** | 算子 | 交付回归集 | 配额集(七条硬约束派生) | 改动路径专项 | |---|---|---|---| | MultilabelMarginLoss | **1098/1098** | **113/113** | 57/57 | | L2NormalizeGrad | **1018/1018** | 79/81 | fp32 精度 13/13 | | GroupNormSiluQuant | 前 158 例 **158/158** | **211/211** | 空张量 **44/44**、改动路径集 **779/779** | 说明: - L2G 配额集余 2 例是 TTK 建图侧问题(rank==1 且属性 dim 缺省时,生成的图把输入 dtype 写错一档),算子对 DT_DOUBLE 正确拒收,该用例未测到算子;同一档由 fp16 那例以正确的 EZ0026 拒收覆盖。 - GNSQ 改动路径集按「本次改动真正生效的条件」筛选(大 C 路由/下溢保护区 + 空张量),未改动路径不重复验证。过程中 6 例 PROFILE_CRASH 退出码为 -9(宿主 OOM,容器 32G 上限),降并发单进程复跑 **6/6 PASS**。 - L2G fp32 13 例按算子自己声明的 cross_check L1 三方比对复判全 PASS:mare 比值 1.0~1.11(阈值 5.0)、mere 0.0036(阈值 1.5),NPU 误差与 GPU 竞品同量级。 ## 文档更新 10 个资料文件的一致性订正(详见「六、0820 批次资料与实现一致性」): - foreach/*/docs/aclnnForeach{ACos,AddList,MulList,MulScalar,SubList,SubScalar}Inplace.md - foreach/*/docs/aclnnForeach{Addcdiv,Addcmul}List.md - norm/deep_norm/docs/aclnnDeepNorm.md、norm/deep_norm_grad/docs/aclnnDeepNormGrad.md - loss/fused_cross_entropy_loss_with_max_sum/docs/aclnnFusedCrossEntropyLossWithMaxSum.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9017 | 1 个月前 | |
Merge https://gitcode.com/welt_lester/ops-nn into master | 1 个月前 | |
fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8943 merge q_work8 into master fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 CANN 9.0.0 中 ReduceType 枚举移至 AscendC::Reg 命名空间,arch35 算子文件中通过 using namespace AscendC 已无法将 ReduceType 引入当前作用域,导致编译时 ReduceType::SUM/ReduceType::MAX 无法解析。 本次改动将 arch35 目录下 62 个算子头文件中的 ReduceType::SUM(502 处)和 ReduceType::MAX(32 处)显式限定为 AscendC::Reg::ReduceType::SUM 和 AscendC::Reg::ReduceType::MAX,修复编译兼容性问题。 涉及的算子模块:activation、norm、loss、index、quant,均为 arch35 架构专用文件,不影响其他架构。 ## 关联的Issue #4937 ## 测试 在 CANN 9.0.0(ascend950)环境下对 62 个文件涉及的算子进行编译验证,全部编译通过。 ## 文档更新 无文档更新,本次为编译兼容性修复。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8943 | 1 个月前 | |
fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8943 merge q_work8 into master fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 CANN 9.0.0 中 ReduceType 枚举移至 AscendC::Reg 命名空间,arch35 算子文件中通过 using namespace AscendC 已无法将 ReduceType 引入当前作用域,导致编译时 ReduceType::SUM/ReduceType::MAX 无法解析。 本次改动将 arch35 目录下 62 个算子头文件中的 ReduceType::SUM(502 处)和 ReduceType::MAX(32 处)显式限定为 AscendC::Reg::ReduceType::SUM 和 AscendC::Reg::ReduceType::MAX,修复编译兼容性问题。 涉及的算子模块:activation、norm、loss、index、quant,均为 arch35 架构专用文件,不影响其他架构。 ## 关联的Issue #4937 ## 测试 在 CANN 9.0.0(ascend950)环境下对 62 个文件涉及的算子进行编译验证,全部编译通过。 ## 文档更新 无文档更新,本次为编译兼容性修复。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8943 | 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 | 2 个月前 | |
fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !9003 merge fix-geir-test-log-level-mismatch into master fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 14 个算子 geir 测试文件中日志级别与描述不一致的问题:3 类失败消息被误标记为 INFO,而同文件内其他失败消息均正确标记为 ERROR,构成内部不一致。本次将这 3 类失败消息的日志级别从 INFO 改为 ERROR。 ### 改动原因 geir 测试文件统一使用 printf("%s - LEVEL - [XIR]: message") 格式输出日志。在以下 3 类失败分支中,消息内容明确表示失败,但日志级别却写成 INFO,与同文件内其他失败消息(如 Generate input data failed、Create ir session using build options failed、Session add ir compute graph failed、Output verification FAILED,均标记为 ERROR)不一致,会误导日志排查: - Initialize ge using ge global options failed - Run graph failed - Finalize ir graph session failed ### 改动方法 仅将上述 3 类失败消息的日志级别标签 - INFO - 改为 - ERROR -,不修改任何测试逻辑、消息文本或参数。 ### 涉及文件(每个 3 处,共 42 处,14 文件 +42 -42) - activation/log_softmax_v2 - activation/confusion_softmax_grad - index/broadcast_gradient_args - norm/add_layer_norm_quant - norm/add_rms_norm_dynamic_quant_v2 - norm/batch_norm - norm/group_norm_v2 - norm/instance_norm - norm/layer_norm - norm/layer_norm_v3 - norm/sync_batch_norm_backward_elemt - norm/sync_batch_norm_backward_reduce - norm/sync_batch_norm_gather_stats - norm/sync_bn_training_update ## 关联的Issue - #4973 ## 测试 - 仅日志级别字符串修改,无逻辑变更,不影响测试编译与运行结果。 - 通过 git diff 逐项核对:仅 - INFO - → - ERROR -,消息文本与参数不变。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9003 | 1 个月前 | |
fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8943 merge q_work8 into master fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 CANN 9.0.0 中 ReduceType 枚举移至 AscendC::Reg 命名空间,arch35 算子文件中通过 using namespace AscendC 已无法将 ReduceType 引入当前作用域,导致编译时 ReduceType::SUM/ReduceType::MAX 无法解析。 本次改动将 arch35 目录下 62 个算子头文件中的 ReduceType::SUM(502 处)和 ReduceType::MAX(32 处)显式限定为 AscendC::Reg::ReduceType::SUM 和 AscendC::Reg::ReduceType::MAX,修复编译兼容性问题。 涉及的算子模块:activation、norm、loss、index、quant,均为 arch35 架构专用文件,不影响其他架构。 ## 关联的Issue #4937 ## 测试 在 CANN 9.0.0(ascend950)环境下对 62 个文件涉及的算子进行编译验证,全部编译通过。 ## 文档更新 无文档更新,本次为编译兼容性修复。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8943 | 1 个月前 | |
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 | 2 个月前 | |
[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 | 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 | 1 个月前 | |
Add fallback registration for quant_update_scatter/scatter_nd_update/masked_softmax_with_rel_pos_bia Co-authored-by: lijingxuan<lijingxuan13@huawei.com> # message auto-generated for no-merge-commit merge: !8765 merge Add_new_operators into master Add fallback registration for quant_update_scatter/scatter_nd_update/masked_softmax_with_rel_pos_bia Created-by: 2401_87820340 Commit-by: lijingxuan Merged-by: cann-robot Description: ## 描述 本 PR 为以下三个算子新增图模式 fallback 注册: - quant_update_scatter - scatter_nd_update - masked_softmax_with_rel_pos_bias 将 canndev 中对应的 fallback 实现迁移至 ops-nn。执行函数通过 CANN_OPS_OPB_SYN_EXEC_ACLNN 调用对应 ACLNN API,并显式传入 hostApiCtx。 本次迁移保留了原有 ACLNN API、输入及属性索引、参数顺序和错误处理逻辑,不修改算子公共接口及计算语义。 ## 关联的Issue 无关联 Issue。 ## 测试 已完成以下检查: - 对三个新增 CPP 文件执行 clang-format 18.1.8,检查通过。 - 对三个新增 CPP 文件执行完整 pre-commit,所有检查通过。 - 执行 git diff --check,检查通过。 - 检查三个文件均使用 CANN_OPS_OPB_SYN_EXEC_ACLNN,不存在旧的 EXEC_OPAPI_CMD。 - GitCode 远端 Git Hooks 检查通过。 Linux/CANN 编译、opgraph UT 和软件包构建由 PR 流水线继续验证。 ## 文档更新 本 PR 不包含文档更新。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8765 | 1 个月前 | |
fix(arch35): 修复 InTrainingUpdateGrad NDC1HWC0 与 MultiAddRmsNormDynamicQuant 动态输入取值;8 算子 golden 适配三方对比 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !8492 merge fix/op-binary-json-missing into master fix(arch35): 修复 InTrainingUpdateGrad NDC1HWC0 与 MultiAddRmsNormDynamicQuant 动态输入取值;8 算子 golden 适配三方对比 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 按照ttk最新支持规范更新ttk golden ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4685 ## 测试 st ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8492 | 2 个月前 | |
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 | 1 个月前 | |
perf: optimize CalculateSquareReduceSumCommon tail loop for instruction-level parallelism Co-authored-by: liangyuhua<liangyuhua4@huawei.com> # message auto-generated for no-merge-commit merge: !8181 merge perf/optimize-calculate-square-reduce-sum into master perf: optimize CalculateSquareReduceSumCommon tail loop for instruction-level parallelism Created-by: liangyuhua Commit-by: liangyuhua Merged-by: cann-robot Description: ## 描述 优化 reduce_common_regbase.h 中 CalculateSquareReduceSumCommon 函数的 tail 循环,提升指令级并行度。 ### 改动内容 1. **重排 Load/Mul 指令顺序**:Load x → Mul x → Load xFold → Mul xFold(原为 Load x → Load xFold → Mul x → Mul xFold),使 x 的 Mul 可以与 xFold 的 Load 重叠执行。 2. **合并 tail 两阶段循环为统一循环**:将原来的 tailFullLoops(整除迭代)+ tailRemain(余数迭代)两阶段循环替换为统一的 tailCeilLoops 循环,使用 UpdateMask(sregTail) 自动递减掩码,无需单独处理余数。 3. **移除 ShiftLefts 调用**:原代码用 ShiftLefts(.., pregLoop) 将越界元素清零,现在 UpdateMask 已正确处理掩码,不再需要。 4. **重命名循环变量**:firstFlodWithOutAddLoops 提升可读性。 ## 关联的Issue #4505 ## 测试 在 Ascend950 上使用 TTK (ops-test-kit) 对 6 个 rmsnorm 系列算子进行了全面验证,每个算子 50 条 case,共 300 条,覆盖 CalculateSquareReduceSumCommon 的所有分支。 ### 分支覆盖 - **LAST_LOOP_NUMS=1** (reduceBranchNum 129~8192):26 条/算子 - **LAST_LOOP_NUMS=2** (reduceBranchNum 8193~16384):24 条/算子 - **tail 场景**:单次部分迭代、单次完整迭代、多次完整迭代、多次部分迭代,4 种全覆盖 - **dtype 覆盖**:fp16 + bf16 - **add_rms_norm_dynamic_mx_quant**:fp8 (e4m3fn/e5m2) + fp4 (e2m1) 两条路径全覆盖 ### 性能对比结果 每个算子 50 条 case,--run 5 中位数逐条对比。对首轮退化 case 用 --run 20 复检降噪,复检结果替换首轮结果: | 算子 | 用例数 | 提升 | 退化 | 持平 | 精度PASS | 平均变化 | |------|--------|------|------|------|---------|---------| | rms_norm | 50 | 39 | 11 | 0 | YES | -2.6% | | add_rms_norm_cast | 50 | 29 | 20 | 1 | YES | -0.3% | | add_rms_norm_quant | 50 | 37 | 13 | 0 | YES | -1.9% | | add_rms_norm_dynamic_quant | 50 | 24 | 24 | 2 | YES | -0.1% | | rms_norm_quant_v2 | 50 | 40 | 10 | 0 | YES | -2.0% | | add_rms_norm_dynamic_mx_quant | 50 | 34 | 15 | 1 | YES | -0.7% | | **TOTAL** | **300** | **203** | **93** | **4** | **YES** | **-1.3%** | - 所有 300 条 case 精度检查通过(rms_norm 和 add_rms_norm_cast 有 golden plugin 验证,其余编译执行 PASS) - 性能提升的 case(203,68%)远多于退化的 case(93,31%),总体平均提升 1.3% - 退化的 case 幅度均在 ±2% 以内,属于测量噪声范围 ## 文档更新 无需更新文档。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8181 | 2 个月前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 3 个月前 | |
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 | 2 个月前 | |
feat: rename op_api_def.h to op_api_def_nn.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8360 merge rename_opapidef into master feat: rename op_api_def.h to op_api_def_nn.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 本次改动将 op_api/op_api_def.h 重命名为 op_api/op_api_def_nn.h,并同步更新了所有引用该头文件的源文件与测试文件中的 #include 路径,共涉及 161 个文件。 改动原因:将 op_api 定义头文件统一命名为 op_api_def_nn.h,以更好地体现其所属模块(NN 算子)的语义,便于后续与其他模块的头文件区分管理。 此外,在提交过程中发现 4 个文件(aclnn_foreach_addcmul_scalar_v2.cpp、aclnn_max_unpool3d.cpp、test_aclnn_addmv.cpp、test_aclnn_fast_batchnorm_backward.cpp)的许可证头使用了非标准的旧格式,导致 OAT 合规检查失败。本次一并将其更新为标准的 CANN 开源许可证头格式,确保通过合规校验。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4954 ## 测试 - 通过 pre-commit 钩子校验:trailing whitespace、end-of-file-fixer、clang-format 均通过 - 通过 OAT 合规检查(161 个文件全部通过) - 本次为头文件重命名改动,不涉及逻辑变更,编译依赖关系保持不变 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:头文件重命名与许可证头修复 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8360 | 1 个月前 | |
fix(norm): RmsNorm/RmsNormGrad arch35/regbase 去除 VL 与 UB block 硬编码 Co-authored-by: liangyuhua<liangyuhua4@huawei.com> # message auto-generated for no-merge-commit merge: !8871 merge pr8900-norm-rms-norm-vl-dehard into master fix(norm): RmsNorm/RmsNormGrad arch35/regbase 去除 VL 与 UB block 硬编码 Created-by: liangyuhua Commit-by: liangyuhua Merged-by: cann-robot Description: ## 描述 按 VL / UB block 动态获取规范,将 **RmsNorm、RmsNormGrad** 在 **arch35 / regbase(950)路径**写死的 VL(64)、UB block(8/16/32 元素数)、全载/二分累加阈值(16384)改为平台接口派生,并处理评审意见。 **Host 侧**: Ops::Base::GetVRegSize(context) / Ops::Base::GetUbBlockSize(context) **Kernel 侧**:platform::GetVRegSize() / platform::GetUbBlockSize() | 原字面量 | 改后表达式 | 值(当前平台 950) | |---|---|---| | FULL_LOAD_R_MAX = 16384 | vectorLength * vectorLength * MULTI_FACTOR_2 * MULTI_FACTOR_2 | 16384 | | FLOAT_PER_REAPEAT / mulLoop 除数 = 64 | GetVRegSize() / sizeof(float) | 64 | | ONCE_VECTOR_SIZE = 256(原 4 * V_LENGTH) | RmsNormGradRegbase::GetVRegSize() | 256 | | FLOAT_NUM_BLOCK / dstRepStride 除数 = 8 | GetUbBlockSize() / sizeof(float) | 8 | | HALF_NUM_BLOCK = 16 | GetUbBlockSize() / sizeof(half) | 16 | | FLOAT_NUM_2VL = 128(原 2 * V_LENGTH) | V_LENGTH + V_LENGTH | 128 | **本次改动数值全等价,无行为变更**(当前平台 VRegSize = 256B、UB block = 32B)。 **变更范围**:严格限定 arch35 / regbase(950)路径,共 4 个文件 (rms_norm_tiling.h、rms_norm_tiling_arch35.cpp、arch35/rms_norm_regbase_split_d.h、 rms_norm_grad/op_kernel/arch35/rms_norm_grad_regbase_common.h); 公共 vector 路径(rms_norm_tiling.cpp 等)不随本 PR 改动。 **评审意见处理**: - fullLoadRMax 用 MULTI_FACTOR_2 表达(原 LOG_2 语义含糊) - ONCE_VECTOR_SIZE 直接取 RmsNormGradRegbase::GetVRegSize(),不用 4 * V_LENGTH 伪派生 - FLOAT_NUM_2VL = V_LENGTH + V_LENGTH - rms_norm_regbase_split_d.h 删除未使用的 loop 变量 ## 关联的Issue #4849 ## 测试 - Ascend950 真机 ttk ST(BIV:build.sh --pkg --soc=ascend950 + vendor 安装 + -b=release, 与 CI 一致的 --compare close): - RmsNorm 全量 **45/45 通过**(BIN_GOLD PASS) - RmsNormGrad 全量 **48/48 通过**(BIN_GOLD PASS;其中 fp32/fp16 用例的 golden 需仓库既有 tests/assets/golden.py 修复 torch dtype 转换缺陷(存量问题,非本 PR 范围), 修复后可全量通过,修复已单独验证) - kernel binary:ascend950(arch35)RmsNorm / RmsNormGrad 编译通过 - host tiling 编译通过 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:去除 VL / UB block 平台参数硬编码,行为等价的可维护性重构 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8871 | 1 个月前 | |
docs: 修正 rmsnorm 系列算子 rstdOut shape 描述 Co-authored-by: liangyuhua<liangyuhua4@huawei.com> # message auto-generated for no-merge-commit merge: !9008 merge fix/rstdout-shape-doc into master docs: 修正 rmsnorm 系列算子 rstdOut shape 描述 Created-by: liangyuhua Commit-by: liangyuhua Merged-by: cann-robot Description: ## 描述 修正 rmsnorm 系列算子 rstdOut 输出的 shape 描述,补充"维度数需与输入保持一致、需要norm的维度均为1"的说明,并增加 shape 关系举例。 原描述仅提及"shape前几维保持一致",未说明维度数需一致及norm维度为1的要求,与 kernel infershape 实际逻辑不符,容易导致用户对 rstdOut shape 理解错误。 **涉及算子**(4 个文件): | 算子 | 输入参数 | gamma 维度约束 | |------|----------|---------------| | add_rms_norm_cast | x1 | 1-8 维 | | inplace_add_rms_norm | x1Ref | 1-8 维 | | add_rms_norm_dynamic_mx_quant | x1 | 1 维 | | rms_norm_dynamic_mx_quant | x | 1 维 | **修正前**(以 add_rms_norm_cast 为例): > shape与入参x1的shape前几维保持一致,前几维指x1的维度减去gamma的维度,表示不需要norm的维度。 **修正后**: > 维度数与入参x1保持一致,其中不需要norm的维度(x1的维度减去gamma的维度后的前几维)与x1对应维度保持一致,需要norm的维度(与gamma维度数相同的后几维)均为1。rstdOut shape与x1 shape、gamma shape关系举例:若x1 shape为(2,3,4,8),gamma shape为(8),则rstdOut shape为(2,3,4,1);若x1 shape为(2,3,4,8),gamma shape为(4,8),则rstdOut shape为(2,3,1,1)。 与 infershape 代码逻辑完全一致: cpp rstdShape->SetDimNum(xDimNum); for (size_t i = 0; i < xDimNum; i++) { if (i < xDimNum - gammaDimNum) { rstdShape->SetDim(i, x1Shape->GetDim(i)); // 不需要norm的维度 } else { rstdShape->SetDim(i, 1); // 需要norm的维度均为1 } } ## 关联的Issue #4974 ## 测试 本次变更仅涉及文档描述,无代码改动,无需测试。 ## 文档更新 - norm/add_rms_norm_cast/docs/aclnnAddRmsNormCast.md - norm/inplace_add_rms_norm/docs/aclnnInplaceAddRmsNorm.md - norm/add_rms_norm_dynamic_mx_quant/docs/aclnnAddRmsNormDynamicMxQuant.md - norm/rms_norm_dynamic_mx_quant/docs/aclnnRmsNormDynamicMxQuant.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9008 | 1 个月前 | |
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 | 2 个月前 | |
fix(norm): RmsNorm/RmsNormGrad arch35/regbase 去除 VL 与 UB block 硬编码 Co-authored-by: liangyuhua<liangyuhua4@huawei.com> # message auto-generated for no-merge-commit merge: !8871 merge pr8900-norm-rms-norm-vl-dehard into master fix(norm): RmsNorm/RmsNormGrad arch35/regbase 去除 VL 与 UB block 硬编码 Created-by: liangyuhua Commit-by: liangyuhua Merged-by: cann-robot Description: ## 描述 按 VL / UB block 动态获取规范,将 **RmsNorm、RmsNormGrad** 在 **arch35 / regbase(950)路径**写死的 VL(64)、UB block(8/16/32 元素数)、全载/二分累加阈值(16384)改为平台接口派生,并处理评审意见。 **Host 侧**: Ops::Base::GetVRegSize(context) / Ops::Base::GetUbBlockSize(context) **Kernel 侧**:platform::GetVRegSize() / platform::GetUbBlockSize() | 原字面量 | 改后表达式 | 值(当前平台 950) | |---|---|---| | FULL_LOAD_R_MAX = 16384 | vectorLength * vectorLength * MULTI_FACTOR_2 * MULTI_FACTOR_2 | 16384 | | FLOAT_PER_REAPEAT / mulLoop 除数 = 64 | GetVRegSize() / sizeof(float) | 64 | | ONCE_VECTOR_SIZE = 256(原 4 * V_LENGTH) | RmsNormGradRegbase::GetVRegSize() | 256 | | FLOAT_NUM_BLOCK / dstRepStride 除数 = 8 | GetUbBlockSize() / sizeof(float) | 8 | | HALF_NUM_BLOCK = 16 | GetUbBlockSize() / sizeof(half) | 16 | | FLOAT_NUM_2VL = 128(原 2 * V_LENGTH) | V_LENGTH + V_LENGTH | 128 | **本次改动数值全等价,无行为变更**(当前平台 VRegSize = 256B、UB block = 32B)。 **变更范围**:严格限定 arch35 / regbase(950)路径,共 4 个文件 (rms_norm_tiling.h、rms_norm_tiling_arch35.cpp、arch35/rms_norm_regbase_split_d.h、 rms_norm_grad/op_kernel/arch35/rms_norm_grad_regbase_common.h); 公共 vector 路径(rms_norm_tiling.cpp 等)不随本 PR 改动。 **评审意见处理**: - fullLoadRMax 用 MULTI_FACTOR_2 表达(原 LOG_2 语义含糊) - ONCE_VECTOR_SIZE 直接取 RmsNormGradRegbase::GetVRegSize(),不用 4 * V_LENGTH 伪派生 - FLOAT_NUM_2VL = V_LENGTH + V_LENGTH - rms_norm_regbase_split_d.h 删除未使用的 loop 变量 ## 关联的Issue #4849 ## 测试 - Ascend950 真机 ttk ST(BIV:build.sh --pkg --soc=ascend950 + vendor 安装 + -b=release, 与 CI 一致的 --compare close): - RmsNorm 全量 **45/45 通过**(BIN_GOLD PASS) - RmsNormGrad 全量 **48/48 通过**(BIN_GOLD PASS;其中 fp32/fp16 用例的 golden 需仓库既有 tests/assets/golden.py 修复 torch dtype 转换缺陷(存量问题,非本 PR 范围), 修复后可全量通过,修复已单独验证) - kernel binary:ascend950(arch35)RmsNorm / RmsNormGrad 编译通过 - host tiling 编译通过 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:去除 VL / UB block 平台参数硬编码,行为等价的可维护性重构 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8871 | 1 个月前 | |
fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !8943 merge q_work8 into master fix: 显式限定 ReduceType 命名空间以兼容 CANN 9.0.0 (ascend950) Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 CANN 9.0.0 中 ReduceType 枚举移至 AscendC::Reg 命名空间,arch35 算子文件中通过 using namespace AscendC 已无法将 ReduceType 引入当前作用域,导致编译时 ReduceType::SUM/ReduceType::MAX 无法解析。 本次改动将 arch35 目录下 62 个算子头文件中的 ReduceType::SUM(502 处)和 ReduceType::MAX(32 处)显式限定为 AscendC::Reg::ReduceType::SUM 和 AscendC::Reg::ReduceType::MAX,修复编译兼容性问题。 涉及的算子模块:activation、norm、loss、index、quant,均为 arch35 架构专用文件,不影响其他架构。 ## 关联的Issue #4937 ## 测试 在 CANN 9.0.0(ascend950)环境下对 62 个文件涉及的算子进行编译验证,全部编译通过。 ## 文档更新 无文档更新,本次为编译兼容性修复。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8943 | 1 个月前 | |
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 | 1 个月前 | |
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 | 1 个月前 | |
modified md files (update product labels) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !8256 merge master into master modified md files (update product labels) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Update product labels. ## 关联的Issue [#4574](https://gitcode.com/cann/ops-nn/issues/4574) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 norm/group_norm_swish_grad/docs/aclnnGroupNormSwishGrad.md norm/rms_norm_quant_v3/docs/aclnnRmsNormQuantV3.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8256 | 2 个月前 | |
fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !9003 merge fix-geir-test-log-level-mismatch into master fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 14 个算子 geir 测试文件中日志级别与描述不一致的问题:3 类失败消息被误标记为 INFO,而同文件内其他失败消息均正确标记为 ERROR,构成内部不一致。本次将这 3 类失败消息的日志级别从 INFO 改为 ERROR。 ### 改动原因 geir 测试文件统一使用 printf("%s - LEVEL - [XIR]: message") 格式输出日志。在以下 3 类失败分支中,消息内容明确表示失败,但日志级别却写成 INFO,与同文件内其他失败消息(如 Generate input data failed、Create ir session using build options failed、Session add ir compute graph failed、Output verification FAILED,均标记为 ERROR)不一致,会误导日志排查: - Initialize ge using ge global options failed - Run graph failed - Finalize ir graph session failed ### 改动方法 仅将上述 3 类失败消息的日志级别标签 - INFO - 改为 - ERROR -,不修改任何测试逻辑、消息文本或参数。 ### 涉及文件(每个 3 处,共 42 处,14 文件 +42 -42) - activation/log_softmax_v2 - activation/confusion_softmax_grad - index/broadcast_gradient_args - norm/add_layer_norm_quant - norm/add_rms_norm_dynamic_quant_v2 - norm/batch_norm - norm/group_norm_v2 - norm/instance_norm - norm/layer_norm - norm/layer_norm_v3 - norm/sync_batch_norm_backward_elemt - norm/sync_batch_norm_backward_reduce - norm/sync_batch_norm_gather_stats - norm/sync_bn_training_update ## 关联的Issue - #4973 ## 测试 - 仅日志级别字符串修改,无逻辑变更,不影响测试编译与运行结果。 - 通过 git diff 逐项核对:仅 - INFO - → - ERROR -,消息文本与参数不变。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9003 | 1 个月前 | |
fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !9003 merge fix-geir-test-log-level-mismatch into master fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 14 个算子 geir 测试文件中日志级别与描述不一致的问题:3 类失败消息被误标记为 INFO,而同文件内其他失败消息均正确标记为 ERROR,构成内部不一致。本次将这 3 类失败消息的日志级别从 INFO 改为 ERROR。 ### 改动原因 geir 测试文件统一使用 printf("%s - LEVEL - [XIR]: message") 格式输出日志。在以下 3 类失败分支中,消息内容明确表示失败,但日志级别却写成 INFO,与同文件内其他失败消息(如 Generate input data failed、Create ir session using build options failed、Session add ir compute graph failed、Output verification FAILED,均标记为 ERROR)不一致,会误导日志排查: - Initialize ge using ge global options failed - Run graph failed - Finalize ir graph session failed ### 改动方法 仅将上述 3 类失败消息的日志级别标签 - INFO - 改为 - ERROR -,不修改任何测试逻辑、消息文本或参数。 ### 涉及文件(每个 3 处,共 42 处,14 文件 +42 -42) - activation/log_softmax_v2 - activation/confusion_softmax_grad - index/broadcast_gradient_args - norm/add_layer_norm_quant - norm/add_rms_norm_dynamic_quant_v2 - norm/batch_norm - norm/group_norm_v2 - norm/instance_norm - norm/layer_norm - norm/layer_norm_v3 - norm/sync_batch_norm_backward_elemt - norm/sync_batch_norm_backward_reduce - norm/sync_batch_norm_gather_stats - norm/sync_bn_training_update ## 关联的Issue - #4973 ## 测试 - 仅日志级别字符串修改,无逻辑变更,不影响测试编译与运行结果。 - 通过 git diff 逐项核对:仅 - INFO - → - ERROR -,消息文本与参数不变。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9003 | 1 个月前 | |
fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !9003 merge fix-geir-test-log-level-mismatch into master fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 14 个算子 geir 测试文件中日志级别与描述不一致的问题:3 类失败消息被误标记为 INFO,而同文件内其他失败消息均正确标记为 ERROR,构成内部不一致。本次将这 3 类失败消息的日志级别从 INFO 改为 ERROR。 ### 改动原因 geir 测试文件统一使用 printf("%s - LEVEL - [XIR]: message") 格式输出日志。在以下 3 类失败分支中,消息内容明确表示失败,但日志级别却写成 INFO,与同文件内其他失败消息(如 Generate input data failed、Create ir session using build options failed、Session add ir compute graph failed、Output verification FAILED,均标记为 ERROR)不一致,会误导日志排查: - Initialize ge using ge global options failed - Run graph failed - Finalize ir graph session failed ### 改动方法 仅将上述 3 类失败消息的日志级别标签 - INFO - 改为 - ERROR -,不修改任何测试逻辑、消息文本或参数。 ### 涉及文件(每个 3 处,共 42 处,14 文件 +42 -42) - activation/log_softmax_v2 - activation/confusion_softmax_grad - index/broadcast_gradient_args - norm/add_layer_norm_quant - norm/add_rms_norm_dynamic_quant_v2 - norm/batch_norm - norm/group_norm_v2 - norm/instance_norm - norm/layer_norm - norm/layer_norm_v3 - norm/sync_batch_norm_backward_elemt - norm/sync_batch_norm_backward_reduce - norm/sync_batch_norm_gather_stats - norm/sync_bn_training_update ## 关联的Issue - #4973 ## 测试 - 仅日志级别字符串修改,无逻辑变更,不影响测试编译与运行结果。 - 通过 git diff 逐项核对:仅 - INFO - → - ERROR -,消息文本与参数不变。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9003 | 1 个月前 | |
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 | 3 个月前 | |
feat: rename op_api_def.h to op_api_def_nn.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8360 merge rename_opapidef into master feat: rename op_api_def.h to op_api_def_nn.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 本次改动将 op_api/op_api_def.h 重命名为 op_api/op_api_def_nn.h,并同步更新了所有引用该头文件的源文件与测试文件中的 #include 路径,共涉及 161 个文件。 改动原因:将 op_api 定义头文件统一命名为 op_api_def_nn.h,以更好地体现其所属模块(NN 算子)的语义,便于后续与其他模块的头文件区分管理。 此外,在提交过程中发现 4 个文件(aclnn_foreach_addcmul_scalar_v2.cpp、aclnn_max_unpool3d.cpp、test_aclnn_addmv.cpp、test_aclnn_fast_batchnorm_backward.cpp)的许可证头使用了非标准的旧格式,导致 OAT 合规检查失败。本次一并将其更新为标准的 CANN 开源许可证头格式,确保通过合规校验。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4954 ## 测试 - 通过 pre-commit 钩子校验:trailing whitespace、end-of-file-fixer、clang-format 均通过 - 通过 OAT 合规检查(161 个文件全部通过) - 本次为头文件重命名改动,不涉及逻辑变更,编译依赖关系保持不变 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:头文件重命名与许可证头修复 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8360 | 1 个月前 | |
fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Co-authored-by: sun-yibo1<sunyibo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !9003 merge fix-geir-test-log-level-mismatch into master fix(geir-test): 修复 geir 测试日志级别与描述不一致(INFO→ERROR) Created-by: sun-yibo1 Commit-by: sun-yibo1 Merged-by: cann-robot Description: ## 描述 修复 14 个算子 geir 测试文件中日志级别与描述不一致的问题:3 类失败消息被误标记为 INFO,而同文件内其他失败消息均正确标记为 ERROR,构成内部不一致。本次将这 3 类失败消息的日志级别从 INFO 改为 ERROR。 ### 改动原因 geir 测试文件统一使用 printf("%s - LEVEL - [XIR]: message") 格式输出日志。在以下 3 类失败分支中,消息内容明确表示失败,但日志级别却写成 INFO,与同文件内其他失败消息(如 Generate input data failed、Create ir session using build options failed、Session add ir compute graph failed、Output verification FAILED,均标记为 ERROR)不一致,会误导日志排查: - Initialize ge using ge global options failed - Run graph failed - Finalize ir graph session failed ### 改动方法 仅将上述 3 类失败消息的日志级别标签 - INFO - 改为 - ERROR -,不修改任何测试逻辑、消息文本或参数。 ### 涉及文件(每个 3 处,共 42 处,14 文件 +42 -42) - activation/log_softmax_v2 - activation/confusion_softmax_grad - index/broadcast_gradient_args - norm/add_layer_norm_quant - norm/add_rms_norm_dynamic_quant_v2 - norm/batch_norm - norm/group_norm_v2 - norm/instance_norm - norm/layer_norm - norm/layer_norm_v3 - norm/sync_batch_norm_backward_elemt - norm/sync_batch_norm_backward_reduce - norm/sync_batch_norm_gather_stats - norm/sync_bn_training_update ## 关联的Issue - #4973 ## 测试 - 仅日志级别字符串修改,无逻辑变更,不影响测试编译与运行结果。 - 通过 git diff 逐项核对:仅 - INFO - → - ERROR -,消息文本与参数不变。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9003 | 1 个月前 | |
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 | 10 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 10 个月前 |