本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix st_950 action Co-authored-by: he_kan<hekan4@huawei.com> # message auto-generated for no-merge-commit merge: !8795 merge ci into master fix st_950 action Created-by: he_kan Commit-by: he_kan Merged-by: cann-robot Description: ## 描述 修复st_950的action中的引号问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8795 | 2 个月前 | |
新增situglu和situglugrad算子 Co-authored-by: guijianwei<guijianwei@huawei.com> # message auto-generated for no-merge-commit merge: !8651 merge situ_commit into master 新增situglu和situglugrad算子 Created-by: guijianwei Commit-by: guijianwei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> situ系列算子为SiTU(Scalable Interpolated Tanh Units)相关的融合算子族。新增两个situ激活正反向算子及其torch_extension接口,各算子功能如下: **1. situ_glu** SiTU门控线性单元(SiTU Gated Linear Unit)激活函数。对输入张量 x 沿指定维度 dim 切分为门控(gate)与上路径(up)两半,按SiTU公式计算输出。 将 x 基于 dim 进行合轴,合轴后维度为 [pre, cut],cut 必须为偶数,令 h = cut // 2。根据 activate_left 切分: - activate_left=True:gate = x[..., :h],up = x[..., h:] - activate_left=False:gate = x[..., h:],up = x[..., :h] SiTU计算: $$situ\_a = \beta \cdot \tanh\left(\frac{gate}{\beta}\right) \cdot \sigma(gate)$$ 当 linear_beta > 0 时: $$up = linear\_beta \cdot \tanh\left(\frac{up}{linear\_beta}\right)$$ 输出: $$y = situ\_a \cdot up$$ 输出 y 的 dim 轴大小为 x 的一半,其他维度与 x 相同。 **2. situ_glu_grad** situ_glu 的反向梯度算子。给定前向输出梯度 grad_y 与前向输入 x,按SiTU门控线性单元公式对 x 求导,返回输入梯度 grad_x。 记前向中间量: $$t_g = \tanh\left(\frac{gate}{\beta}\right), \quad s_g = \sigma(gate), \quad situ\_a = \beta \cdot t_g \cdot s_g$$ 当 linear_beta > 0 时:$up' = linear\_beta \cdot \tanh(up / linear\_beta)$,否则 $up' = up$。 乘积法则: $$grad\_situ\_a = grad\_y \cdot up', \quad grad\_up' = grad\_y \cdot situ\_a$$ gate梯度: $$grad\_gate = grad\_situ\_a \cdot s_g \cdot \left[(1 - t_g^2) + \beta \cdot t_g \cdot (1 - s_g)\right]$$ up梯度: - linear_beta > 0 时:$grad\_up = grad\_up' \cdot (1 - \tanh^2(up / linear\_beta))$ - linear_beta ≤ 0 时:$grad\_up = grad\_up'$ 按 activate_left 拼接 grad_gate、grad_up 为 grad_x(shape与 x 一致)。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> Issue [#4749](https://gitcode.com/cann/ops-nn/issues/4749) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 1、泛化测试 正向泛化功能测试OK 反向泛化功能测试OK 2、torch接口测试 正向torch接口功能测试OK 反向orch接口功能测试OK 3、示例代码测试 示例代码验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8651 | 2 个月前 | |
非连续slice支持2D slice 内轴\3d slice内轴 Co-authored-by: l00569907<linxu5@huawei.com> # message auto-generated for no-merge-commit merge: !8044 merge slice_2d_support into master 非连续slice支持2D slice 内轴\3d slice内轴 Created-by: LINxu233 Commit-by: l00569907 Merged-by: cann-robot Description: ## 描述 非连续slice支持2D slice 内轴\3d slice内轴 ## 关联的Issue https://gitcode.com/cann/ops-tensor/issues/146 ## 测试 测试非连续2d场景,网络shape全部通过。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8044 | 2 个月前 | |
修复SeluGrad、ApplyAddSign、SoftMarginLossGrad算子原型重复问题 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !8552 merge fix_proto into master 修复SeluGrad、ApplyAddSign、SoftMarginLossGrad算子原型重复问题 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复SeluGrad、ApplyAddSign、SoftMarginLossGrad算子原型重复问题,为了防止重复定义,统一使用宏定义隔开 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4714 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> compile通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8552 | 2 个月前 | |
nn仓rnn 、vfusion、control文件夹打标签 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !8342 merge master into master nn仓rnn 、vfusion、control文件夹打标签 Created-by: yanglu-1 Commit-by: yanglu-1;y60124828 Merged-by: cann-robot Description: ## 描述 nn仓rnn 、vfusion、control文件夹打标签 ## 关联的Issue 例如:关联Issue [#4600](https://gitcode.com/cann/ops-nn/issues/4600) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8342 | 2 个月前 | |
fix conv3dv2 cache tiling bug Co-authored-by: huafeng793<chenhuafeng2@huawei.com> # message auto-generated for no-merge-commit merge: !8712 merge conv_cache_bug into master fix conv3dv2 cache tiling bug Created-by: huafeng793 Commit-by: huafeng793 Merged-by: cann-robot Description: ## 描述 一、修复conv3dv2算子cache tiling bug: conv3dv2 api tilingdata未正确赋值outputOrder,导致cache tiling时outputOrder始终判断为0,走HW切分模式 cache tiling解析outputOrder也正好解析错误,将outputOrder=0(默认值)识别为M模式,于是: 1、第一次tiling=M模式 -> cache outputOrder=0(默认值) -> 第二次tiling为cache,解析outputOrder=0为M模式 2、第一次tiling=HW模式 -> cache outputOrder=0(默认值) -> 第二次tiling为cache,解析outputOrder=0为M模式,导致生成异常tilingkey(用M模式计算了HW的tiling),导致kernel AIC 二、修复conv3dv2算子NDHWC输入时正确golden计算 ## 关联的Issue [#4838](https://gitcode.com/cann/ops-nn/issues/4838) ## 测试 RDV ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8712 | 2 个月前 | |
新增situglu和situglugrad算子 Co-authored-by: guijianwei<guijianwei@huawei.com> # message auto-generated for no-merge-commit merge: !8651 merge situ_commit into master 新增situglu和situglugrad算子 Created-by: guijianwei Commit-by: guijianwei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> situ系列算子为SiTU(Scalable Interpolated Tanh Units)相关的融合算子族。新增两个situ激活正反向算子及其torch_extension接口,各算子功能如下: **1. situ_glu** SiTU门控线性单元(SiTU Gated Linear Unit)激活函数。对输入张量 x 沿指定维度 dim 切分为门控(gate)与上路径(up)两半,按SiTU公式计算输出。 将 x 基于 dim 进行合轴,合轴后维度为 [pre, cut],cut 必须为偶数,令 h = cut // 2。根据 activate_left 切分: - activate_left=True:gate = x[..., :h],up = x[..., h:] - activate_left=False:gate = x[..., h:],up = x[..., :h] SiTU计算: $$situ\_a = \beta \cdot \tanh\left(\frac{gate}{\beta}\right) \cdot \sigma(gate)$$ 当 linear_beta > 0 时: $$up = linear\_beta \cdot \tanh\left(\frac{up}{linear\_beta}\right)$$ 输出: $$y = situ\_a \cdot up$$ 输出 y 的 dim 轴大小为 x 的一半,其他维度与 x 相同。 **2. situ_glu_grad** situ_glu 的反向梯度算子。给定前向输出梯度 grad_y 与前向输入 x,按SiTU门控线性单元公式对 x 求导,返回输入梯度 grad_x。 记前向中间量: $$t_g = \tanh\left(\frac{gate}{\beta}\right), \quad s_g = \sigma(gate), \quad situ\_a = \beta \cdot t_g \cdot s_g$$ 当 linear_beta > 0 时:$up' = linear\_beta \cdot \tanh(up / linear\_beta)$,否则 $up' = up$。 乘积法则: $$grad\_situ\_a = grad\_y \cdot up', \quad grad\_up' = grad\_y \cdot situ\_a$$ gate梯度: $$grad\_gate = grad\_situ\_a \cdot s_g \cdot \left[(1 - t_g^2) + \beta \cdot t_g \cdot (1 - s_g)\right]$$ up梯度: - linear_beta > 0 时:$grad\_up = grad\_up' \cdot (1 - \tanh^2(up / linear\_beta))$ - linear_beta ≤ 0 时:$grad\_up = grad\_up'$ 按 activate_left 拼接 grad_gate、grad_up 为 grad_x(shape与 x 一致)。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> Issue [#4749](https://gitcode.com/cann/ops-nn/issues/4749) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 1、泛化测试 正向泛化功能测试OK 反向泛化功能测试OK 2、torch接口测试 正向torch接口功能测试OK 反向orch接口功能测试OK 3、示例代码测试 示例代码验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8651 | 2 个月前 | |
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 | 3 个月前 | |
turbo_quant_compress_latent csrc upgrade Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !8607 merge torch into master turbo_quant_compress_latent csrc upgrade Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 turbo_quant_compress_latent csrc upgrade ## 关联的Issue [#4690](https://gitcode.com/cann/ops-nn/issues/4690) ## 测试 编译并安装cann_ops_nn ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8607 | 2 个月前 | |
删除foreach fallback文件 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !8744 merge master into master 删除foreach fallback文件 Created-by: tianqiguang Commit-by: tianqiguang 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!8744 | 2 个月前 | |
fix schedule mode & embeddingHash Doc & groupNormSilu codecheck Co-authored-by: xieshengwei1024<xieshengwei3@huawei.com> # message auto-generated for no-merge-commit merge: !7076 merge master into master fix schedule mode & embeddingHash Doc & groupNormSilu codecheck Created-by: xieshengwei1024 Commit-by: xieshengwei1024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1.系列SyncAll算子添加scheduleMode 2.embeddingHash算子文档错误修改 3.groupNormSilu修改超大圈复杂度问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联issue3858 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 已进行本地编译测试、ut测试及上板aclnn测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了embeddingHash系列算子的readme文档 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7076 | 3 个月前 | |
perf(apply_top_k_top_p_with_sorted): add optimized kernel path with logits-based filtering Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !8745 merge opt-submit into master perf(apply_top_k_top_p_with_sorted): add optimized kernel path with logits-based filtering Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 透传logits输入,向量化实现计算搬运。 对于k超出vocabsize大小以及小于等于0,视为不进行topk过滤,解决了k值越界问题。 为 ApplyTopKTopPWithSorted 算子新增优化路径(ApplyTopKTopPOpt),在 logits 输入可用时直接在原始 logits 上做 CompareSelect 过滤,避免旧版通过双缓冲 TQue 做 scatter 重建输出的开销。 新增 3 个 TILING_KEY(3/4/5,对应 TopKTopP、TopK、TopP 三种优化模式),在 Tiling 阶段检测 logits 输入是否存在:存在时使用优化路径,否则回退到旧路径。优化路径将 output GM 空间复用为 softmax/cumsum 中间缓冲区,减少 workspace 消耗。 ### 改动原因 原始实现将 sorted 数据逐元素 scatter 回原始位置以过滤,当 vocab_size 较大时 scatter 循环的 scalar 往返(S/MTE3 同步)成为瓶颈。新路径在 logits 输入上做向量化的 CompareSelect(GE/GT 比较 + Select 选择),一次写回即可完成过滤,大幅减少标量操作和核间同步。对于仅 TopK 或仅 TopP 的场景,新增 ProcessTopKOpt / ProcessTopPOpt 避免不必要的分支判断。 ### 改动方法 1. 新增 apply_top_k_top_p_opt.h(1190 行),包含 ApplyTopKTopPOpt 模板类,实现了 ProcessTopKTopPOpt / ProcessTopKOpt / ProcessTopPOpt 三个入口 2. ProcessTopKTopPOpt 有 3 种路径:- inf 旁路(全 -inf/+inf 时直接拷贝 logits)- 小规模 fast path(topK 元素数和 softmax tile 均小于 scatterLength 时,UB 内完成 softmax + cumsum + 查找 + scatter)- 通用路径(ComputeSoftmaxSum + CumsumKoggleStone + FindFirstIndex + CompareSelectOnLogits 组合) 3. 新增 softMaxGm GlobalTensor 复用 output GM 空间存储 softmax/cumsum 中间结果 4. Tiling 层新增 LOGITS_INPUT_INDEX 检测、optKey_ 计算和 OPT_TOP_P/OPT_TOP_K/OPT_TOP_K_TOP_P 三种新 tiling key 5. 配置 JSON 文件中新增 logits 输入描述 6. 更新 op_def 注册 logits 为 OPTIONAL 输入 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4759](https://gitcode.com/cann/ops-nn/issues/4759) [#4823](https://gitcode.com/cann/ops-nn/issues/4823) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 针对性能提升,新增了新增可选输入logits,实现向量化计算搬出,并且在logits提供的场景下,workspace申请空间缩减为0,大幅减少内存占用。 针对bug修复,对于k超界的情况,视为topk不使能,故运行issue中的代码,全部case成功运行是所期望的: [build] g++ est_aclnn_apply_top_k_top_p_k_oob.cpp [run] test_aclnn_apply_top_k_top_p_k_oob ===== CONTROL k=8 k=8 ===== wsRet=0 ws=3584 launch=0 sync=0 finite_out=16 / 128 first8: -inf -inf -inf -inf -inf -inf -inf -inf ===== BOUNDARY k=V k=64 ===== wsRet=0 ws=3584 launch=0 sync=0 finite_out=128 / 128 first8: 0.000 1.000 2.000 3.000 4.000 5.000 6.000 7.000 ===== TRIGGER k=V+1 k=65 ===== wsRet=0 ws=3584 launch=0 sync=0 finite_out=128 / 128 first8: 0.000 1.000 2.000 3.000 4.000 5.000 6.000 7.000 ===== TRIGGER k=V*2 k=128 ===== wsRet=0 ws=3584 launch=0 sync=0 finite_out=128 / 128 first8: 0.000 1.000 2.000 3.000 4.000 5.000 6.000 7.000 ===== TRIGGER k=1000000 k=1000000 ===== wsRet=0 ws=3584 launch=0 sync=0 finite_out=128 / 128 first8: 0.000 1.000 2.000 3.000 4.000 5.000 6.000 7.000 VERDICT: BUG_REPRODUCED (exit 42) — k>vocab accepted (ws SUCCESS) without reject bad1(V+1) ws=0 ok=1 sync=0; bad2 ws=0; bad3 ws=0 [exit] 42 (42=BUG_REPRODUCED, 0=NO_REPRO, 1=harness error) > 在进行自定义算子测试时,issue中的脚本环境变量存在一定问题,需要补充环境变量,否则会报MTE错误。 已在 tests/ut/op_kernel/ 中新增 test_case_4_152064_fp32_opt 测试用例(TILING_KEY=3),覆盖 fp32 TopKTopP 优化路径。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - README.md 更新功能说明和参数描述 - docs/aclnnApplyTopKTopP.md 更新 k 参数取值范围说明 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [x] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8745 | 2 个月前 | |
删除multilabel_label_loss算子不兼容场景,走回历史版本 Co-authored-by: jisongyuan@h-partners.com<jisongyuan@h-partners.com> # message auto-generated for no-merge-commit merge: !8609 merge master into master 删除multilabel_label_loss算子不兼容场景,走回历史版本 Created-by: ji-songyuan Commit-by: jisongyuan@h-partners.com Merged-by: cann-robot Description: ## 描述 multilabel_margin_loss算子重新ascendc版本,部分场景和历史算子不兼容,依旧使用历史算子 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4797](https://gitcode.com/cann/ops-nn/issues/4797) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 泛化400case通过,不兼容场景case测试也通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8609 | 2 个月前 | |
【FEATURE】A2/A3 GEMMV3 base kernel支持需要broadcast的bias输入 Co-authored-by: HuangKun8682<huangkun61@huawei.com> # message auto-generated for no-merge-commit merge: !8446 merge personal_gemmV3_bias_support_broadcast_kernel_part into master 【FEATURE】A2/A3 GEMMV3 base kernel支持需要broadcast的bias输入 Created-by: HuangKun8682 Commit-by: HuangKun8682 Merged-by: cann-robot Description: ## 描述 本 PR 为 A2/A3 GemmV3 Base Kernel 增加 bias broadcast 支持,使 GemmV3 可以直接计算: out = alpha * (A @ B) + beta * C 其中 C 支持向矩阵乘输出 [B, M, N] 广播。 主要修改如下: 1. 扩展 GemmV3 InferShape: - 支持 bias rank 小于或等于输出 rank。 - 按右对齐规则校验 bias 与输出是否满足 broadcast。 - 支持 Addmm 和 Baddbmm 的 N、M、scalar 及 per-batch broadcast。 - 对不满足 broadcast 规则的 shape 返回失败。 2. 扩展 GemmV3 Tiling: - 将 bias shape 归一化到逻辑 [B, M, N]。 - 新增以下 broadcast 类型: - BIAS_BCAST_NONE - BIAS_BCAST_N - BIAS_BCAST_M - BIAS_BCAST_SCALAR - 计算并下发 cBatchStride、cMStride 和 cNStride,stride 为 0 表示对应方向广播。 - 校验 broadcast bias 所需 UB 空间,避免 UB 越界。 - Broadcast 能力仅在 A2/A3 Base Tiling 上启用,Arch35 对应场景保持失败。 3. 扩展 GemmV3 TilingData: - 增加 biasBroadcastType。 - 增加 C 在 Batch/M/N 方向的逻辑 stride。 - 保持 TilingData 8 字节对齐。 4. 优化 Kernel 中的 bias broadcast 计算: - N broadcast:连续搬入 N 个 bias 元素,完成 Cast 和 beta 缩放后,直接沿 M 方向重复相加。 - M broadcast:连续搬入当前 mRows 个标量,通过 Brcb 展开后沿 N 方向相加。 - Scalar broadcast:只搬入一个标量,Brcb 后在当前 tile 内复用。 - [B,1,1] 按 per-batch scalar 处理。 - 按 VEC_ITER_REPEAT 对行数进行分段,避免 repeat 参数截断。 - 非 broadcast 场景继续使用原有连续 C 搬运及 Axpy 计算流程。 5. 重新规划 ubC_ 区域: - ubBiasRaw_:保存原始 bias。 - ubBiasFp32_:保存 Cast 及 beta 缩放后的 bias。 - ubBiasBrcb_:保存 Brcb 展开的 bias。 - 各 buffer 地址根据 Tiling 的 m0/n0 结果计算并按 32 字节对齐。 6. 将 C 的读取地址与 Y 的写回地址分离: - C 地址根据 broadcast stride 计算。 - Y 始终按照连续 [B, M, N] 输出布局写回。 ## 关联的Issue ## 测试 1. 新增并完成 GemmV3 InferShape UT: - Addmm N broadcast。 - Addmm M broadcast。 - Baddbmm per-batch scalar broadcast。 - 非法 broadcast shape。 2. 新增并完成 GemmV3 Tiling UT: - 无 broadcast。 - N/M/scalar broadcast。 - Per-batch N/M/scalar broadcast。 - Batch=1 的三维 scalar broadcast。 - Arch35 broadcast tiling 失败场景。 - 校验 biasBroadcastType 和 C 的三个逻辑 stride。 3. 覆盖 FP16、BF16、16in32out、ND×ND、ND×NZ,以及 N/M/scalar/[B,1,1] broadcast。 测试结果: 单条批量执行泛化精度用例通过率:1998/2000,失败用例批跑100次复检后精度通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8446 | 2 个月前 | |
[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 | 2 个月前 | |
docs: 修正apply_adagrad_d算子README调用说明误写为EluGrad Co-authored-by: caorenlei<caorenlei@huawei.com> # message auto-generated for no-merge-commit merge: !8792 merge 0817 into master docs: 修正apply_adagrad_d算子README调用说明误写为EluGrad Created-by: caorenlei Commit-by: caorenlei Merged-by: cann-robot Description: ## 描述 修正 apply_adagrad_d 算子 README 中调用说明的文档错误。调用说明表格中"图模式"行的说明文字错误地写成"构图方式调用EluGrad算子",实际应为"构图方式调用ApplyAdagradD算子"。 ### 改动原因 optim/apply_adagrad_d/README.md 第91行调用说明表格中,"图模式"行的说明文字误写为"构图方式调用EluGrad算子",与实际算子名称不符,导致文档描述与算子功能不一致。 ### 改动方法 将说明文字中的"EluGrad"修正为"ApplyAdagradD"。 ## 关联的Issue - [#4848](https://gitcode.com/cann/ops-nn/issues/4848) ## 测试 文档修改,无需代码测试。已人工核对修改前后内容,确认修正后描述与算子名称一致。 ## 文档更新 更新了 optim/apply_adagrad_d/README.md 文件,修正调用说明表格中的算子名称错误。 ## 类型标签 - [x] 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8792 | 2 个月前 | |
MaxPoolV3Grad的产品支持列表描述有误,需要更改 | 2 个月前 | |
更新dequant_swiglu_quant文档输入空tensor、±inf和nan支持说明 Co-authored-by: jzj007<jiangzhijie9@huawei.com> # message auto-generated for no-merge-commit merge: !8092 merge dsq into master 更新dequant_swiglu_quant文档输入空tensor、±inf和nan支持说明 Created-by: jzj007 Commit-by: jzj007 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4451](https://gitcode.com/cann/ops-nn/issues/4451) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新dequant_swiglu_quant文档输入空tensor、±inf和nan支持说明 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8092 | 2 个月前 | |
LSTM-A5 Co-authored-by: weike<weike13@huawei.com> # message auto-generated for no-merge-commit merge: !8526 merge master into master LSTM-A5 Created-by: m0_55003149 Commit-by: weike Merged-by: cann-robot Description: ## 描述 需求背景:当前aclnnLstm不支持A5,需要正向定长场景支持A5 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/4686 ## 测试 测试A5上性能、精度、内存不劣于A2 ## 文档更新 更新了rnn/dynamic_rnn/docs/aclnnLSTM.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8526 | 2 个月前 | |
卸载脚本:避免 rm -rf 误删共享 python 目录并在目录不存在时中止卸载 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !8674 merge fix into master 卸载脚本:避免 rm -rf 误删共享 python 目录并在目录不存在时中止卸载 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 修复 ops-nn RPM/DEB 卸载脚本 scripts/package/ops_nn/rpm_deb/custom_prerm.sh 的两个缺陷: ### 误删共享 python 目录: ${WHL_INSTALL_DIR_PATH} 的父目录 parent 可能是与其他软件共享的 python 安装目录,原先使用 rm -rf 存在误删风险,改为 [ -d ... ] && rmdir ... || true,仅删除空目录。 ### 目录不存在时中止卸载: rmdir / rm 操作未做目录存在性判断,目录不存在时命令返回非零导致卸载流程中止;现为 WHL_INSTALL_DIR_PATH、es_packages、ops_nn 等清理步骤均增加 [ -d ... ] 守卫与 || true,目录不存在时跳过并继续卸载。 ## 关联的Issue [#4803](https://gitcode.com/cann/ops-nn/issues/4803) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8674 | 2 个月前 | |
kernel ut 增加防卡死超时,快速模式,覆盖率控制 Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !8187 merge master into master kernel ut 增加防卡死超时,快速模式,覆盖率控制 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 提交总结:kernel ut 增加防卡死超时、快速模式、覆盖率控制 **修改背景**:Kernel UT 存在单测卡死导致整套测试挂起、运行慢(addr2line 符号化耗时)、gcov 覆盖率始终链接带来不必要开销等问题。 **修改方案**: 1. **防卡死超时**:新增 run_kernel_ut.sh,按 case 逐个执行并用 timeout 限时(默认 120s,--ut_timeout 可配),超时即标记失败并继续,避免单点卡死阻塞全流程。 2. **快速模式**:新增 --ut_mode=fast/debug。fast 模式关闭符号化(注入 fake addr2line 跳过慢解析)、改用 -g0 -O2,用于快速验证;debug 模式保留 -g 与符号化,用于开发调试。 3. **覆盖率控制**:将 ut.cmake 中 gcov 的无条件链接改为 $<$<BOOL:${ENABLE_COVERAGE}>:gcov> 条件链接,仅在开启覆盖率时引入; 4. **修复失败的kernel ut**:TensorFlow 依赖替换为md_dtypes, 修复部分block 越界,缺少SetKernelMode 设置导致核获取错误等问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4606 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 通过kernel ut 测试,bash build.sh -u --opkernel --ut_mode=fast --ut_timeout=60 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8187 | 2 个月前 | |
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 个月前 | |
modified md files (aclnnMultiScaleDeformableAttentionGrad.md and aclnnLinalgVectorNorm.md) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !8458 merge master into master modified md files (aclnnMultiScaleDeformableAttentionGrad.md and aclnnLinalgVectorNorm.md) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 - aclnnMultiScaleDeformableAttentionGrad supports A5, updates aclnnMultiScaleDeformableAttentionGrad, the corresponding README.md for the operator, and op_api_list.md. - Updates the return codes in aclnnLinalgVectorNorm.md. ## 关联的Issue [#4474](https://gitcode.com/cann/ops-nn/issues/4474) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 docs/zh/op_api_list.md vfusion/multi_scale_deformable_attention_grad/README.md vfusion/multi_scale_deformable_attention_grad/docs/aclnnMultiScaleDeformableAttentionGrad.md norm/lp_norm_v2/docs/aclnnLinalgVectorNorm.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8458 | 2 个月前 | |
修改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 | 3 个月前 | |
index kernel ut Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !5501 merge master into master index kernel ut Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Kernel UT 中存在大量分散的测试数据准备代码,使用 system() 调用执行 shell 命令: 重复样板代码多:至少 131 个文件包含 system() 调用 依赖 GNU/Linux 工具:cp、chmod、rm、get_current_dir_name(非跨平台) 错误定位困难:system() 返回码粗糙,无法区分路径错误、权限问题、Python缺失等 维护成本高:同一套逻辑散落在大量算子测试中 修改方案 统一测试数据生命周期管理:拷贝、清理、生成、比对 改善报错体验:使用项目标准日志宏 OP_LOGI/OP_LOGE,区分路径错误、脚本执行失败等 降低贡献门槛:开发者只需声明数据目录和参数 本次修改对index 目录下的部分算子 迁移过程中 代码格式做整改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/2337 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5501 | 4 个月前 | |
新增 pre-push 本地编译门禁脚本,将 CI 质量门禁左移到开发者本地,在 git push 时自动触发构建与 UT 检查。 Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !8563 merge master into master 新增 pre-push 本地编译门禁脚本,将 CI 质量门禁左移到开发者本地,在 git push 时自动触发构建与 UT 检查。 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: 本 PR 新增 pre-push 本地编译门禁脚本,将 CI 质量门禁左移到开发者本地,在 git push 时自动触发构建与 UT 检查。 ### 改动原因 远程 CI 门禁失败导致开发往返成本高,开发者需要在本地反复调试后才能合入。通过 pre-push hook 在 push 前自动运行本地构建与 UT,提前发现问题,提升远程门禁成功率。 ### 采取的方法 1. **新增 scripts/ci/pre_push_build.sh**:pre-push hook 脚本,支持两种运行模式: - **快速模式(默认)**:根据变更文件路径智能识别受影响模块(op_host/op_kernel/op_api/op_graph/arch35/experimental),仅触发相关阶段的构建与 UT,耗时短,适合日常迭代。 - **完整模式(PRE_PUSH_FULL=1)**:直接调用 local_build.sh,100% 复刻 CI 门禁语义,适合合入前验证。 2. **.pre-commit-config.yaml 注册 pre-push hook**:通过 pre-commit 框架管理,与现有 pre-commit 检查无缝衔接。 3. **智能跳过策略**: - 仅文档/配置/cmake/scripts 变更 → 全部跳过 - 仅 experimental 变更 → 只执行 check_experimental_pkg.sh - arch35/op_kernel 变更 → 跳过 JIT 打包,由 compile_ascend950_pkg.sh 处理 4. **CANN 环境检测**:未安装 CANN 包时红色高亮提示并跳过检查,允许提交。 5. **全流程日志**:所有环节名称、执行命令、构建输出同步写入终端和 pre_push_build.log,包含 Pipeline Preview 概览和变更文件列表。 ## 关联的Issue ## 测试 - 修改 matmul/mat_mul_v3/op_host/op_tiling/arch35/ 下文件,验证快速模式正确识别 arch35 变更,跳过 JIT 打包,触发 ascend950 pkg(force_jit)。 - 修改 op_host 非 arch35 文件,验证 JIT 打包 + ophost UT 正确触发。 - 仅修改 .md 文件,验证 md_only 早退逻辑生效,全部跳过。 - 未 source CANN 环境时,验证红色高亮提示并跳过检查。 - 验证 pre_push_build.log 日志内容与终端输出一致,包含变更文件列表、模块识别、Pipeline Preview、各阶段命令与输出。 ## 文档更新 - 新增 pre-commit.md:本地代码门禁使用指南(pre-commit + pre-push-build 合并文档),包含安装、环境前置条件、日常开发流程、跳过检查、运行模式、执行流程、典型场景、日志与报错排查、配置参数汇总、取消安装。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8563 | 2 个月前 | |
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 | 2 个月前 | |
refactor: init_cann_project() 移至 dependencies.cmake 之后调用 Co-authored-by: zhaoyingdong<zhaoyingdong@huawei.com> # message auto-generated for no-merge-commit merge: !8702 merge master into master refactor: init_cann_project() 移至 dependencies.cmake 之后调用 Created-by: zhaoyingdong Commit-by: zhaoyingdong Merged-by: cann-robot Description: ## 描述 refactor: init_cann_project() 移至 dependencies.cmake 之后调用 add_cann_third_party()依赖init_cann_project() 中的变量,所以需要放到add_cann_third_party()前面 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x ] AI辅助编写 See merge request: cann/ops-nn!8702 | 2 个月前 | |
产品文档中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 | 2 个月前 | |
init | 1 年前 | |
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 | 2 个月前 | |
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 | 2 个月前 | |
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 | 8 个月前 | |
【描 述】 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 | 8 个月前 | |
修复matmul ut 编译失败的问题 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !8409 merge master into master 修复matmul ut 编译失败的问题 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 1. 删除冗余的测试代码 2. build.sh build ut 增加-k,即使ut失败,任可以继续构建,最后报错 ## 关联的Issue [#4734](https://gitcode.com/cann/ops-nn/issues/4734) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8409 | 2 个月前 | |
清理index下的重复头文件 Co-authored-by: yue-ma<mayue54@huawei.com> # message auto-generated for no-merge-commit merge: !8476 merge master_bak into master 清理index下的重复头文件 Created-by: yue-ma Commit-by: yue-ma Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 清理index下的重复头文件 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4824 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8476 | 2 个月前 | |
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 | 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 个月前 | |
调整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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。