本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
上线A5环境冒烟测试任务 Co-authored-by: liuyi<larry.liuyi@huawei.com> # message auto-generated for no-merge-commit merge: !12990 merge master into master 上线A5环境冒烟测试任务 Created-by: Larry_liuyi Commit-by: liuyi Merged-by: cann-robot Description: ## 描述 上线A5环境冒烟测试任务,增加A5用例门禁拦截 ## 关联的Issue 关联Issue #https://gitcode.com/cann/ops-nn/issues/7632 ## 测试 测试环境已验证 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:CI更新,增加A5用例门禁任务 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12990 | 20 小时前 | |
修复文档中的示例和cpp文件中的不一致 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !13032 merge master into master 修复文档中的示例和cpp文件中的不一致 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 修复文档中的示例和cpp文件中的不一致 ## 关联的Issue [#7686](https://gitcode.com/cann/ops-nn/issues/7686) ## 测试 已经核对文档中的示例和cpp文件中的示例是一致的 ## 文档更新 activation/fatrelu_mul/docs/aclnnFatreluMul.md activation/softplus_v2_grad/docs/aclnnSoftplusBackward.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!13032 | 15 小时前 | |
feat(5162a): RegBase架构集合支持DAV_5162并修正向量寄存器宽度获取 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !12173 merge br_5162a_regbase_vreg into master feat(5162a): RegBase架构集合支持DAV_5162并修正向量寄存器宽度获取 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 Ascend5162A(DAV_5162,端侧 Tiny 类芯片)公共框架适配: 1. common/inc/op_host/op_const_def_nn.h:无新增常量(DAV_5162 统一使用 opbase 定义); 2. common/inc/op_host/tiling_util.h:IsRegbaseNpuArch 架构集合追加 Ops::Base::DAV_5162(集合为 {DAV_3510, DAV_5102, DAV_9201, DAV_9202, DAV_5162}),常量统一改为 Ops::Base:: 前缀; 3. common/inc/op_api/aclnn_util.h:两处 IsRegbase 架构集合同改(含 DAV_9202,与 tiling 侧口径统一); 4. common/inc/op_kernel/platform.h:kernel 侧 GetVRegSize 增加 __NPU_ARCH__ == 5162 分支(与 master 已有的 == 920 分支合并),返回 AscendC::VECTOR_REG_WIDTH(5162A 为 32B); 5. cmake/third_party/opbase.cmake:OPBASE_TAG_ID 从 0c5e2579 升级至 de414d06c(含 opbase PR !1031 DAV_5162 基础支持 + !1056/!1059 GetVRegSize 修复 + !1063 空指针修复)。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6815 ## 测试 - pre-commit 全量通过(trailing-whitespace / end-of-file / clang-format / codespell / OAT); - g++ 语法校验:CANN 9.2.0 / 9.3.0 双版本 0 error(IsRegbaseNpuArch / IsRegbase 三种调用形态全部实例化); - DAV_5162 使用 opbase op_const_def.h 的 static_cast 常量,旧版 CANN 兼容性看护环境(9.1.0/9.2.0-beta.2)编译安全。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!12173 | 17 小时前 | |
feat(5162a): RegBase架构集合支持DAV_5162并修正向量寄存器宽度获取 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !12173 merge br_5162a_regbase_vreg into master feat(5162a): RegBase架构集合支持DAV_5162并修正向量寄存器宽度获取 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 Ascend5162A(DAV_5162,端侧 Tiny 类芯片)公共框架适配: 1. common/inc/op_host/op_const_def_nn.h:无新增常量(DAV_5162 统一使用 opbase 定义); 2. common/inc/op_host/tiling_util.h:IsRegbaseNpuArch 架构集合追加 Ops::Base::DAV_5162(集合为 {DAV_3510, DAV_5102, DAV_9201, DAV_9202, DAV_5162}),常量统一改为 Ops::Base:: 前缀; 3. common/inc/op_api/aclnn_util.h:两处 IsRegbase 架构集合同改(含 DAV_9202,与 tiling 侧口径统一); 4. common/inc/op_kernel/platform.h:kernel 侧 GetVRegSize 增加 __NPU_ARCH__ == 5162 分支(与 master 已有的 == 920 分支合并),返回 AscendC::VECTOR_REG_WIDTH(5162A 为 32B); 5. cmake/third_party/opbase.cmake:OPBASE_TAG_ID 从 0c5e2579 升级至 de414d06c(含 opbase PR !1031 DAV_5162 基础支持 + !1056/!1059 GetVRegSize 修复 + !1063 空指针修复)。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6815 ## 测试 - pre-commit 全量通过(trailing-whitespace / end-of-file / clang-format / codespell / OAT); - g++ 语法校验:CANN 9.2.0 / 9.3.0 双版本 0 error(IsRegbaseNpuArch / IsRegbase 三种调用形态全部实例化); - DAV_5162 使用 opbase op_const_def.h 的 static_cast 常量,旧版 CANN 兼容性看护环境(9.1.0/9.2.0-beta.2)编译安全。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!12173 | 17 小时前 | |
[Documentation|文档反馈]: 补充 Assert input_condition 的标量形状约束 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !12417 merge fix/2026-10-21-assert-input-condition-scalar-constraint into master [Documentation|文档反馈]: 补充 Assert input_condition 的标量形状约束 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: # [Documentation|文档反馈]: 补充 Assert input_condition 的标量形状约束 Assert 的 README 未说明 input_condition 必须为标量,但 AICPU kernel 会拒绝秩非 0 的输入并返回 KERNEL_STATUS_PARAM_INVALID。在约束说明中明确秩为 0(shape 为 []),并指出 shape 为 [1] 的一维单元素 Tensor 不符合要求。 ## 验证 - kernel、现有 UT 和构图示例均确认该输入必须为标量;修改文件的目标仓库 pre-commit 检查通过。 关联 Issue: https://gitcode.com/cann/ops-nn/issues/6980 See merge request: cann/ops-nn!12417 | 1 天前 | |
fix(conv): 修复infershape与Depthwise融合pass的6处缺陷 Co-authored-by: XianyongWang<aaronhkw@163.com> # message auto-generated for no-merge-commit merge: !12951 merge fix/conv-defects-v2 into master fix(conv): 修复infershape与Depthwise融合pass的6处缺陷 Created-by: XianyongWang Commit-by: XianyongWang Merged-by: cann-robot Description: ## 描述 修复静态代码扫描发现并经人工逐条溯源确认的 6 处缺陷,涉及 conv 公共 infershape 与 Depthwise 相关融合 pass。 ## 关联的Issue 关联Issue [#6961](https://gitcode.com/cann/ops-nn/issues/6961) ## 测试 编译: opgraph_nn / ophost_nn 均 0 error UT: opgraph 1218 passed,其中 depthwise 相关 68/68 全过 ophost 8530 passed ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12951 | 15 小时前 | |
feat(gelu_v2): 新增GeluV2ONNXFusionPass融合规则(56模式),将ONNX导出的Gelu公式子图融合为GeluV2算子 Co-authored-by: ywx1080114<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !10765 merge gelu_v2_onnx_fusion_pass into master feat(gelu_v2): 新增GeluV2ONNXFusionPass融合规则(56模式),将ONNX导出的Gelu公式子图融合为GeluV2算子 Created-by: yuanbin_22 Commit-by: ywx1080114 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增 GeluV2ONNXFusionPass 图融合规则,将 ONNX 导出(如 PyTorch 导出 ONNX)产生的 gelu 公式子图融合为单个 GeluV2 算子,减少小算子开销: - **erf 场景**(approximate="none"):gelu(x) = 0.5 * x * (1 + erf(x / √2)),覆盖 RealDiv(0.5 常量在 mul0/mul1 两种位置)与 TrueDiv(Mul 形式)共 3 种拓扑 × Add/Mul 输入顺序 8 个变体 = 24 个模式; - **tanh 场景**(approximate="tanh"):gelu(x) = 0.5 * x * (1 + tanh(√(2/π) * (x + 0.044715 * x³))),匹配与内核一致的完整近似公式,按 κ/β/1.0 常量位置 × 外部乘法顺序展开 32 个变体;内层链 squareMul=Mul(x,x)、cubeMul=Mul(squareMul,x)(左结合)、innerAdd=Add(x, κx³)(读序)与 **0.5 常量先乘形式(mul0 族)** 固定为主导导出形式(所有已知 ONNX 导出器均按 0.5*x*(1+tanh(...)) 书写,无导出器后绑 0.5); - 合计 56 个模式。因 ES 模式匹配器对输入端口严格比较、不提供可交换算子的操作数匹配,各种导出顺序需枚举为显式模式变体; - 常量值不在模式层匹配,统一在 MeetRequirements 中按容差校验:√2 / 1/√2 / β 按 dtype 容差(FP32 0.00001,FP16 0.001),κ 容差 0.0001,Add 常量必须为 1.0,Mul 常量必须为 0.5;**常量值为 NaN 时显式拒绝**(NaN 与任何容差比较均为假,ParseScalarValue 解析阶段 std::isnan 检查); - 校验约束:输入 x 仅支持 FLOAT16/FLOAT32/BFLOAT16;公式常量必须是 FLOAT16/FLOAT32 标量;中间节点输出须被子图内单点消费(被子图外复用则跳过融合);TrueDiv(Mul 形式)场景 x 不能为标量;平台门禁 IsDav3510Arch()(Ascend 950PR&950DT 系列); - 替换:按激活类型设置 approximate(Erf→"none",Tanh→"tanh"),通过 ge::es::GeluV2(inputX, approximate) 构建替换子图,继承原输入/输出 desc 并执行 InferShape; - 注册:REG_FUSION_PASS(GeluV2ONNXFusionPass).Stage(ge::CustomPassStage::kAfterInferShape)。 同时删除 op_graph/fusion_pass/.gitkeep 占位文件。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> - 关联 Issue #6861 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 新增 test_gelu_v2_onnx_fusion_pass.cpp 共 37 个 UT 用例(纳入 OP_GRAPH_UT 模块构建): - 正向用例:erf 场景 RealDiv/TrueDiv 各拓扑、tanh 完整公式各常量顺序,覆盖 FP32/FP16/BF16 输入及 FP16 常量,验证融合为 GeluV2 且 approximate 设置正确; - 反向用例(不融合):div/β/κ/Add 常量值非法、**常量值为 NaN**、**tanh 场景 0.5 常量后绑形式**(无已知 ONNX 导出器产生该形式,模式集中已剔除)、常量非标量或 dtype 不支持、输入 dtype 不支持、非 950 平台及**架构查询失败**、中间节点被外部多消费者复用、**0.5 常量被子图外节点共享消费**(匹配器对模式内节点含常量强制精确 fan-out,外部消费者保留有效常量输入)、TrueDiv 场景输入为标量、边界输入为 Const 节点时的常量识别等。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 新增 activation/gelu_v2/docs/GeluV2ONNXFusionPass.md:融合模式(erf 3 种拓扑 + tanh 场景 32 变体共 56 模式)、计算公式、数据类型/常量取值(含 NaN 拒绝)/拓扑约束、支持型号(Ascend 950PR&950DT 系列); - 新增 4 张拓扑示意图 docs/zh/figures/gelu_v2_onnx_fusion_pass_*.png。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10765 | 15 小时前 | |
fix conv example Co-authored-by: huafeng793<chenhuafeng2@huawei.com> # message auto-generated for no-merge-commit merge: !12930 merge fix_example into master fix conv example Created-by: huafeng793 Commit-by: huafeng793 Merged-by: cann-robot Description: ## 描述 ops-nn/conv整改了opname -> optype。example需要配套修改 ## 关联的Issue [#7540](https://gitcode.com/cann/ops-nn/issues/7540) ## 测试 RDV ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12930 | 20 小时前 | |
docs(index): fix EmbeddingDenseGrad indices 数量约束 Co-authored-by: fullt<full.fu@huawei.com> # message auto-generated for no-merge-commit merge: !12991 merge docs/fix-embedding-dense-grad-indices-constraint into master docs(index): fix EmbeddingDenseGrad indices 数量约束 Created-by: fullt Commit-by: fullt Merged-by: cann-robot Description: ## 背景 修复 issue #6520: aclnnEmbeddingDenseGrad 文档约束「grad 的第 0 维大小必须等于 indices 的元素个数」仅对二维 grad 成立。 ## 问题 实现中 host tiling 将 grad 最后一维作为 embedding 维度、其余各维乘积作为 batch 大小(embedding_dense_grad_tiling.cpp),kernel 按该 batch 大小逐行读取 indices。因此高维 grad(如 [2,3,4])需要 6 个 indices,而非文档所述的 2 个;按现有文档准备较短的 indices 会导致 kernel 越界读取。 ## 修改 - experimental/index/embedding_dense_grad/docs/aclnnEmbeddingDenseGrad.md:约束改为「indices 必须是一维,元素个数等于 grad.shape[:-1] 各维度的乘积」,并补充 [2,3,4] 对应 6 个 indices 的示例。 - experimental/index/embedding_dense_grad/README.md:同步修正同一句错误约束。 仅涉及文档,不改变算子实现或接口。 See merge request: cann/ops-nn!12991 | 16 小时前 | |
fix(e9): 公共Host/归一化/量化及复杂推导算子内部错误码整改为注册错误码 Co-authored-by: luoyufan7<luoyufan7@h-partners.com> # message auto-generated for no-merge-commit merge: !12778 merge fix/e9-errcode-common-norm-quant into master fix(e9): 公共Host/归一化/量化及复杂推导算子内部错误码整改为注册错误码 Created-by: luoyufan7 Commit-by: luoyufan7 Merged-by: cann-robot Description: ## 描述 公共 Foreach Host、归一化、独立量化与复杂推导算子中已登记的校验将用户参数与框架元数据混用内部码,存在重复上报;量化算子的模式/可选输入/shape/dtype/属性约束缺少具体正式诊断。 整改方法(对应 #7371 设计方案): - 保留原有判定条件、返回状态与资源清理逻辑,仅替换错误上报方式; - 公共 Host/调度校验细化根因,区分用户参数与框架元数据,保持首报与返回路径; - 量化算子约束按语义映射正式错误码并携带实际值;复杂推导保持首报; - bidirection_lstm 判空由上游 codecheck 整改引入的 printf 辅助恢复为带注册错误码的结构化上报,同时保持宏参数内 return 的规范形式。 本 PR 覆盖 40 个生产文件(foreach_utils 公共 tiling、group_norm_silu/swish、advance_step、dequant_bias/situ/swiglu、situ_mx_quant、bidirection_lstm、softmax/log_softmax 系列等),对应最终表登记点 571 个。 开发基于冻结基线 ec2a78c2,已 rebase 至当前 master 并与期间上游改动合并:advance_step 保留上游新增的 CheckInputOutputFormat 与检查顺序调整;dequant_situ_quant 保留上游 group_index 可选语义;dequant_swiglu_quant 保留上游的文案修正。 ## 关联的Issue - Closes #7371(本系列共 4 个 PR,本 PR 为第 4 批收尾) ## 测试 A2 / CANN 9.2.0 上对组合工作区(本系列 4 组生产代码合并态、冻结基线 ec2a78c2)完成验证:910B Host UT 144/144、API UT 19/19、950 SituMxQuant Host/InferShape UT 6/6 共 169 个定向用例通过,Host/API 包构建通过。该结果来自组合工作区且基于冻结基线,rebase 至 master 后未单独重跑,以 CI 流水线为准。未执行 Kernel 数值/设备验证。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12778 | 1 天前 | |
更正 InitEmbeddingHashTable README 中的 initializer_mode 取值 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !12429 merge codex/init-embedding-hash-table-initializer-mode-20261021 into master 更正 InitEmbeddingHashTable README 中的 initializer_mode 取值 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: # 更正 InitEmbeddingHashTable README 中的 initializer_mode 取值 InitEmbeddingHashTable 的 README 将常量初始化模式写为 const,而 Host 实现只接受 constant,按文档配置会被判为非法模式。已将 README 的初始化模式说明更正为 random、constant,并修正 constant_value 的生效条件。静态核对及补丁检查通过。 关联 Issue: https://gitcode.com/cann/ops-nn/issues/6992 See merge request: cann/ops-nn!12429 | 3 天前 | |
fix: hard_sigmoid、index_check 长尾算子加固 Co-authored-by: klein8793<zhangli24@huawei.com> # message auto-generated for no-merge-commit merge: !12616 merge dev_zl_2026_1023 into master fix: hard_sigmoid、index_check 长尾算子加固 Created-by: klein8793 Commit-by: klein8793 Merged-by: cann-robot Description: ## 描述 对 hard_sigmoid 与 index_check 两个长尾算子进行质量加固。 ### hard_sigmoid - 修复 aclnn 示例错误路径资源泄漏:新增 ReleaseResources() 统一释放 aclTensor、device 内存、workspace、stream 与 device,错误路径显式释放后退出。 - 修正 alpha 属性默认值精度:0.16666666 → 0.16666667f(更接近 1/6)。 - 修复 op_nn_proto_extend.h 中 HardSigmoid proto 与 hard_sigmoid_proto.h 不一致:OUTPUT 补充 DT_INT32,INPUT 类型顺序对齐。 - golden.py 增加 TTK remote executor 对 self 单输入参数绑定的 workaround,并支持 alpha/beta 参与计算。 - README 补齐 alpha/beta 属性说明,调用方式术语规范为 aclnn API / GE 图模式。 ### index_check - tiling 新增 indices 列表各张量 dtype 一致性校验,报错接入规范化错误宏(OP_LOGE_FOR_INVALID_DTYPE、OP_LOGE_FOR_INVALID_DTYPES_WITH_REASON),输出具体 dtype 名称而非数字。 - README 将参数名 indices 更正为 indices_list,补充 dtype 一致性约束与"调用说明"章节。 - 补齐 ST(kernels CSV 23 条)与 UT(op_host tiling 单测)。 ## 关联的Issue 关联 Issue #7528 ## 测试 obp冒烟、david冒烟、加固测试均已通过 - index_check 新增 op_host tiling UT,覆盖 dtype 一致性、空列表、数量上限、bounds 形状与维度等场景;归档 TTK kernel ST 用例与 golden 脚本。 - hard_sigmoid 更新 golden.py 适配 TTK remote executor 与 alpha/beta 计算。 ## 文档更新 - activation/hard_sigmoid/README.md(alpha/beta 属性与调用方式)。 - index/index_check/README.md(indices_list 参数名、dtype 一致性约束、调用说明)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!12616 | 18 小时前 | |
[Documentation|文档反馈]:修改aclnnMesLossOut.md、aclnnMesLoss.md、aclnnMesLossBackWard.md关于输入输出的部分描述 Co-authored-by: xueyin_<xueyin2@huawei.com> # message auto-generated for no-merge-commit merge: !13002 merge master into master [Documentation|文档反馈]:修改aclnnMesLossOut.md、aclnnMesLoss.md、aclnnMesLossBackWard.md关于输入输出的部分描述 Created-by: xueyin_ Commit-by: xueyin_ Merged-by: cann-robot Description: ## 描述 修复 MSE Loss 系列算子 API 参考文档中关于输入/输出参数的描述错误,具体涉及以下问题: 1. 数据类型推导关系链接错误:aclnnMseLoss.md、aclnnMseLossOut.md 中 self/target 参数描述将"互推导关系"错误引用为"互转换关系"(conversion_relationship.md),已更正为 deduction_relationship.md。 2. 输出维度范围错误:aclnnMseLoss.md、aclnnMseLossOut.md 中 out 参数的维度范围由 1-8 更正为 0-8(当 reduction != 0 时 out 支持 0 维)。 3. 冗余约束移除:aclnnMseLossOut.md 中删除"当 reduction 的值为 1 或 2 时,out 的维度大于 0"这一已不适用的错误约束。 4. Backward 输出类型描述修正:aclnnMseLossBackward.md 中 out 参数的数据类型描述由"self 可推导的数据类型"更正为"self 与 target 推导之后可转换的数据类型"。 ## 关联的Issue 7636 ## 测试 文档描述性修改,不涉及代码逻辑,无需功能测试。 ## 文档更新 更新以下文档: - loss/mse_loss/docs/aclnnMseLoss.md - loss/mse_loss/docs/aclnnMseLossOut.md - loss/mse_loss_grad_v2/docs/aclnnMseLossBackward.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!13002 | 15 小时前 | |
[QBMM] Support ScaleNZ with WeightNZ through direct APIs and ACLNN Graph Co-authored-by: guiruoyu<guiruoyu@h-partners.com> # message auto-generated for no-merge-commit merge: !12631 merge codex/qbmm-scalenz-shape-contract-pr into master [QBMM] Support ScaleNZ with WeightNZ through direct APIs and ACLNN Graph Created-by: guiruoyu Commit-by: guiruoyu Merged-by: cann-robot Description: 支持 Ascend 950 的 MXFP8/MXFP4 WeightNZ + ScaleNZ,供 Torch eager、ACLNN 直调和原生 ACLNN Graph 使用。 变更范围:增加 ScaleNZ 格式与形状校验、独立布局分发及 scale 格式独立的 tiling cache key;沿用 master 的 ops-tensor 依赖 7e003480a814163941b686411d22f33ad727ee14(包含 ScaleNZ 合入提交 ca359cbb8378afcac5d44aae6ffd735460326306),补充功能和旧 ND scale 兼容性测试,并保持融合算子的旧 ND scale 描述符处理行为。保持现有接口;不包含 ND weight + ScaleNZ 和 Torch 编译图模式。 临时测试排除:注释 WQBMMv2 WeightNZ 的 batch=2、M=4、K=4097、N=2048 host UT 参数用例。CI #14797 中该用例期望 blockDim=8、实际为16,根因待定位后恢复;保留其余用例及断言。 See merge request: cann/ops-nn!12631 | 15 小时前 | |
fix(ada_layer_norm_grad): 修复可选输出传空指针时的解引用崩溃 Co-authored-by: qq_37917228<yanmingkui@huawei.com> # message auto-generated for no-merge-commit merge: !12476 merge fix/ada_layer_norm_grad_genout_mask into master fix(ada_layer_norm_grad): 修复可选输出传空指针时的解引用崩溃 Created-by: qq_37917228 Commit-by: qq_37917228 Merged-by: cann-robot Description: ## 描述 aclnnAdaLayerNormBackward 的 5 个输出参数 gradInputOut、gradScaleOut、gradShiftOut、gradWeightOut、gradBiasOut 在接口文档中均定义为「可选输出」,传入空指针属于合法用法(文档错误码表中 ACLNN_ERR_PARAM_NULLPTR 161001 仅覆盖 7 个输入参数,未包含任何输出参数)。 但前三个输出在调用 GenOutWithMask 时硬编码传入了 true,绕过了判空逻辑。当调用方对 gradInputOut / gradScaleOut / gradShiftOut 传入 nullptr 时,会在 GenOutWithMask 内执行 output->GetDataType() 解引用空指针导致崩溃。 改动方式:将三处硬编码 true 改为与 gradWeightOut、gradBiasOut 一致的 != nullptr 判断,使 5 个可选输出的处理方式保持统一。 因文档与错误码表均未要求主输出 gradInputOut 必填,本次保持「传空则跳过」的语义,不改为显式返回 ACLNN_ERR_PARAM_NULLPTR。 ## 关联的Issue 关联 Issue #7677 https://gitcode.com/cann/ops-nn/issues/7677 ## 测试 改动为可选输出判空逻辑修正,未新增 UT 用例。 ## 文档更新 无需更新文档。本次修改使实现与 docs/aclnnAdaLayerNormBackward.md 中「可选输出」的定义保持一致。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12476 | 15 小时前 | |
[CANNBot]fix(sparse_apply_adadelta): 修复GE图模式下动态shape编译失败 Co-authored-by: guankarl<guanhongwei3@huawei.com> # message auto-generated for no-merge-commit merge: !12871 merge fix_sparse_apply_adadelta_dyn_verify into master [CANNBot]fix(sparse_apply_adadelta): 修复GE图模式下动态shape编译失败 Created-by: guankarl Commit-by: guankarl Merged-by: cann-robot Description: ## 描述 修复 SparseApplyAdadelta 算子在 GE 图模式下动态 shape 编译失败的问题。 **根因**:CANN 内置算子库(canndev nn_training_ops.cc)的 SparseApplyAdadeltaVerify 对 var/grad 逐维精确比较且无未知维(-1)保护。e2e tf 通路动态图模式下,resource 类算子 var 经闭包捕获保持静态 shape,grad 进动态签名全维为 -1,11 != -1 导致图编译被拒——该写法使 resource 类算子在 GE 图模式下永远无法支持动态 shape。由于该算子内置版与迁移版同名双注册,且迁移版未注册 Verify,图编译期校验被内置版接管。 **修复**:在迁移版 op_graph 中注册带未知维保护的 Verify(对齐仓内 apply_adagrad / inplace_sub 的同款既有模式),后注册覆盖内置条目: - 维校验循环加 != UNKNOWN_DIM 前置条件(任一侧为未知维时跳过该维校验) - UNKNOWN_RANK(-2)直通 - 其余校验语义与内置版一致(indices 一维、var/grad 同秩、尾维一致) ## 关联的issue https://gitcode.com/wangyueting/changwei_hebaojing/issues/31 ## 测试 **e2e tf 通路验证(与 issue 原命令同通路:ttk e2e -d -c --golden-mode Disable,TF 2.6.5 + 官方配套 npu_device tfa_v0.0.49_9.1.0):** - 修复前:EAGER/GRAPH-CST 正常,**GRAPH-DYN 失败**,报 Input var and grad must match in dimension (1) [SparseApplyAdadeltaVerify][nn_training_ops.cc]——与 issue 现象完全一致 - 修复后:**GRAPH-DYN 执行成功**,三腿全通过 **GEIR 通路补充验证:** - 复现:构造 var 静态 (70,11,7,62) + grad 全动态 (-1,-1,-1,-1) 的 GE 图(等价 e2e tf -d 构图),修复前报同上错误 - 回归:全维动态(1D/3D)、首维动态、尾维动态、未知秩(-2)、issue 用例 004 原样配置(-c -d)均执行成功;golden 精度行为不变(verify 仅影响图准入,不影响数值) - 环境:Ascend950PR / CANN 9.1.0 / TTK ## 文档更新 无需(README 约束无变化) ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述 ## AI/Agent 生成声明 代码来源: - [ ] 纯人工手写 - [ ] AI 辅助编写 - [x] AI 完全生成 人工审查:已完成 测试验证:已通过 合规检查:已完成 See merge request: cann/ops-nn!12871 | 18 小时前 | |
refactor: 清理10个算子arch35路径上不必要的16M系统workspace预留 Co-authored-by: klein8793<zhangli24@huawei.com> # message auto-generated for no-merge-commit merge: !12965 merge dev_zl_2026_1028 into master refactor: 清理10个算子arch35路径上不必要的16M系统workspace预留 Created-by: klein8793 Commit-by: klein8793 Merged-by: cann-robot Description: ## 描述 清理 AvgPool、AvgPoolV2、BucketizeV2、GatherV2、ReverseV2、GatherND、Scatter、ScatterNdMax、ScatterNdMin、SparseToDense 共 10 个算子在 arch35 路径 tiling 中硬编码预留的 16M 系统 workspace。 ### 改动原因 这些算子的 kernel 所有模板均不读写 workspace(不调用 GetUserWorkspace / SetSysWorkspace,也不把 workspace 指针作为数据缓冲区使用),但 tiling 侧仍无条件预留 16M 系统 workspace,导致每次调用无效申请/释放 16M Device 内存。 ### 改动方法 - tiling 侧:GetWorkspaceSize 中 workspace 申报置 0,删除硬编码 16M 常量(SYS_WORKSPACE_SIZE / ASCENDC_WORKSPACE / WS_SYS_SIZE)及 GetLibApiWorkSpaceSize 调用 - kernel 侧:成对删除 workspace == nullptr 判空守卫、SetSysWorkspace、GetUserWorkspace 及模板 Init 中未使用的 workspace 形参,kernel 入口 ABI 签名 (..., GM_ADDR workspace, GM_ADDR tiling) 保持不变 - AvgPoolV2 复用 AvgPool 的 tiling 模板,ScatterNdMax / ScatterNdMin 共用 scatter_nd_common 公共 tiling,均在覆盖范围内 ## 关联的Issue - #7650 ## 测试 obp冒烟、david冒烟已通过 ## 文档更新 不涉及 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12965 | 19 小时前 | |
fix(swiglu_mx_quant_with_dual_axis): tiling scale2Ub 估算与 kernel 对齐并更新输出非连续约束 Co-authored-by: chenfeng61<chenfeng61@huawei.com> # message auto-generated for no-merge-commit merge: !12957 merge fix_swiglu_mx_quant_scale2ub into master fix(swiglu_mx_quant_with_dual_axis): tiling scale2Ub 估算与 kernel 对齐并更新输出非连续约束 Created-by: chenfeng61 Commit-by: chenfeng61 Merged-by: cann-robot Description: ## 描述 **问题1(aclnn 资料)**:aclnn 文档中输出 y1Out/mxscale1Out/y2Out/mxscale2Out 的「非连续Tensor」列声明为 √,实际输出不支持非连续 Tensor,更新为 ×(与 dynamic_mx_quant_with_dual_axis 口径一致);输入 x/groupIndexOptional 维持 √ 不变。 **问题2(tiling 与 kernel 不一致)**: ComputeTilingParams() 中 scale2Ub = tilingParams_.blockW * DIGIT_THREE * DB 恒按 1536B 估算;而 kernel 侧 Init()(swiglu_mx_quant_with_dual_axis_regbase.h)在 scaleAlg != TPL_SCALE_ALG_0(cuBLAS)时 mxScaleQueue2_ 单 buffer 为 CUBLAS_SCALE2_BUFFER_BYTES(kernel 侧 static_assert 钉死 896B),双 buffer 实际占用 1792B,tiling 低估 256B,UB 容量检查存在失效风险。现按 scaleAlg 分支与 kernel 侧对齐:cuBLAS 路径按 CUBLAS_SCALE2_BUFFER_BYTES * DB 估算,OCP 路径维持原值。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/7580 ## 测试 - pre-commit 钩子全部通过(含 clang-format、codespell、OAT 合规扫描) - 改动仅涉及 host tiling UB 容量估算与文档,无 kernel 行为变化;现有 UT 无 scale2Ub/allNeedUb 相关断言,不受影响 ## 文档更新 - quant/swiglu_mx_quant_with_dual_axis/docs/aclnnSwigluMxQuantWithDualAxis.md:4 个输出行非连续Tensor 列 √ → × ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12957 | 18 小时前 | |
gru_grad: A5反向优化重写 Co-authored-by: wlfsnw<wuluofei@h-partners.com> # message auto-generated for no-merge-commit merge: !12653 merge gru-grad-arch35-clean into master gru_grad: A5反向优化重写 Created-by: wlfsnw Commit-by: wlfsnw Merged-by: cann-robot Description: gru_grad(GRU 反向)在 Ascend950PR 上新增 arch35 基础 API 优化栈,arch22(910b/910_93)沿用基线(零修改)。 **性能**: 内核 8519→3810us(-55%);巨型 shape 域收益 +84%。 **主要变更**: - arch35 优化栈:N-带分裂/带化主循环/转置条带化/L0C 双带偏移/尾列微事务合并 - 巨型 shape:w_hh NZ 像预暂存 + dgate K 维切分跨簇规约 - tiling 守卫:乘法回绕/溢出守卫 + matmul_tiling 形参域校验 - 参数校验:batchSizes dtype/numLayers/hx 秩/params 逐元素 shape 校验(161002 契约) - API_Check 包内重名头文件修复(gru_grad_arch22.h) - 魔鬼数字语义常量化与注释整改(等值替换,数值行为零变更);reverse_v2 依赖保留 **验证**: 双 SoC 编译通过;功能与性能验证无回归。 关联 issue: #7490 See merge request: cann/ops-nn!12653 | 15 小时前 | |
[L2] fix: build_torch_extension.sh 守卫文件名 __init.py 补正为 __init__.py(#7172) Co-authored-by: wsnidie1<3901796952@qq.com> # message auto-generated for no-merge-commit merge: !12909 merge fix/torch-ext-init-py-guard into master [L2] fix: build_torch_extension.sh 守卫文件名 __init.py 补正为 __init__.py(#7172) Created-by: wsnidie1 Commit-by: wsnidie1 Merged-by: cann-robot Description: ## 概述 scripts/torch_extension/build_torch_extension.sh 两处「已存在就不覆盖」守卫把探测文件名写成 __init.py(少一个点),而全仓没有任何环节会创建该名字的文件,两个 [ ! -e ... ] 恒为真,pe_init.py 无条件覆盖算子自带的手写 __init__.py,守卫形同虚设。 ## 关联的Issue #7172 @wsnidie1 ## 修改 :156/:160 两处守卫的探测文件名补正为 __init__.py(+2/-2);:157/:161 产出文件名本就正确,其余逻辑不动。 ## 验证 - bash -n 语法通过; - 同构最小复现对照实验:修复前手写 __init__.py 被覆盖为 pe_init.py 内容,修复后手写内容原样保留; - diff 仅 2 行,ASCII 文件无编码/行尾变化。 See merge request: cann/ops-nn!12909 | 16 小时前 | |
Revert "fix: hash trailing bytes after processed blocks" Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !12571 merge master into master Revert "fix: hash trailing bytes after processed blocks" Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 定界结论: 代码问题 / LLT编译失败 — common/tests/ut/op_host/test_common_hash_tiling.cpp / test_murmur_hash_tiling.cpp(基线分支引入, 非本 PR 变更) 失败类型: 代码问题 / LLT编译失败(UT 任务链接错误) 根因: 基线分支已合入的哈希 tiling UT 测试(common/tests/ut/op_host/test_common_hash_tiling.cpp、test_murmur_hash_tiling.cpp)引用 RuntimeKb::CommonHash 与 Ops::NN::HostTiling::MurmurHash, ascend910b 版本的 UT 链接闭包缺少这两个符号的实现, 导致 nn_op_host_ut 链接失败; 同一 UT 在 ascend950 版本链接成功且用例全部通过 与本 PR 的关系: 本 PR 的 21 个变更文件全部位于 norm/in_training_update_grad/(新增 ascend350 支持), 均不含失败文件; 近 30 小时内另有 6 个不同 PR 的 run 挂同一 Job(抽验错误完全一致)→ 失败为基线(master)已合入代码的缺陷, 非本 PR 引入 处置建议: ① 本 PR 无需修改代码; 通知基线哈希 tiling 测试/实现的相关提交者或仓库维护者, 为 ascend910b 补齐这两个符号的实现(或按版本裁剪/条件编译该测试); ② 基线修复后重新触发流水线即可完成验证 排除项: 非环境问题——同 run 内 29 个 compile Job、其余 3 个 ut Job(不同版本/目标)全部通过, 且同一错误在其他 PR 上确定性复现(非瞬时网络/设备/Runner 故障); 非本 PR 引入——失败文件不在 PR 变更集, 本 PR 的 CMake 改动(COMPUTE_UNIT ascend950 → ascend950 ascend350)仅作用于 in_training_update_grad 算子自身 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 配套issue 异常回退 https://gitcode.com/cann/ops-nn/issues/7196 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ok ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12571 | 7 天前 | |
修改aclnn确定性开关 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !12749 merge master into master 修改aclnn确定性开关 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 1、修改aclnn确定性开关为aclrtSetSysParamOpt 2、修复删除查看源码后的多余空行 ## 关联的Issue 关联Issue [#7186](https://gitcode.com/cann/ops-nn/issues/7186) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12749 | 3 天前 | |
multi_scale_deformable_attn_function/scaled_masked_softmax_v2增加ut结果的验证 Co-authored-by: caihualilili<liangfuzhan@h-partners.com> # message auto-generated for no-merge-commit merge: !12817 merge sms_msda_add_ut_check into master multi_scale_deformable_attn_function/scaled_masked_softmax_v2增加ut结果的验证 Created-by: caihualilili Commit-by: caihualilili Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本 PR 属于测试代码增强(UT increase),目标是让两个算子 host 侧 tiling 用例从“打印 tiling 结果、留待后续校验”改为对结果做实际断言。vfusion/multi_scale_deformable_attn_function 的 tiling 测试改为对 GetTilingKey() 与 TilingData2Str 输出做精确比对;vfusion/scaled_masked_softmax_v2 的 tiling 测试改为校验 TilingKey、原始 tiling 数据有效性和解析出的结构字段值。失败路径的用例同时删除了无意义的 tiling 结果打印。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#7171](https://gitcode.com/cann/ops-nn/issues/7171) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT本地测试结果:   ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 增加ut结果比较 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12817 | 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 个月前 | |
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 | 2 个月前 | |
docs:修改代码块缺闭合围栏问题 Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !11686 merge master into master docs:修改代码块缺闭合围栏问题 Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6434](https://gitcode.com/cann/ops-nn/issues/6434) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> codearts_check_rule_config.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11686 | 13 天前 | |
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 个月前 | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 16 天前 | |
docs: 修复注释与文档不一致(贡献指南与fast kernel launch示例) Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !12380 merge docs/comment-cleanup-20261019-04 into master docs: 修复注释与文档不一致(贡献指南与fast kernel launch示例) Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修正文档中与实际内容/上下文不一致的表述: - CONTRIBUTING.md:将“确保您的贡献符合项目标准,签署 CLA”中的半角逗号 , 改为全角逗号 ,,统一中文标点规范。 - examples/fast_kernel_launch_example/README.md:删除“Ascend 950PR&950DT系列产品产品使用”中的重复“产品”,共两处(第 33 行、第 83 行)。 ## 关联的Issue 关联 Issue #6948 https://gitcode.com/cann/ops-nn/issues/6948 ## 测试 仅文档变更,不涉及代码逻辑;已人工核对修改后语句与上下文一致,无功能影响。 ## 文档更新 - 更新 CONTRIBUTING.md - 更新 examples/fast_kernel_launch_example/README.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!12380 | 8 天前 | |
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 | 30 天前 | |
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 个月前 | |
docs: 修复注释与文档不一致(build脚本默认参数说明) Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !12379 merge docs/comment-cleanup-20261019-03 into master docs: 修复注释与文档不一致(build脚本默认参数说明) Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 修正 build.sh 帮助信息与 docs/zh/install/build.md 中与实际实现不一致的默认参数说明: - -j[n]:默认值由「8」更正为「CPU 核心数」。build.sh 中 THREAD_NUM=$(grep -c ^processor /proc/cpuinfo),未显式传入 -j 时按 CPU 核心数编译。 - --vendor_name:默认值由「customize-nn」更正为「custom」。build.sh 在 run_example 场景下当 VENDOR_NAME 为空时设置为 custom。 涉及文件:build.sh(7 处 -j[n] 文案、1 处 --vendor_name 文案)、docs/zh/install/build.md(参数表 1 处)。 ## 关联的Issue - #6950 ## 测试 仅修改帮助文案与文档,不涉及代码逻辑变更;已核对 build.sh 中 THREAD_NUM 与 VENDOR_NAME 的实际默认值。 ## 文档更新 - docs/zh/install/build.md:更新 -j${n} 默认值说明为 CPU 核心数 - build.sh:更新 usage 中 -j[n]、--vendor_name 的默认值说明 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!12379 | 8 天前 | |
fix(classify): 补充 ScatterDiv InferShape 分类规则 Co-authored-by: zzy1205<zhangzhengyi8@huawei.com> # message auto-generated for no-merge-commit merge: !12861 merge fix/scatter-div-infershape-classify into master fix(classify): 补充 ScatterDiv InferShape 分类规则 Created-by: zzy1205 Commit-by: zzy1205 Merged-by: cann-robot Description: ## 描述 在 index-c@ops-nn -> src.release.style 中登记 ops/ops-nn/index/scatter_div/op_host/scatter_div_infershape.cpp,使分类规则能够感知该 InferShape 源文件。 本 PR 仅修改 classify_rule.yaml 一行,不包含算子源码、kernel 配置或测试文件改动。 ## 关联的Issue 无。 ## 测试 - PyYAML safe_load 解析通过。 - 目标条目在对应 style 列表及全文件中均仅出现一次。 - git diff --check 通过。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12861 | 2 天前 | |
docs:修改代码块缺闭合围栏问题 Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !11686 merge master into master docs:修改代码块缺闭合围栏问题 Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6434](https://gitcode.com/cann/ops-nn/issues/6434) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> codearts_check_rule_config.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11686 | 13 天前 | |
调整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 | 3 个月前 | |
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 | 1 个月前 | |
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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。