本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
编译任务机器规格调整以及冒烟脚本调整 Co-authored-by: chenyajie<chenyajie6@huawei.com> # message auto-generated for no-merge-commit merge: !8787 merge master into master 编译任务机器规格调整以及冒烟脚本调整 Created-by: yajie_caroline Commit-by: chenyajie Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8787 | 1 个月前 | |
test(selu): 补充 GEIR 静态/动态 example 数值校验 Co-authored-by: aqt666<2016141505@qq.com> Co-authored-by: raywcm<wcm@njust.edu.cn> # message auto-generated for no-merge-commit merge: !9176 merge cherry-pick-mr-8972-1787642179305-auto into master test(selu): 补充 GEIR 静态/动态 example 数值校验 Created-by: aqt666 Commit-by: aqt666;raywcm Merged-by: cann-robot Description: ## 描述 补充 SELU 算子 GEIR 静态和动态 example 的数值校验,验证算子执行结果与预期结果一致,覆盖静态 Shape 和动态 Shape 场景。 同时根据 pre-commit 检查结果,对相关 C++ 文件执行了文件末尾换行修复和 clang-format 格式化。 ## 关联的Issue 无。 ## 测试 1. 执行 SELU GEIR 静态 example。 2. 执行 SELU GEIR 动态 example。 3. 校验输出 Shape、数据类型和计算结果。 4. 执行 pre-commit 检查,end-of-file-fixer 和 clang-format 均通过。 5. 通过 compile 评论触发 CI 门禁,并执行冒烟测试。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:补充 SELU 算子 GEIR 静态和动态 example 数值校验测试 ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9176 | 1 个月前 | |
matmul fallback Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !8517 merge pkg into master matmul fallback Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 从canndev迁移matmul的fallback 本 PR 从 canndev 迁移 matmul 系列算子的 fallback 执行路径,为 BatchMatMulV3、MatMulV3(含 BatchMatMul/BatchMatMulV2、MatMul/MatMulV2)新增两阶段 fallback 注册与执行:通过 IMPL_OP(...).Op2StageExecuteFuncs 将各算子注册到 fallback 框架,执行时将 GE 的 gert::Tensor 转换为 ACL tensor,依据输入维度、是否存在 bias 以及 HF32/精度模式分派到 aclnnAddmm、aclnnBaddbmm、aclnnBatchMatMul、aclnnMatmul、aclnnMm 等 aclnn API,并同步升级 opbase.cmake 中的 OPBASE_TAG_ID 以获取相关接口支持。整体改动聚焦于接口/数据结构与核心执行流程,不涉及业务背景变更。 主要改动 新增通用 fallback 公共头文件 common/inc/op_graph/fallback_common_2stages_nn.h:定义 aclCubeMathType(KEEP_DTYPE/USE_FP16/USE_HF32 等)与 OpImplMode(含 ENABLE_HF32)枚举及映射表,实现 GetGlobalPrecisionMode、IsMatMulV3Hf32Enabled(读取 MatMulV3 的 opImplMode 属性位掩码)、GetMatmulPrecisionMode(综合 opImplMode 与全局 allow_hf32 选项)、GetMathType(计算 cubeMathType 0~3)、ConvertMmType(将 GE tensor 的 shape/stride 转为 ACL tensor,并在 transpose 为真时交换最后两维)以及通用的两阶段执行入口 ExecuteOpLaunch(获取 workspace 与 stream 并调用 op_api_func 完成启动)。 新增 BatchMatMulV3 fallback 执行 matmul/batch_mat_mul_v3/op_graph/batch_mat_mul_v3_fallback.cpp:实现 BatchmatmulExecuteFunc,读取 self/mat2/bias 输入与 transSelf/transMat2 属性,根据 self/mat2 维度(2D/3D)与是否存在 bias,分别调用 aclnnAddmm、aclnnBaddbmm、aclnnBatchMatMul 或 aclnnMatmul,并通过 IMPL_OP(BatchMatMul)、IMPL_OP(BatchMatMulV2) 完成注册。 新增 MatMulV3 fallback 执行 matmul/mat_mul_v3/op_graph/mat_mul_v3_fallback.cpp:实现 MmExecuteFunc,根据是否存在 bias 分派到 aclnnAddmm(带 beta/alpha 标量)或 aclnnMm,并通过 IMPL_OP(MatMul)、IMPL_OP(MatMulV2)、IMPL_OP(MatMulV3) 完成注册。 更新三方依赖版本 cmake/third_party/opbase.cmake:将 OPBASE_TAG_ID 从 40cc7bed... 更新为 0c5e2579...,以引入 fallback 所需的 ops-base 接口实现。 ## 关联的Issue [#5005](https://gitcode.com/cann/ops-nn/issues/5005) ## 测试 图模式回调 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8517 | 1 个月前 | |
下一代支持BN3DTrainingReduceGrad && BatchNormExt2格式校验修改 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !9225 merge bn3_d_training_reduce_grad into master 下一代支持BN3DTrainingReduceGrad Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 下一代新增支持BN3DTrainingReduceGrad,用于计算3D Batch Normalization训练反传的收尾梯度 修复BatchNormExt2算子的格式校验问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5223 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT,ST,geir通路均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增算子的README.md文档,在op_list.md中补充该算子 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9225 | 1 个月前 | |
feat: 新增NPUClearFloatStatus算子 Co-authored-by: wuchengwen_oh<wuchengwen4@huawei.com> # message auto-generated for no-merge-commit merge: !9165 merge add_npu_clear_float_status into master feat: 新增NPUClearFloatStatus算子 Created-by: wuchengwen_oh Commit-by: wuchengwen_oh Merged-by: cann-robot Description: ## 描述 新增 NPUClearFloatStatus 算子到 ops-nn control 分类(与同族 npu_alloc_float_status 一致)。算子功能为清除 NPU 浮点溢出状态寄存器,输出固定 8 个 float32 零值。芯片支持 Ascend 950PR/950DT,使用 AscendC SIMT 语言实现。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5116 ## 测试 - UT: 2/2 PASS(tiling + infershape) - Example: PASS - TTK 黑盒 kernel: 91/91 PASS - TTK 黑盒 GEIR: 91/91 PASS - TTK 白盒 kernel: 108/108 PASS - TTK 网络 kernel: 12/12 PASS ## 文档更新 - 新增 control/npu_clear_float_status/README.md - 新增 docs/zh/op_list.md 条目 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9165 | 1 个月前 | |
Conv3D DX/DW算子内部API整改,将DivCeil/ConstCeil/AlignUp/Ceil替换为CeilDivision Co-authored-by: cheng_gao<cheng.gao@huawei.com> # message auto-generated for no-merge-commit merge: !9252 merge repeat_filename_0819 into master Conv3D DX/DW算子内部API整改,将DivCeil/ConstCeil/AlignUp/Ceil替换为CeilDivision Created-by: cheng_gao Commit-by: cheng_gao Merged-by: cann-robot Description: ## 描述 Conv3D DX/DW算子内部API整改,将DivCeil/ConstCeil/AlignUp/Ceil替换为CeilDivision ## 关联的Issue CleanCode,不涉及Issue ## 测试 RDV验证功能 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x] 其他,请描述:CleanCode ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9252 | 1 个月前 | |
Add InplaceApplyFtrl ops Co-authored-by: zhaixiao<zhaixiao1@huawei.com> # message auto-generated for no-merge-commit merge: !8523 merge feat/inplace-apply-ftrl into master Add InplaceApplyFtrl ops Created-by: Onthetreeoh Commit-by: zhaixiao Merged-by: cann-robot Description: InplaceApplyFtrl 实现 FTRL-Proximal(Follow The Regularized Leader)优化器的单步参数更新,用于稀疏特征场景下的在线学习与大规模推荐模型训练。算子读取当前权重 var、梯度平方累积器 accum、线性累加器 linear 与当前步梯度 grad,按 FTRL 公式就地更新 var、accum、linear 三个状态量;lr、l1、l2、lr_power 为标量超参。内部计算固定使用 fp32,输入与输出可为 bfloat16、float16 或 float32。 标准 V1 更新公式为: $$ \begin{aligned} accum_{new} &= accum + grad \cdot grad \\ \sigma &= |accum_{new}|^{-lr\_power} - |accum|^{-lr\_power} \\ linear_{new} &= linear + grad - \frac{\sigma}{lr} \cdot var \\ y &= \frac{|accum_{new}|^{-lr\_power}}{lr} + 2 \cdot l2 \\ x &= l1 \cdot sign(linear_{new}) - linear_{new} \\ var &= \begin{cases} x / y, & |linear_{new}| > l1 \\ 0, & |linear_{new}| \le l1 \end{cases} \\ accum &= accum_{new},\quad linear = linear_{new} \end{aligned} $$ See merge request: cann/ops-nn!8523 | 1 个月前 | |
fix TorchNPU Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !7243 merge master into master fix TorchNPU Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 ① torch_npu名称合一TorchNPU ②《acl API》手册更名修改 ③ link修改commerical为community ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3951 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7243 | 2 个月前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 1 个月前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 1 个月前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 1 个月前 | |
docs: 更新Shrink/DataFormatDimMap/ActULQClampGrad README产品支持情况 Co-authored-by: Coder_Nerd<shishuai5@huawei.com> # message auto-generated for no-merge-commit merge: !9343 merge docs/heaviside-op-api-support into master docs: 更新Shrink/DataFormatDimMap/ActULQClampGrad README产品支持情况 Created-by: Coder_Nerd Commit-by: Coder_Nerd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Shrink/DataFormatDimMap/ActULQClampGrad README产品支持情况与实际支持情况不符合 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5255 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9343 | 1 个月前 | |
pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Co-authored-by: yulinwu<3130311700@qq.com> # message auto-generated for no-merge-commit merge: !9142 merge reg-migration-pooling-loss into master pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 Created-by: qq_64396346 Commit-by: yulinwu Merged-by: cann-robot Description: ## 描述 MicroAPI → Reg 命名空间迁移: pooling/loss/common CANN 头文件 kernel_macros.h 中存在命名空间别名 namespace MicroAPI = Reg;,MicroAPI 只是 Reg 的别名。为统一命名规范,将 nn 仓所有算子 kernel 代码中的 MicroAPI 替换为 Reg,并通过对比替换前后 binary .o 文件 MD5 验证替换无影响。 覆盖范围 - nn 主仓目录:pooling,loss,common ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5098](https://gitcode.com/cann/ops-nn/issues/5098) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: pooling,loss,common目录下MicroAPI → Reg 命名空间迁移 See merge request: cann/ops-nn!9142 | 1 个月前 | |
fix sub_block_idx | 1 个月前 | |
BN3DTrainingUpdate和BatchNormExt2算子golden支持三方精度校验 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !9128 merge golden_fix into master BN3DTrainingUpdate和BatchNormExt2算子golden文件修改 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为BN3DTrainingUpdate和BatchNormExt2算子的golden补充third_party部分内容,支持自动验证三方精度 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 修改后的golden已经可以测试三方精度 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9128 | 1 个月前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 1 个月前 | |
fix(max_pool3d_grad): 修复SAME padding后pad丢失导致IS_PAD判断错误及性能优化 Co-authored-by: liangtongxue<lianglihui@h-partners.com> # message auto-generated for no-merge-commit merge: !8818 merge fix/max_pool3d_grad_final into master fix(max_pool3d_grad): 修复SAME padding后pad丢失导致IS_PAD判断错误及性能优化 Created-by: liangtongxue Commit-by: liangtongxue Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 网络用例性能优化。1、simt开核优化。2、simd快除。3、same场景pad误判导致的aic问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8818 | 1 个月前 | |
docs: 更新Shrink/DataFormatDimMap/ActULQClampGrad README产品支持情况 Co-authored-by: Coder_Nerd<shishuai5@huawei.com> # message auto-generated for no-merge-commit merge: !9343 merge docs/heaviside-op-api-support into master docs: 更新Shrink/DataFormatDimMap/ActULQClampGrad README产品支持情况 Created-by: Coder_Nerd Commit-by: Coder_Nerd Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Shrink/DataFormatDimMap/ActULQClampGrad README产品支持情况与实际支持情况不符合 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5255 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9343 | 1 个月前 | |
refactor: 拆分 RNN/LSTM 系列算子大函数,提升代码可维护性 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9331 merge bigFunc into master refactor: 拆分 RNN/LSTM 系列算子大函数,提升代码可维护性 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 本 PR 对 RNN/LSTM 系列算子(dynamic_rnn、dynamic_rnnv2、single_layer_lstm_grad、thnn_fused_lstm_cell_grad)进行代码重构:将各层(op_api / op_host / op_kernel / framework)中体量过大的函数拆分为多个职责单一的小函数,不改动算子行为与对外接口语义。 ### 主要改动 - **dynamic_rnn**: - framework/npu_lstm_onnx_plugin.cpp:ParseOpToGraphNpuLSTM 拆分为 GetNpuLSTMAttrs、SetNpuLSTMGraphIO - op_api/aclnn_lstm.cpp:aclnnLSTMGetWorkspaceSize 拆分为 PrepareLstmWorkspaceInputs、ProcessTrainLayers、ProcessInferLayers(内部再细分 ProcessTrainLayerForward/Backward、ProcessInferLayerForward/Backward、AllocInferBackwardTensors);权重/bias/init_hc 预处理抽取 PrepareWeightTrans、PrepareBias、PrepareInitHC;输出处理拆分为 ProcessHyCyOutputs、ProcessTrainOutputs;shape 校验拆分为 CheckWeightShapes、SetDataInfo、CheckParamsShapes、CheckOutputListSize - op_host/dynamic_lstm_tiling.cpp/.h:GetMMTilingDataSplit 拆分为 GetMMInputTiling、GetMMHiddenTiling - op_host/dynamic_rnn_infershape.cpp:shape 推导拆分为 GetInputShapes、GetOutputShapes、GetHiddenSize、SetOutputShapes - op_kernel/LstmFP32.cpp/.h:ProcessVectorOnce/ProcessVectorInitHC 拆分为 CalcVectorBlockSize、ProcessSeqLengthUpdateC/H、ProcessTanhC、ProcessInitSeqLengthC/H - op_kernel/dynamic_rnn_common.h:InitBuffers/InitBuffersV2 拆分为 InitBuffersOffsets、SetInputGmBuffers(V2)、SetOutputGmBuffers - **dynamic_rnnv2**: - framework/npu_lstm_cell_onnx_plugin.cpp:ParseOpToGraphNpuLSTMCell 拆分为 GetNpuLSTMCellAttrs、SetNpuLSTMCellGraphIO - **single_layer_lstm_grad**: - op_api/aclnn_lstm_backward.cpp:双向 LSTM 反向计算拆分为 GetBidirWeightsBias、ExecBidirLayerForward、ExecBidirLayerBackward;权重拼接抽取 ConcatWeightBackward;shape 校验拆分为 ValidateLayerShapes、ValidateGateShapes、CheckGateListLengths、CheckParamsListLength;逐层梯度处理抽取 ProcessLstmGradLayer、ReshapeLstmDataInput - op_host/single_layer_lstm_grad_tiling.cpp:GetMMTilingDataSplit 拆分为 GetMMDgateTiling、GetMMDwTiling;SetTilingData 拆分为 SetScalarTilingData、SetCutBatchTilingData;CheckParamsShape 拆分为 CheckXAndInitHShape、GetOptionalInputFlags、ValidateInputShapes、ValidateOutputShapes - op_kernel/single_layer_lstm_grad.h:InitGlobalBuffers 拆分为 InitGmOffsets、SetInputGmBuffers、SetOutputGmBuffers;LoadDgatesInputData 拆分为 LoadDgatesInputDataFloat、LoadDgatesInputDataNonFloat;ComputeDgates 拆分为 ComputeDgatesDH、ComputeDgatesGrads、ApplyDgatesSeqLength;大循环体拆分为 ProcessDxhSplitTask、ProcessDxSplitLargeNLoop、ProcessCopyInputXLargeNLoop、ProcessCopyHiddenHLargeNLoop 等 - **thnn_fused_lstm_cell_grad**: - op_kernel/thnn_fused_lstm_cell_grad.h:ComputeDgates 拆分为 ComputeDgatesDC、ComputeDgatesGates ## 关联的Issue 关联 Issue:https://gitcode.com/cann/ops-nn/issues/5239 ## 测试 本 PR 为纯重构(函数拆分,行为不变),需回归验证 LSTM 相关用例(动态 shape、双向、训练/推理、seq_length mask 等场景)。 ## 文档更新 无文档更新。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构(拆分大函数) ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9331 | 1 个月前 | |
David需求:新增Max_pool_v3_grad算子 Co-authored-by: ZhouChuping<24171214023@stu.xidian.edu.cn> # message auto-generated for no-merge-commit merge: !8604 merge feat/max_pool_v3_grad_add into master David需求:新增Max_pool_v3_grad算子 Created-by: qq_52056150 Commit-by: ZhouChuping Merged-by: cann-robot Description: ## 描述 新增Max_pool_v3_grad算子,新增tiling切分逻辑、simt kernel计算逻辑、infershape、fussionpass等。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5188 ## 测试 本地进行了白盒、门槛用例的验证,共400条用例无功能性问题,融合规则进行了150条用例的验证无功能问题,线上进行了david冒烟和obp冒烟均无异常。 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8604 | 1 个月前 | |
fix: migrate simple onnx parse params plugins Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !9161 merge onnx-fix-0825 into master fix: migrate simple onnx parse params plugins Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 将一批 ONNX 插件的参数解析接口从 ParseParamsFn 迁移到 ParseParamsByOperatorFn,实现onnx插件和protobuf的解耦 涉及算子: - Mish - FastGelu - Size - Elu - LeakyRelu - HardMax 【实现说明】 - 无属性或仅默认属性的算子,直接切换新注册接口。 - 对 Elu、LeakyRelu、HardMax,从 ge::Operator 的 attribute JSON 中解析 ONNX 属性。 - 保留旧逻辑中的默认值行为。 - 对缺失或非数组形式的 attribute JSON 增加保护,避免无属性场景误返回 FAILED。 ## 关联的Issue Issue #5115 ## 测试 onnx插件ut编译、执行通过 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9161 | 1 个月前 | |
修复多线程编译so torch编译时间过长 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9214 merge torch into master 修复多线程编译so torch编译时间过长 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 本 PR 主要聚焦于修复多线程场景下 torch_extension 算子 .so JIT 编译时间过长的问题。在 builder.py 的 OpBuilder 加载流程中,为 JIT 编译过程引入基于 fcntl 的文件锁,使同一算子在多线程/多进程下只编译一次,并结合 OpBuilder._loaded_ops 缓存避免锁内重复编译,从而缩短整体编译时间。 主要改动 新增编译文件锁互斥:在 builder.py 中新增 import fcntl,基于环境变量 TORCH_EXTENSIONS_DIR(默认 ~/.cache/torch_extensions)创建 {name}.compile.lock 文件,并通过 fcntl.flock(lock_file, fcntl.LOCK_EX) 加独占锁,保证同名单个算子只被编译一次。 加锁后先检查模块缓存:获取锁后先判断 self.name 是否已存在于 OpBuilder._loaded_ops,若已加载则直接返回缓存模块,避免锁内重复编译。 仅在首次编译成功后写入缓存:只有 load() 编译成功后才将模块写入 OpBuilder._loaded_ops 并返回,编译异常仍通过 RuntimeError 抛出。 ## 关联的Issue [#5175](https://gitcode.com/cann/ops-nn/issues/5175) ## 测试 已验证多线程时,编译耗时显著改进 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9214 | 1 个月前 | |
MicroAPI namespace to Reg for arch35 kernels Co-authored-by: gcw_DS4cmz2b<1312925094@qq.com> # message auto-generated for no-merge-commit merge: !9267 merge rename into master MicroAPI namespace to Reg for arch35 kernels Created-by: gcw_DS4cmz2b Commit-by: gcw_DS4cmz2b Merged-by: cann-robot Description: ## 描述 修改了index,activation,matmul,conv,foreach,optim,experimental,vfusion,hash这几个文件夹内的命名空间,将MicroAPI-->Reg ## 关联的Issue [多个文件夹内的算子命名空间使用的MicroAPI,应改为Reg](https://gitcode.com/cann/ops-nn/issues/5218) ## 测试 验证方法 严格按四步流程,逐算子验证: 1. Step 1:编译原始代码,保存 baseline binary .o 文件 MD5 2. Step 2:执行 MicroAPI → Reg 替换 3. Step 3:编译替换后代码,保存 after binary .o 文件 MD5 4. Step 4:对比 A_before.md5 与 B_after.md5 平台:ascend950,编译参数:--soc=ascend950 --ops=<op> -j16 验证替换前后 binary 产物 MD5 完全一致。 冒烟,代码审查均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9267 | 1 个月前 | |
修改matmul 算子atoll 异常反馈判断 Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !7083 merge master into master 修改matmul 算子atoll 异常反馈判断 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改matmul 算子atoll 异常反馈判断,异常时返回默认值 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/3882 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7083 | 2 个月前 | |
动态库解耦 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !8927 merge master into master 动态库解耦 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 本 PR 旨在将算子侧代码与 legacy 动态库(libophost_comm_legacy.so)解耦:LegacyCommonMgr 新增 isSupported_ 支持位与 IsSupport() 接口,依据编译宏 ASCEND_COMPUTE_UNIT 判断当前 SoC 版本是否属于受支持集合 SUPPORTED_VERS(ascend910b、ascend910_93、ascend310p、ascend310b、ascend910),仅受支持时才 dlopen 加载 legacy 库;各 legacy 封装接口在不受支持时提前短路返回,matmul 系列算子的 tiling 流程同步改为容忍 legacy 能力缺失而不再硬失败,并配套调整 CMake 编译宏与 UT 测试。 ## 关联的Issue [5093](https://gitcode.com/cann/ops-nn/issues/5093) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8927 | 1 个月前 | |
aclnnQuantMatmulWeightNz 补充WeightQuantPreProcess接口aclnn资料 Co-authored-by: renzetao<renzetao2@huawei.com> # message auto-generated for no-merge-commit merge: !8866 merge data_revise into master aclnnQuantMatmulWeightNz 补充WeightQuantPreProcess接口aclnn资料 Created-by: renzetao Commit-by: renzetao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> aclnnQuantMatmulWeightNz补充weightQuantPreProcess的调用example ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4898](https://gitcode.com/cann/ops-nn/issues/4898) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> bash build.sh --run_example 测试通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> aclnnQuantMatmulWeightNz.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8866 | 1 个月前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
fix: migrate simple onnx parse params plugins Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !9161 merge onnx-fix-0825 into master fix: migrate simple onnx parse params plugins Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 将一批 ONNX 插件的参数解析接口从 ParseParamsFn 迁移到 ParseParamsByOperatorFn,实现onnx插件和protobuf的解耦 涉及算子: - Mish - FastGelu - Size - Elu - LeakyRelu - HardMax 【实现说明】 - 无属性或仅默认属性的算子,直接切换新注册接口。 - 对 Elu、LeakyRelu、HardMax,从 ge::Operator 的 attribute JSON 中解析 ONNX 属性。 - 保留旧逻辑中的默认值行为。 - 对缺失或非数组形式的 attribute JSON 增加保护,避免无属性场景误返回 FAILED。 ## 关联的Issue Issue #5115 ## 测试 onnx插件ut编译、执行通过 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9161 | 1 个月前 | |
产品文档中png文件改为英文名 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !8300 merge master into master 产品文档中png文件改为英文名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 产品文档中的png图片名由中文改为英文 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#4260](https://gitcode.com/cann/ops-nn/issues/4260) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> png和相关的link md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8300 | 1 个月前 | |
init | 11 个月前 | |
add hard_sigmoid for ascend950 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !7874 merge master into master add hard_sigmoid for ascend950 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> add hard_sigmoid for ascend950 hard_sigmoid适配950 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT/ST pass ; ops-test-kit 测试900+ 用例pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> activation/hard_sigmoid/README.md activation/hard_sigmoid/docs/aclnnHardsigmoid&aclnnInplaceHardsigmoid.md docs/zh/op_api_list.md docs/zh/op_api_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7874 | 2 个月前 | |
cannsim改名为npusim Co-authored-by: liangbinglong<liangbinglong@huawei.com> # message auto-generated for no-merge-commit merge: !8349 merge master into master cannsim改名为npusim Created-by: liangbinglong Commit-by: liangbinglong Merged-by: cann-robot Description: ## 描述 经TSC评审,cannsim工具正式更名为npusim,相关命令行、资料同步刷新,cannsim作为别名兼容一段时间,需要尽快切换 ## 关联的Issue NA ## 测试 使用最新链接版本测试,相关命令行已经全部更名为npusim ## 文档更新 更新doc下面的调优部分文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8349 | 1 个月前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
fix Third_Party_Open_Source_Software_List.yaml Co-authored-by: liuyufan0725<liuyufan9@huawei.com> # message auto-generated for no-merge-commit merge: !1879 merge fix_yaml into master fix Third_Party_Open_Source_Software_List.yaml Created-by: liuyufan0725 Commit-by: liuyufan0725 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新三方依赖清单Third_Party_Open_Source_Software_List.yaml 1、增加protobuf 2、将nlohmann/json修改为json ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1042](https://gitcode.com/cann/ops-nn/issues/1042) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了Third_Party_Open_Source_Software_List.yaml ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1879 | 7 个月前 | |
【描 述】 eigen update to 5.0.0 Co-authored-by: j00427146<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !1152 merge master into master 【描 述】 eigen update to 5.0.0 Created-by: jialimin1 Commit-by: j00427146 Merged-by: cann-robot Description: ## 描述 现开源软件eigen 3.4.0 EOM,Eigen 从3.4.0版本升级到5.0.0,解决生命周期问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-nn/issues/975 https://gitcode.com/cann/ops-nn/issues/389 ## 测试   ## 文档更新 SECURITY.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Update Eigen to 5.0.0 See merge request: cann/ops-nn!1152 | 7 个月前 | |
fix(build): 修复run_example默认模式判断libascendcl.so时[ ]缺空格导致错误链接-lacl_rt的问题 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !9181 merge index_example into master fix(build): 修复run_example默认模式判断libascendcl.so时[ ]缺空格导致错误链接-lacl_rt的问题 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 修复run_example默认模式判断libascendcl.so时[ ]缺空格导致错误链接-lacl_rt的问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5128 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9181 | 1 个月前 | |
feat(broadcast_gradient_args): 新增aclnn适配 Co-authored-by: HelloWord-LuXin<luxin67@h-partners.com> # message auto-generated for no-merge-commit merge: !8216 merge feat/broadcast_gradient_args_aclnn into master feat(broadcast_gradient_args): 新增aclnn适配 Created-by: HelloWord-LuXin Commit-by: HelloWord-LuXin Merged-by: cann-robot Description: ## 适配内容 基于 broadcast_gradient_args 算子已有的 kernel/tiling/infershape 实现,新增 aclnn 两段式接口适配,使算子可通过 aclnnBroadcastGradientArgs 接口在 Ascend 950 上调用。 ### 新增文件 | 文件 | 说明 | |------|------| | op_api/broadcast_gradient_args.h | l0op 层头文件,声明 l0op::BroadcastGradientArgs | | op_api/broadcast_gradient_args.cpp | l0op 层实现,ADD_TO_LAUNCHER_LIST_AICORE 注册算子,OP_OUTSHAPE 机制处理 y1/y2 动态输出 shape(OUT_SHAPE_SIZE=18,2 输出 × 9 槽位) | | op_api/aclnn_broadcast_gradient_args.h | 对外头文件,声明两段式接口 | | op_api/aclnn_broadcast_gradient_args.cpp | aclnn 层实现:参数校验(非空/dtype/shape)、Contiguous 转换、还原 y1/y2 StorageShape 为 ViewShape、IsRegbase 架构检查(仅 ascend950) | | docs/aclnnBroadcastGradientArgs.md | 接口文档 | | examples/test_aclnn_broadcast_gradient_args.cpp | 调用示例,展示动态输出 shape 获取流程 | | tests/ut/op_host/test_aclnn_broadcast_gradient_args.cpp | UT 测试,覆盖 int32/int64、不同长度、空 shape、完全相同、dtype 不一致、非 1D、空指针等场景 | ### 修改文件 - README.md:调用说明新增 aclnn 调用样例 - docs/zh/menu_aclnn_api.md:按字母序注册 aclnnBroadcastGradientArgs 菜单 ### 关键设计 1. **动态输出 shape 处理**:y1/y2 标记为 OutputShapeDependOnCompute,通过分配 outShapeTensor(shape={18}, DT_INT64) 并为 y1/y2 各声明一个 OP_OUTSHAPE({outShapeTensor, idx}) 条目,框架在 kernel 执行后读取 outShapeTensor 刷新 y1/y2 的 StorageShape。 2. **仅 AICORE**:算子已在 kernel 层通过 tiling_key(0=perf, 1=scalar) 处理 UB 超限场景,无需 aclnn 层再做 AICORE/AICPU 分发。 3. **无需修改 CMakeLists.txt**:op_api/ 目录由 add_modules_sources 的 DIR 参数自动扫描,参考 non_zero、bucketize_v2。 ### 参考算子 non_zero、unique_consecutive、bucketize_v2 ### 设计文档 /mnt/workspace/bulecode/broadcast_gradient_args_aclnn_design/aclnn_broadcast_gradient_args_design.md ### 验证 - 已通过 clang-format 格式化检查 - UT 测试覆盖正常/异常场景 --- 关联 issue: #5227 See merge request: cann/ops-nn!8216 | 1 个月前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 2 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 2 个月前 | |
Remove the dependency asc-tool Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !5220 merge eng into master Remove the dependency asc-tool Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 Remove the dependency asc-tool ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 工程编译验证 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5220 | 4 个月前 |
ops-nn
🔥Latest News
- [2026/05] 优化kernel编译配置项,减少simplified_key和ascendc_config配置文件(!3330)。
- [2026/05] 引入ops-tensor,基于分层结构优化Cube类算子,减少偏移量计算和简化指令参数(!5036)。
- [2026/05] 发布生态算子的精度验收标准(!4572)。
- [2026/03] 开源算子支持下一代芯片:Ascend950PR(!450)。
- [2026/03] 新增<<<>>>的算子开发样例(!620)。
- [2026/03] 低bit类算子和融合算子支持更多数据类型:fp8/mxfp8/hifp8/mxfp4等,并支持pertensor/perchannel/pertoken/pergroup/perblock等不同量化和组合方式:全量化融合算子:quant_batch_matmul_v4,伪量化融合算子:weight_quant_batch_matmul_v2。
- [2026/03] 支持SIMD/SIMT新同构编程算子实现:[MapIndex](#660),[ScatterSub](#710)。
- [2026/01] 新增QuickStart,指导新手零基础入门算子项目部署(支持Docker环境)、算子开发和贡献流程。
- [2025/12] 开源算子支持Ascend 950PR/Ascend 950DT/KirinX90,可以通过NPU Simulator仿真工具开发调试;优化指南类文档,聚焦算子开发指南,明确最小交付件和关键示例代码,针对Ascend/samples仓算子提供迁移本项目的指导;新支持稀疏4:2量化matmul算子,针对稀疏矩阵开启硬件加速能力。
- [2025/11] 新支持算子index_fill、masked_scatter、scatter、tf_scatter_add、fused_cross_entropy_loss_with_max_sum。
- [2025/10] 新增experimental目录,完善贡献指南,支持开发者调试并贡献自定义算子。
- [2025/09] ops-nn项目首次上线,开源算子支持Atlas A2/A3系列产品。
🚀概述
ops-nn是CANN(Compute Architecture for Neural Networks)算子库中提供神经网络计算能力的高阶算子库,包括matmul类、activation类等算子,算子库架构图如下:

📌版本配套
本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。
🛠️环境准备
环境部署是体验本项目能力的前提,请先完成NPU驱动、CANN包安装等,确保环境正常。
⬇️源码下载
环境准备好后,下载与CANN版本配套的分支源码,通用命令如下,${tag_version}替换为分支标签名。以9.0.0分支源码下载为例:
# 通用命令:git clone -b ${tag_version} https://gitcode.com/cann/ops-nn.git
git clone -b 9.0.0 https://gitcode.com/cann/ops-nn.git
说明:若环境中已存在配套分支源码,可跳过本步骤,例如CANNLab默认已提供最新版本CANN对应的源码。
📖学习教程
💬相关信息
PS:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。