本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
close 950 st Co-authored-by: he_kan<hekan4@huawei.com> # message auto-generated for no-merge-commit merge: !11432 merge ci into master close 950 st Created-by: he_kan Commit-by: he_kan 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!11432 | 22 天前 | |
fix(selu_grad): 修复example及文档头文件包含路径错误,并删除重复的原型 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !11066 merge fix_selu_grad_example into master fix(selu_grad): 修复example及文档头文件包含路径错误,并删除重复的原型 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 修复 selu_grad 算子 example 及文档中的头文件包含路径错误。头文件 aclnn_selu_backward.h 实际位于 aclnnop/ 目录下,example 代码与文档示例中缺少该目录前缀,导致用户参照编译时报"找不到头文件"错误。 变更内容: - activation/selu_grad/examples/arch35/test_aclnn_selu_grad.cpp:#include "aclnn_selu_backward.h" 修改为 #include "aclnnop/aclnn_selu_backward.h" - activation/selu_grad/docs/aclnnSeluBackward.md:同步修正示例代码中的头文件包含路径 与 activation/selu_grad/examples/test_aclnn_selu_grad.cpp(已使用正确路径)保持一致。 ## 关联的Issue 关联Issue #6145:[Bug-Report|缺陷反馈]: selu_grad算子example及文档中头文件包含路径错误(https://gitcode.com/cann/ops-nn/issues/6145) ## 测试 仅修正头文件包含路径字符串,与仓库内其他算子 example 的标准写法一致(如 activation/selu_grad/examples/test_aclnn_selu_grad.cpp),无逻辑变更。 ## 文档更新 更新 activation/selu_grad/docs/aclnnSeluBackward.md 示例代码中的头文件包含路径。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11066 | 14 天前 | |
feat: add qbmm swiglu mx quant fusion Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !11230 merge master into master feat: add qbmm swiglu mx quant fusion Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 为 quant_matmul_activation_quant 算子增加 SwiGLU 与 MX 动态量化融合能力,并重构相关校验、推导和 Tiling 流程。 - 支持 SwiGLU:Matmul + Bias 后按 [gate | linear] 切分,计算 SiLU(gate) * linear,输出维度为输入的 1/2。 - 支持 Ascend 950、FP8 E4M3/E5M2、FP4 E2M1,以及 ND/WeightNZ 输入布局。 - 根据 scaleAlg 支持 OCP/BLAS 量化路径,并补充 FP4 对应量化算法。 - 新增 batch/without-batch kernel 路径,完善 WeightNZ、转置、MX Scale Shape 等参数校验。 - 保留并整理 GELU 现有路径,更新 Torch/ACLNN 接口、InferShape、Tiling、文档、示例和测试用例。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5902 ## 测试 - 已补充和更新 op_api、op_host、op_kernel UT 及 ST CSV。 - 已补充 GELU/SwiGLU、ND/WeightNZ、FP8/FP4、batch/without-batch 等主要场景用例。 ## 文档更新 - 已更新算子 README、接口说明、示例及测试相关文档。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11230 | 23 天前 | |
fix(selu_grad): 修复example及文档头文件包含路径错误,并删除重复的原型 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !11066 merge fix_selu_grad_example into master fix(selu_grad): 修复example及文档头文件包含路径错误,并删除重复的原型 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 修复 selu_grad 算子 example 及文档中的头文件包含路径错误。头文件 aclnn_selu_backward.h 实际位于 aclnnop/ 目录下,example 代码与文档示例中缺少该目录前缀,导致用户参照编译时报"找不到头文件"错误。 变更内容: - activation/selu_grad/examples/arch35/test_aclnn_selu_grad.cpp:#include "aclnn_selu_backward.h" 修改为 #include "aclnnop/aclnn_selu_backward.h" - activation/selu_grad/docs/aclnnSeluBackward.md:同步修正示例代码中的头文件包含路径 与 activation/selu_grad/examples/test_aclnn_selu_grad.cpp(已使用正确路径)保持一致。 ## 关联的Issue 关联Issue #6145:[Bug-Report|缺陷反馈]: selu_grad算子example及文档中头文件包含路径错误(https://gitcode.com/cann/ops-nn/issues/6145) ## 测试 仅修正头文件包含路径字符串,与仓库内其他算子 example 的标准写法一致(如 activation/selu_grad/examples/test_aclnn_selu_grad.cpp),无逻辑变更。 ## 文档更新 更新 activation/selu_grad/docs/aclnnSeluBackward.md 示例代码中的头文件包含路径。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11066 | 14 天前 | |
修改产品名 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11348 merge master into master 修改产品名 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 修改产品名 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 仅涉及md文档更新,不涉及测试 ## 文档更新 修改所有md文件的产品名称 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11348 | 23 天前 | |
Conv:开源Conv2D的算子原型、算子信息库和InferShape Co-authored-by: weijian317<gaoweijian1@huawei.com> # message auto-generated for no-merge-commit merge: !10468 merge iter into master Conv:开源Conv2D的算子原型、算子信息库和InferShape Created-by: weijian317 Commit-by: weijian317 Merged-by: cann-robot Description: ## 描述 开源Conv2D的算子原型、算子信息库和InferShape,并补充算子资料和图模式example <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6314](https://gitcode.com/cann/ops-nn/issues/6314) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本次改动涉及的场景均已覆盖验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10468 | 22 天前 | |
Conv:开源Conv2D的算子原型、算子信息库和InferShape Co-authored-by: weijian317<gaoweijian1@huawei.com> # message auto-generated for no-merge-commit merge: !10468 merge iter into master Conv:开源Conv2D的算子原型、算子信息库和InferShape Created-by: weijian317 Commit-by: weijian317 Merged-by: cann-robot Description: ## 描述 开源Conv2D的算子原型、算子信息库和InferShape,并补充算子资料和图模式example <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6314](https://gitcode.com/cann/ops-nn/issues/6314) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本次改动涉及的场景均已覆盖验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10468 | 22 天前 | |
修改产品名 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11348 merge master into master 修改产品名 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 修改产品名 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 仅涉及md文档更新,不涉及测试 ## 文档更新 修改所有md文件的产品名称 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11348 | 23 天前 | |
[Fix] 修复 OptimizedTransducer 空 batch 的 Host Tiling 除零 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !9106 merge fix/2026-08-23-ops-nn-optimized-transducer-empty-batch-01 into master [Fix] 修复 OptimizedTransducer 空 batch 的 Host Tiling 除零 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: ## 修复摘要 修复 OptimizedTransducer Host Tiling 对空 batch 的未定义除法。旧实现先将平台核心数 限制为 batch 大小,batch_size == 0 时得到 coreNum == 0,随后执行取模和除法,普通 构建可能以 GRAPH_SUCCESS 生成 block_dim=0,UBSan 会报告除零。 在分核计算前拒绝 batch_size == 0 并返回 GRAPH_FAILED,避免生成无效 Tiling 数据。 合法正 batch 的现有分核和 workspace 计算保持不变。 ## 变更范围 - experimental/optim/optimized_transducer/op_host/optimized_transducer_tiling.cpp:增加 空 batch 参数检查和错误返回。 该修复不改变公开接口、合法输入的 Tiling 结果或 kernel 计算路径;空 batch 现在由 Host Tiling 明确视为不支持的输入,调用方可以在图编译阶段收到失败结果。 ## 测试结果 - 使用 CANN 原生 OpTilingContextBuilder 构造真实 OptimizedTransducer Tiling 上下文。 - 普通探针构建和 UBSan 探针构建均成功。 - batch=1:返回 GRAPH_SUCCESS,block_dim=1。 - batch=2:返回 GRAPH_SUCCESS,block_dim=2。 - batch=0:普通版和 UBSan 版均返回 GRAPH_FAILED,退出码为 1;UBSan 不再报告 division by zero 或其他 runtime error。 Toolkit/OPP 为 CANN 9.1.0,目标源码属于后续开发线。 ## 关联的 Issue - https://gitcode.com/cann/ops-nn/issues/5070 See merge request: cann/ops-nn!9106 | 20 天前 | |
fix: 修复 MSELossV2/MultilabelMarginLoss arch35 规约精度, 规范化 4 算子 golden Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !11252 merge fix/arch35-4ops-round2 into master fix: 修复 MSELossV2/MultilabelMarginLoss arch35 规约精度, 规范化 4 算子 golden Created-by: zl_hw Commit-by: tangpingchuan 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!11252 | 24 天前 | |
fix: Remove unnecessary workspace for init_embedding_hash_table/sigmoid_cross_entropy_with_logits_v2/group_norm/group_norm_silu Co-authored-by: yifangao<gaoyifan20@huawei.com> # message auto-generated for no-merge-commit merge: !9867 merge workspace-remove-3 into master fix: Remove unnecessary workspace for init_embedding_hash_table/sigmoid_cross_entropy_with_logits_v2/group_norm/group_norm_silu Created-by: yifangao Commit-by: yifangao Merged-by: cann-robot Description: ## 描述 Ascend 950(arch35)路径下, init_embedding_hash_table、sigmoid_cross_entropy_with_logits_v2、group_norm 和 group_norm_silu 算子未实际使用 workspace,但原实现仍申请或保留了 workspace 相关处理。 本次修改: - 将上述 4 个算子的 workspace 大小设置为 0,避免不必要的内存申请。 - 删除 group_norm 和 group_norm_silu kernel 中未使用的 workspace 判空、用户 workspace 获取及参数传递。 - 统一 workspace 常量命名,并补充相关文件末尾换行。 - 修改仅作用于 Ascend 950(arch35)实现,不影响其他芯片路径。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6122 ## 测试 David冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260928_144411817 obp冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260929_083012442 ## 文档更新 无文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9867 | 23 天前 | |
[CANNBot]新增TensorScatterSub算子 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !11012 merge tensor_scatter_sub_migration into master [CANNBot]新增TensorScatterSub算子 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 950新增TensorScatterSub算子 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6302 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 已进行200+ ST用例测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11012 | 22 天前 | |
fix: Remove unnecessary workspace for init_embedding_hash_table/sigmoid_cross_entropy_with_logits_v2/group_norm/group_norm_silu Co-authored-by: yifangao<gaoyifan20@huawei.com> # message auto-generated for no-merge-commit merge: !9867 merge workspace-remove-3 into master fix: Remove unnecessary workspace for init_embedding_hash_table/sigmoid_cross_entropy_with_logits_v2/group_norm/group_norm_silu Created-by: yifangao Commit-by: yifangao Merged-by: cann-robot Description: ## 描述 Ascend 950(arch35)路径下, init_embedding_hash_table、sigmoid_cross_entropy_with_logits_v2、group_norm 和 group_norm_silu 算子未实际使用 workspace,但原实现仍申请或保留了 workspace 相关处理。 本次修改: - 将上述 4 个算子的 workspace 大小设置为 0,避免不必要的内存申请。 - 删除 group_norm 和 group_norm_silu kernel 中未使用的 workspace 判空、用户 workspace 获取及参数传递。 - 统一 workspace 常量命名,并补充相关文件末尾换行。 - 修改仅作用于 Ascend 950(arch35)实现,不影响其他芯片路径。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6122 ## 测试 David冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260928_144411817 obp冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260929_083012442 ## 文档更新 无文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9867 | 23 天前 | |
refactor(mat_mul_v3): use MMV3CeilAlign instead of CeilDivision in CVP kernel Co-authored-by: void_ptr<baochaojun@huawei.com> # message auto-generated for no-merge-commit merge: !11423 merge fix_issue_6329 into master refactor(mat_mul_v3): use MMV3CeilAlign instead of CeilDivision in CVP kernel Created-by: void_ptr Commit-by: void_ptr Merged-by: cann-robot Description: ## 描述 规范性整改:matmulv3 cvp kernel不再使用 AscendC::CeilDivision接口 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:规范性整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11423 | 22 天前 | |
[CANNBot]add bn3d_training_update_grad for Ascend950 Co-authored-by: xusxx<xushaoxian@huawei.com> Co-authored-by: andong_hw<andong2@huawei.com> # message auto-generated for no-merge-commit merge: !11150 merge feat/bn3d_training_update_grad into master [CANNBot]add bn3d_training_update_grad for Ascend950 Created-by: xusxx Commit-by: xusxx;andong_hw Merged-by: cann-robot Description: ## 描述 下一代新增支持 Bn3dTrainingUpdateGrad,用于 3D Batch Normalization 训练反向的逐通道参数梯度归约:给定反向梯度 grads、前向输入 x 与逐通道统计量 batch_mean/batch_variance,沿批与空间维(N/D/H/W)归约得到缩放/偏置参数梯度 diff_scale/diff_offset(fp32)。支持 grads/x 的 fp16/fp32/bf16 × NCDHW/NCHW/NHWC 具名格式,3 个 tilingKey(base=0 / group=1 借 R 二次 reduce / empty=2 空 tensor)。仅 Ascend950(arch35)、GEIR 图模式通路(对齐 BN3D 训练家族,aclnn_exclude)。 ## 测试 - UT:op_host tiling(22) + infershape(4) 共 26/26 PASS - ST:tests/st/arch35 共 129 条,TTK kernel -b=release 全 PASS(precision 覆盖矩阵 38 + generalization 91) ## 文档更新 - 新增 norm/bn3d_training_update_grad/README.md(功能/公式/参数/产品支持) - 更新 docs/zh/op_list.md 新增算子条目 ## 类型标签 - [x] 新特性 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11150 | 22 天前 | |
[agent] [Requirement|需求建议]: 补齐 ApplyMomentum 的 TTK golden 与测试接入 Co-authored-by: huang-qiang<huangqiang3@huawei.com> # message auto-generated for no-merge-commit merge: !11316 merge agent/issue-102 into master [agent] [Requirement|需求建议]: 补齐 ApplyMomentum 的 TTK golden 与测试接入 Created-by: huang-qiang Commit-by: huang-qiang Merged-by: cann-robot Description: 由 agent 自动创建。 阶段四已人工确认。四个阶段(需求分析 → 方案设计 → 编码实现 → 测试验证)全部完成并逐阶段通过人工确认。 交付摘要: - 新增 optim/apply_momentum/tests/assets/golden.py:基于 TensorFlow tf.raw_ops.ResourceApplyMomentum 的 TTK golden 插件,覆盖 use_nesterov False/True 两分支,返回 [var_out, accum_out] 同时校验参数更新与 accum 回写;FP16/BF16 提升 FP32,use_locking 按并发保护处理(非计算属性)。 - CSV 追加 12 条 accum 验证用例(声明 2 输出 + inplace 索引 (0,1) 使 accum 被回读比对),覆盖两分支 × fp32/fp16/bf16 + 零梯度/mom=0/mom=0.999/lr=0/负梯度/标量等边界。 - 验证:TTK 真实 loader 发现+绑定+实调 golden(TTK_BIND_OK)、ttk list 103 用例、CPU 自测 ALL_PASS、pre-commit 全 Passed。 - 已 commit 到 agent/issue-102(9926440a9),未 push/未建 PR。真实 NPU 端到端精度已如实标注为"未验证(无 NPU)"。 - 未改动任何生产代码。 TASK_COMPLETE See merge request: cann/ops-nn!11316 | 18 天前 | |
fix(pooling): 消除 VF scope 内结构体参数访问,修复 Ascend950 VF stack 波动 Co-authored-by: qq_52056150<wangshuo179@huawei.com> # message auto-generated for no-merge-commit merge: !11396 merge fix/pooling-vf-scope-param-struct into master fix(pooling): 消除 VF scope 内结构体参数访问,修复 Ascend950 VF stack 波动 Created-by: qq_52056150 Commit-by: qq_52056150 Merged-by: cann-robot Description: ## 描述 - 回退“收编 Ascend950/arch35 Kernel 重复实现”在 pooling 侧引入的结构体参数访问,恢复局部变量推导,消除 -Wcce-compat 告警与 VF stack 上涨; - MaxPoolGradWithArgmaxV3 NCHW int64 索引路径:索引装载细化 + 主循环拆分 VF scope,修复VF stack 爆栈问题(6944B/6176B > 6144B)导致的编译失败。 ## 关联的Issue [#6326](https://gitcode.com/cann/ops-nn/issues/6326) ## 测试 本地复跑不同的数据类型用例组合均通过,-d模式下无爆栈问题,精度均通过,David冒烟无异常 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11396 | 22 天前 | |
test(swiglu_mx_quant): 修复 golden 参考实现的量化计算逻辑缺陷(dtype 导入/scale_alg/round_mode/目标网格/NaN 语义) Co-authored-by: cheng-ziyang2<chengziyang2@huawei.com> # message auto-generated for no-merge-commit merge: !11211 merge cherry-pick-mr-11136-1790242311941-auto into master test(swiglu_mx_quant): 修复 golden 参考实现的量化计算逻辑缺陷(dtype 导入/scale_alg/round_mode/目标网格/NaN 语义) Created-by: huang-qiang Commit-by: cheng-ziyang2 Merged-by: cann-robot Description: ## 描述 修复 swiglu_mx_quant ST 测试 golden 参考实现(tests/assets/golden.py,经 __golden__ 注册供测试框架调用)的 6 处量化计算逻辑缺陷,使其与 kernel 实现及接口文档语义对齐。 ### 改动原因 原 golden 参考实现与 kernel/文档语义存在以下偏差: 1. **dtype 导入退化**:原从 ml_dtypes 导入 float8_e8m0/float4_e2m1_fn/float4_e1m2_fn(该包不提供),ImportError 时静默置 None,导致 FP4/FP8 dst_type 的参考输出退化为 float32。 2. **scale_alg 被忽略**:_mx_quantize 无论 scale_alg 取值均按 OCP 公式计算 scale,未实现文档场景2(aclnnSwigluMxQuant.md:131-145,scaleAlg=1 仅 FP8:S = Amax/Amax(DType),指数在尾数非零时向上取整)与 kernel BLAS 缩放(swiglu_mx_quant_common.h:270 ComputeScaleCuBLASNotLastAxis、:881 ComputeScaleBLASLast)语义。 3. **round_mode 舍入错误**:'round' 原用 np.round(ties-to-even),与 kernel CAST_ROUND(远离零舍入,swiglu_mx_quant_apt.cpp:42 RoundModeMapper)不一致;缺 ceil/trunc 分支;未知模式静默按 rint 处理。 4. **整数网格取整**:原对缩放后数值直接 floor/round/rint(按整数网格),未按目标 dtype 浮点网格量化(private_exp + 尾数位缩放 + min_exp/max_norm 截断),FP4/FP8 参考值系统性错误。 5. **inf/NaN 语义错误**:末尾对 y/scale 统一 nan_to_num,将 inf/huge 块的 E8M0 NaN scale(byte 255)改为 0,与 kernel 语义(NaN 块产 NaN scale、元素 NaN 转 +0)不符;且 shared_exp>127 原被 clip 为 byte 255 后按 2^128 解释。 6. **mxscale 偶数 pad 槽**:pad 槽用 np.zeros 填充,未显式填 2^-127(E8M0 byte 0),与 kernel 零填充幻影块语义不一致。 ### 改动方法 - 文件:quant/swiglu_mx_quant/tests/assets/golden.py(+113/-60),不涉及 kernel/host/docs 变更: - dtype 导入分拆:ml_dtypes(bfloat16/float8_e4m3fn/float8_e5m2)+ en_dtypes(float8_e8m0/float4_e2m1/float4_e1m2),缺失时显式 ImportError,删除全部 None 降级分支。 - _DST_TYPE_MAP 扩展为 (name, dtype, emax, exp_bits, mant_bits, min_exp, max_norm),支撑网格量化与 BLAS scale。 - 新增 _round_mantissa(rint/round 远离零/floor/ceil/trunc,未知模式 ValueError)、_share_exp_ocp(OCP 公式,全零块 → -inf)、_share_exp_blas(S = amax/max_norm,fp32 指数 + 尾数非零进位)、_quantize_elements(private_exp + 尾数位缩放 + round + ±max_norm 截断)。 - _mx_quantize:use_blas = scale_alg != 0 and dst_type in (35, 36)(FP8 才走 BLAS);shared_exp > 127 → NaN(E8M0 byte 255),< -127 → clamp;元素 NaN → +0;scale pad 槽显式填 2^-127。 - 删除末尾 y/scale 的 nan_to_num,保留 E8M0 NaN scale;删除死代码 output_dtypes 检查。 - docstring 同步补充量化语义说明(OCP/cuBLAS scale、网格量化、round modes、NaN 语义、mxscale 布局)。 ## 关联的Issue - #6182 ## 测试 - 改动为测试资产(golden 参考实现),不改变算子 kernel/host 代码与 tiling 行为。 - 修复后 golden 语义与 kernel RoundModeMapper(swiglu_mx_quant_apt.cpp:30-45)、BLAS scale(swiglu_mx_quant_common.h:270/881)及文档公式(aclnnSwigluMxQuant.md:111-145 场景1/场景2)对齐。 ## 文档更新 - 无。仅测试资产内 docstring 说明同步更新,不涉及 docs/ 目录变更。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11211 | 18 天前 | |
docs: 修正 aclnnThnnFusedLstmCellBackward 文档格式与示例注释问题 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !11406 merge thnn-fix-main into master docs: 修正 aclnnThnnFusedLstmCellBackward 文档格式与示例注释问题 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修正 thnn_fused_lstm_cell_grad 算子文档(aclnnThnnFusedLstmCellBackward.md)与示例代码(test_aclnn_thnn_fused_lstm_cell_grad.cpp)中的资料与注释问题: 1. 文档:将参数表格中张量 shape 描述的全角逗号修正为半角,例如 [batch,hidden_size] → [batch, hidden_size]、[batch,4 * hidden_size] → [batch, 4 * hidden_size],涉及 dhy/dc/cx/cy/dgates 等张量。 2. 示例代码: - 修正主机侧数据初始化注释中的尺寸说明(如 1*8 = 8个、1*8*4 = 32个)。 - 将输入张量变量 gates 统一重命名为 storage,与算子接口参数命名一致。 - 将输出拷贝变量 resultDwhData 重命名为 resultDbData,与对应输出张量 db 一致。 - 补充 dhy aclTensor 的创建注释,移除多余的 ; 及文件末尾缺失的换行符。 - 更新文件头 License 版权声明格式(2025-2026)。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> - #6321 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本次改动仅涉及文档与示例代码注释,未修改算子实现逻辑;示例代码变量重命名后保持编译可用。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了 rnn/thnn_fused_lstm_cell_grad/docs/aclnnThnnFusedLstmCellBackward.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11406 | 22 天前 | |
[CANNBot]新增TensorScatterSub算子 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !11012 merge tensor_scatter_sub_migration into master [CANNBot]新增TensorScatterSub算子 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 950新增TensorScatterSub算子 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6302 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 已进行200+ ST用例测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11012 | 22 天前 | |
修复使用asan执行ut的报错 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !10930 merge master into master 修复使用asan执行ut的报错 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 背景:当前ut使用asan工具执行ut报错,需要修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10930 | 24 天前 | |
fix(add_rms_norm_dynamic_quant): 顶层入口对非int标量做原始类型校验,修复dispatcher归一化绕过 Co-authored-by: wangqi<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !10891 merge fix/add-rms-norm-quant-public-entry-validation into master fix(add_rms_norm_dynamic_quant): 顶层入口对非int标量做原始类型校验,修复dispatcher归一化绕过 Created-by: wangqi_ai Commit-by: wangqi Merged-by: cann-robot Description: ## 关联 issue fixes #6055 ## 问题 顶层入口 cann_ops_nn.add_rms_norm_dynamic_quant(文档单算子示例路径)解析为 dispatcher OpOverloadPacket,标量参数在进入算子代码前被 schema 静默归一化(torch.int4 -> 40、torch.uint7 -> 36、np.int64(36) -> 36 等)。torch.uint6/uint7/int4/int5 四个 dtype 的序号恰好完整覆盖合法 dst_type 值域 {35,36,40,41},导致传入非 int 类型完全不报错、静默按"碰巧"的量化类型执行,与约束说明承诺的入口 TypeError 不符。详见 #6055。 ## 修改内容 1. torch_extension/cann_ops_nn/ops/norm/add_rms_norm_dynamic_quant/add_rms_norm_dynamic_quant.py 拆分 PrivateUse1 kernel(原逻辑逐字保留)与公开入口 add_rms_norm_dynamic_quant:先 _validate_arg_types 校验**原始**参数,再委托 torch.ops.cann_ops_nn.add_rms_norm_dynamic_quant 分发;公开入口携带 _cann_ops_nn_public_entry_ 标记。 2. torch_extension/cann_ops_nn/__init__.py __getattr__ 优先导出带标记的公开入口(而非 dispatcher 句柄);未携带标记的算子保持原行为——opt-in 机制,对其余算子零影响。 3. norm/add_rms_norm_dynamic_mx_quant/tests/ut/torch_extension/test_torch_extension_param_validation.py 入口结构锁定用例更新为断言"公开入口 + 与 raw 入口同一函数对象"(标量拦截覆盖经同一性断言传递至既有用例);删除与 test_scalar_type_interception 完全重复(同函数×同 7 个坏值×同断言)的参数化用例。 4. norm/add_rms_norm_dynamic_mx_quant/docs/torchapi_add_rms_norm_dynamic_quant.md 约束说明修正严格校验适用入口(补充顶层入口;dispatcher 归一化说明限定为直接经 torch.ops 调用场景);两个调用示例改为打印 shape/dtype,避免大 shape 输出刷屏。 ## 为什么委托 torch.ops 而非直调 C++ 模块 保证图模式行为不变:torch.compile 下 Dynamo 将公开入口内联后,torch.ops 调用仍作为 FX 图节点(实测 node.target 与修复前同为 OpOverloadPacket、逐节点一致),graph_convert 注册的 torchair GE 转换不受影响;若直调 C++ 模块则会在 builder.load() 处 graph break,图模式静默退化为 eager(mxscale dtype 等文档承诺行为改变)。 ## 验证(Ascend 950PR 实测) - 参数校验 UT:**42 passed**(meta/CPU,设备无关) - NPU UT test_torch_extension.py:**113 passed** - 文档 eager 示例路径实测:torch.int4/uint6/uint7/int5、torch.float8_e5m2/e4m3fn、np.int64/np.int32、36.0、"36"、True 全部抛指名 TypeError(如 dst_type must be a Python int (35=FP8_E5M2, 36=FP8_E4M3FN, 40=FP4_E2M1, 41=FP4_E1M2), but got torch.dtype: torch.int4);dst_type=36 正常输出 float8_e4m3fn (4,64),示例新打印语句输出与返回值说明表一致 - 图模式:FX 图与修复前逐节点一致;graph(trace) 与 eager 数值 torch.equal 为 True;torch.compile 下传 torch.int4 在 trace 阶段即 TypeError - pre-commit run(ruff check / ruff format / codespell / OAT 等)全部通过,零自动改动 ## 兼容性 - eager 合法调用(Python 原生 int/str/bool/float、IntEnum)行为不变 - torch.ops.cann_ops_nn.* 直调路径行为不变(框架归一化 + 值域兜底,文档已说明) - 其余算子顶层入口解析行为不变(仅带标记的公开入口生效) See merge request: cann/ops-nn!10891 | 1 个月前 | |
fix(msda): 加固 multi_scale_deformable_attn 910b/950 输入校验,封堵 GM 越界读 Co-authored-by: cuijie25<cuijie24@h-partners.com> # message auto-generated for no-merge-commit merge: !11303 merge msda-gm-oob-guard into master fix(msda): 加固 multi_scale_deformable_attn 910b/950 输入校验,封堵 GM 越界读 Created-by: cuijie25 Commit-by: cuijie25 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> multi_scale_deformable_attn 算子的 kernel 信任 GM 中 spatialShapes(H/W) 与 levelStartIndex 的数值计算 valueGm 读偏移,op_api 仅校验 shape 不校验数值,非法输入会导致 GM 越界读。 本 PR 在 910b generic/high_perf 与 950 simt/generic 各分支的既有读取点前增加数值校验(950 的 generic 路径存在 arch35/ms_deform_attn_generic.h 与 op_kernel/ms_deform_attn_generic.h 两份副本,均已覆盖):levelStart < 0 或 levelStart + H*W > numKeys 时 Trap 终止(h/w 非正时角落 guard 恒假、零读取,无需正负性校验);arch35 tiling 增加 numLevels 一致性校验。校验不使用 ascendc_assert(避免热路径性能影响),仅裸 Trap。 其中 arch35/ms_deform_attn_generic.h 副本的守卫系按检视意见在 c5986fae8 补齐,tiling 日志文案同步修正(levelStartIndex[0]=%lu 实际打印 dim0 尺寸,改为 levelStartIndex.numLevels=%lu)。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 910b(Atlas A2):ATK 30 例精度通过(fp32≈1e-6/fp16≈5e-4/bf16≈4e-3);atk performance_device 30 例三轮 + msprof op case 级单核测量,前后性能对比零劣化;非法注入(BAD_HW/BAD_LAST)确定性 Trap 拦截,静默越界场景(轻微越界落入已映射内存)由校验拦截而内置版静默产出污染结果。 - 950(Ascend 950PR):四用例(SIMT/SIMD 回归 + 触发)通过;atk 30 例前后对比(各 28 例可比)开销约 1%。 - 说明:删除新增的 ascendc_assert 诊断打印以规避热路径性能影响,非法输入仍 Trap(507035)。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11303 | 22 天前 | |
修改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 个月前 | |
docs: 新增图融合规则说明文档 Co-authored-by: linzehui2058<2602241040@qq.com> # message auto-generated for no-merge-commit merge: !9676 merge fusion_pass_doc into master docs: 新增图融合规则说明文档 Created-by: linzehui2058 Commit-by: linzehui2058 Merged-by: cann-robot Description: ## 描述 对于已开源的图融合算子,进行对应的资料开源,包含MatmulToGemmOpFusionPass、MatmulReshapeTransposeFusionPass、GemmToMatmulFusionPass、BatchMatMul2MulFusionPass 其中的png图片格式,使用lfs进行托管 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5541 ## 文档更新 matmul\batch_mat_mul_v3\docs\BatchMatMul2MulFusionPass.md matmul\mat_mul_v3\docs\MatmulToGemmOpFusionPass.md matmul\mat_mul_v3\docs\MatmulReshapeTransposeFusionPass.md matmul\mat_mul_v3\docs\GemmToMatmulFusionPass.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9676 | 1 个月前 | |
动态库解耦 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 个月前 | |
einsum_pass图融合开源 Co-authored-by: linzehui2058<2602241040@qq.com> # message auto-generated for no-merge-commit merge: !9312 merge einsum_pass into master einsum_pass图融合开源 Created-by: linzehui2058 Commit-by: linzehui2058 Merged-by: cann-robot Description: ## 描述 einsum_pass图融合开源+资料开源,资料涉及公式label,会误判为拼写错误,同步添加检查白名单 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6241 ## 测试 门槛用例验证 ## 文档更新 matmul/batch_mat_mul_v3/docs/EinsumPass.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:融合算子开源 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9312 | 23 天前 | |
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(cmake): opkernel 单独构建跳过 GenerateEsPackage 与 add_es_library_and_whl Co-authored-by: yuhao_<yuhao93@huawei.com> # message auto-generated for no-merge-commit merge: !11130 merge es_cmake_0923 into master fix(cmake): opkernel 单独构建跳过 GenerateEsPackage 与 add_es_library_and_whl Created-by: chen_0715 Commit-by: yuhao_ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> build.sh --opkernel编译算子时,不需要GenerateEsPackage 与 add_es_library_and_whl参与编译,本pr通过在单独构建opkernel的时候跳过GenerateEsPackage 与 add_es_library_and_whl的编译,其余场景不变。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6189 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 编译出包正常,--opkernel下不编译ES,且出包二进制与原先一致。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:优化编译流程 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11130 | 28 天前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 23 天前 | |
init | 1 年前 | |
docs: add LayerNormRemoveBroadcastFusionPass doc Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9631 merge ln_pass_doc into master docs: add LayerNormRemoveBroadcastFusionPass doc Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 为现有LayerNormRemoveBroadcastFusionPass融合规则补充独立资料页。该规则在Ascend 950PR/Ascend 950DT场景下,将LayerNorm算子gamma和beta输入前的BroadcastTo从图中删除,使gamma和beta直接作为LayerNorm算子的输入,并将begin_norm_axis和begin_params_axis统一设置为归一化维度的起始轴。 资料同步说明规则的使用约束: - LayerNorm算子的gamma和beta输入前均为BroadcastTo,且两个BroadcastTo的shape输入相同。 - 输入x、gamma和beta均为静态shape。 - gamma和beta不为标量,二者的shape和数据类型相同。 - gamma的维数不大于x的维数,且gamma的shape与x从归一化轴开始的后缀shape相同。 - LayerNorm算子的begin_norm_axis换算为非负轴后,指向归一化维度的起始轴。 同时新增融合前后拓扑对比图,展示两个BroadcastTo节点被移除前后的图结构。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5430 ## 测试 - 本次仅新增文档和配图,不涉及代码逻辑变更,未执行代码测试。 - 已检查Markdown格式、图片文件格式及图片引用路径。 ## 文档更新 - 新增 norm/layer_norm/docs/LayerNormRemoveBroadcastFusionPass.md,说明融合模式和使用约束。 - 新增docs/zh/figures/LayerNormRemoveBroadcastFusionPass_1.png,展示融合前后的图结构。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9631 | 1 个月前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 23 天前 | |
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 个月前 | |
fix(cmake): opkernel 单独构建跳过 GenerateEsPackage 与 add_es_library_and_whl Co-authored-by: yuhao_<yuhao93@huawei.com> # message auto-generated for no-merge-commit merge: !11130 merge es_cmake_0923 into master fix(cmake): opkernel 单独构建跳过 GenerateEsPackage 与 add_es_library_and_whl Created-by: chen_0715 Commit-by: yuhao_ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> build.sh --opkernel编译算子时,不需要GenerateEsPackage 与 add_es_library_and_whl参与编译,本pr通过在单独构建opkernel的时候跳过GenerateEsPackage 与 add_es_library_and_whl的编译,其余场景不变。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6189 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 编译出包正常,--opkernel下不编译ES,且出包二进制与原先一致。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:优化编译流程 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11130 | 28 天前 | |
feat: add qbmm swiglu mx quant fusion Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !11230 merge master into master feat: add qbmm swiglu mx quant fusion Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 为 quant_matmul_activation_quant 算子增加 SwiGLU 与 MX 动态量化融合能力,并重构相关校验、推导和 Tiling 流程。 - 支持 SwiGLU:Matmul + Bias 后按 [gate | linear] 切分,计算 SiLU(gate) * linear,输出维度为输入的 1/2。 - 支持 Ascend 950、FP8 E4M3/E5M2、FP4 E2M1,以及 ND/WeightNZ 输入布局。 - 根据 scaleAlg 支持 OCP/BLAS 量化路径,并补充 FP4 对应量化算法。 - 新增 batch/without-batch kernel 路径,完善 WeightNZ、转置、MX Scale Shape 等参数校验。 - 保留并整理 GELU 现有路径,更新 Torch/ACLNN 接口、InferShape、Tiling、文档、示例和测试用例。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5902 ## 测试 - 已补充和更新 op_api、op_host、op_kernel UT 及 ST CSV。 - 已补充 GELU/SwiGLU、ND/WeightNZ、FP8/FP4、batch/without-batch 等主要场景用例。 ## 文档更新 - 已更新算子 README、接口说明、示例及测试相关文档。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11230 | 23 天前 | |
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 个月前 | |
revert//fix(opgraph): 支持旧版本 CANN 运行时加载融合 pass 库 Co-authored-by: cann-robot<cann@cann.team> # message auto-generated for no-merge-commit merge: !11095 merge revert-mr-9924-1790130631176-auto into master revert//fix(opgraph): 支持旧版本 CANN 运行时加载融合 pass 库 Created-by: cann-robot Commit-by: cann-robot 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!11095 | 29 天前 | |
upgrade version 9.2.0 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9513 merge master into master upgrade version 9.2.0 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 upgrade version 9.2.0 ## 关联的Issue [#5362](https://gitcode.com/cann/ops-nn/issues/5362) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 版本更新 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9513 | 1 个月前 |
🔥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&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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。