本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
kirin smoke任务新增增量执行用例功能 Co-authored-by: weixin_46515057<lidaoshuai@h-partners.com> # message auto-generated for no-merge-commit merge: !11030 merge master into master kirin smoke任务新增增量执行用例功能 Created-by: weixin_46515057 Commit-by: weixin_46515057 Merged-by: cann-robot Description: kirin smoke任务新增增量执行用例功能 See merge request: cann/ops-nn!11030 | 4 天前 | |
修复工具检测SwigluGroupQuantGrad racecheck 检出 2 条 UB WAR Co-authored-by: shilulu<shilulu8@huawei.com> # message auto-generated for no-merge-commit merge: !11037 merge swiglu_group_quant_grad into master 修复工具检测SwigluGroupQuantGrad racecheck 检出 2 条 UB WAR Created-by: shilulu Commit-by: shilulu Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复工具检测SwigluGroupQuantGrad racecheck 检出 2 条 UB WAR ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6112 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11037 | 4 天前 | |
feat(ge-opgraph): D4 兼容处理 — ELF patch 弱化 CustomPassContext 新增成员方法符号 Co-authored-by: hugo111<zhaoxinxin1@huawei.com> # message auto-generated for no-merge-commit merge: !9924 merge feature/fusion-pass-d4-compat into master feat(ge-opgraph): D4 兼容处理 — ELF patch 弱化 CustomPassContext 新增成员方法符号 Created-by: hugo111 Commit-by: hugo111 Merged-by: cann-robot Description: # Pull Request ## 描述 背景:libopgraph_nn.so 使用新版本 CANN (>=9.0) 头文件编译后,会引用 新版本才提供的接口符号(CustomPassContext 新增成员方法、ES CompliantNodeBuilder V2 API 等)。这些符号在旧版本运行时(如 8.5.0) 中不存在,导致 dlopen 直接失败、所有融合 pass 无法注册。 本 PR 使该 .so 在新旧版本运行时上均可正常加载: - 构建后处理(cmake/weaken_compat_symbols.sh + weaken_dynsym.py): 将 .dynsym 中新版本接口符号从 GLOBAL 改为 WEAK,旧运行时加载时 未解析符号返回 NULL 而非 dlopen 失败;新运行时行为不变。 - pass 内运行时版本守卫:调用新版本接口前先通过 aclsysGetVersionNum 检测版本,旧版本环境降级跳过,避免调用 NULL 弱符号。 - 链接修正:libopgraph_nn.so 显式链接 libacl_rt.so,保证 aclsysGetVersionNum 在旧运行时下也能解析。 - 同步弱化 libes_nn.so/libes_math.so 中引用的 ES V2 符号。 - 移除/调整依赖新版本 es:: API 的 UT 用例,使 UT 可独立编译运行 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 mock GE(8.5.0/9.0.0)+ dlopen(RTLD_NOW|RTLD_GLOBAL) 穿刺验证: - 未 patch:dlopen 失败(undefined symbol: CustomPassContext::GetOptionValue)—— 证明弱化必要 - patch 后 8.5.0:dlopen 成功,版本守卫降级,无 SIGSEGV - patch 后 9.0.0:弱符号解析真实地址,正常调用 CI 编译 libopgraph_nn.so 时 POST_BUILD 自动执行弱化脚本。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 脚本对 pyelftools 缺失、无匹配符号均 exit 0,不阻断构建。 See merge request: cann/ops-nn!9924 | 4 天前 | |
refactor: 移除NN公共op_api旧转发头 Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !11002 merge nn_prefix_common_headers_exp_0921 into master refactor: 移除NN公共op_api旧转发头 Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 本变更完成 NN 公共 op_api 头文件迁移的兼容清理阶段: - 将 experimental/activation/swish_v2 最后一处 op_api/level2_base.h 调用迁移到 op_api/level2_base_nn.h。 - 删除已无仓内调用的兼容转发头 common/inc/op_api/level2_base.h。 - 删除已无仓内调用的兼容转发头 common/inc/op_api/level2_base_caculation.h。 - 保留 level2_base_nn.h 和 level2_base_caculation_nn.h 作为唯一规范实现。 本 MR 合入后,旧 basename 不再提供源码兼容,调用方需要使用带 _nn 后缀的规范头文件。 ## 关联的Issue Issue #6008 ## 测试 - git diff --check:通过。 - pre-commit:全部通过,包括 clang-format、codespell 和 OAT。 - audit_header_collisions.sh:两个旧头均为 MISSING,include 和文本引用均为 0;两个 _nn 规范头均存在。 - 全库 rg 扫描:未发现旧文件名的 include、配置或打包引用。 - 未执行完整编译验证。 ## 文档更新 无文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:公共头文件迁移兼容清理 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11002 | 4 天前 | |
AvgPoolUpdate、NPUClearFloatStatus算子950支持 Co-authored-by: wuchengwen_oh<wuchengwen4@huawei.com> # message auto-generated for no-merge-commit merge: !10834 merge revert-mr-10779-1789884777609-auto into master AvgPoolUpdate、NPUClearFloatStatus算子950支持 Created-by: wuchengwen_oh Commit-by: wuchengwen_oh Merged-by: cann-robot Description: ## 描述 https://gitcode.com/cann/ops-nn/pull/10779/discuss 提交误回退了主干代码,恢复回退的代码 增加AvgPoolUpdate、NPUClearFloatStatus算子的950实现 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6031 ## 测试 ## 文档更新 刷新了docs/zh/op_list.md 增加了对应算子的readme文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10834 | 6 天前 | |
Conv3DBackpropFilter等算子融合规则资料更新,解决图片显示异常问题以及md文档描述错误问题 Co-authored-by: cheng_gao<cheng.gao@huawei.com> # message auto-generated for no-merge-commit merge: !10957 merge pass_doc_20260921 into master Conv3DBackpropFilter等算子融合规则资料更新,解决图片显示异常问题以及md文档描述错误问题 Created-by: cheng_gao Commit-by: cheng_gao Merged-by: cann-robot Description: ## 描述 Conv3DBackpropFilter算子融合规则资料存在描述错误,存在重复内容“融合前”; Conv2D/3DBackpropInput、Conv2D/3DTranspose算子融合规则资料中图片显示异常; ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6100 ## 测试 RDV基本功能 ## 文档更新 融合规则文档:Conv3DBackpropFilterToV2FusionPass.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10957 | 4 天前 | |
Conv3DBackpropFilter等算子融合规则资料更新,解决图片显示异常问题以及md文档描述错误问题 Co-authored-by: cheng_gao<cheng.gao@huawei.com> # message auto-generated for no-merge-commit merge: !10957 merge pass_doc_20260921 into master Conv3DBackpropFilter等算子融合规则资料更新,解决图片显示异常问题以及md文档描述错误问题 Created-by: cheng_gao Commit-by: cheng_gao Merged-by: cann-robot Description: ## 描述 Conv3DBackpropFilter算子融合规则资料存在描述错误,存在重复内容“融合前”; Conv2D/3DBackpropInput、Conv2D/3DTranspose算子融合规则资料中图片显示异常; ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6100 ## 测试 RDV基本功能 ## 文档更新 融合规则文档:Conv3DBackpropFilterToV2FusionPass.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10957 | 4 天前 | |
卷积算子敏感词整改 Co-authored-by: zhaozhoujun520<zhaozhoujun@huawei.com> # message auto-generated for no-merge-commit merge: !10548 merge master into master 卷积算子敏感词整改 Created-by: zhaozhoujun520 Commit-by: zhaozhoujun520 Merged-by: cann-robot Description: ## 描述 卷积算子代码中部分注释存在敏感词 ## 关联的Issue [#5954](https://gitcode.com/cann/ops-nn/issues/5954) ## 测试 本地验证,代码检视,蓝区冒烟,RDV,性能测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10548 | 8 天前 | |
refactor: 移除NN公共op_api旧转发头 Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !11002 merge nn_prefix_common_headers_exp_0921 into master refactor: 移除NN公共op_api旧转发头 Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 本变更完成 NN 公共 op_api 头文件迁移的兼容清理阶段: - 将 experimental/activation/swish_v2 最后一处 op_api/level2_base.h 调用迁移到 op_api/level2_base_nn.h。 - 删除已无仓内调用的兼容转发头 common/inc/op_api/level2_base.h。 - 删除已无仓内调用的兼容转发头 common/inc/op_api/level2_base_caculation.h。 - 保留 level2_base_nn.h 和 level2_base_caculation_nn.h 作为唯一规范实现。 本 MR 合入后,旧 basename 不再提供源码兼容,调用方需要使用带 _nn 后缀的规范头文件。 ## 关联的Issue Issue #6008 ## 测试 - git diff --check:通过。 - pre-commit:全部通过,包括 clang-format、codespell 和 OAT。 - audit_header_collisions.sh:两个旧头均为 MISSING,include 和文本引用均为 0;两个 _nn 规范头均存在。 - 全库 rg 扫描:未发现旧文件名的 include、配置或打包引用。 - 未执行完整编译验证。 ## 文档更新 无文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:公共头文件迁移兼容清理 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11002 | 4 天前 | |
fix: aclnnForeachRoundOffNumberV2 dtype 白名单移除不支持的 DT_INT32 (#6101) Co-authored-by: east_yang<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !11039 merge fix/foreach-roundoff-swigluquantgrad-6101-6112 into master fix: aclnnForeachRoundOffNumberV2 dtype 白名单移除不支持的 DT_INT32 (#6101) Created-by: east_yang Commit-by: east_yang Merged-by: cann-robot Description: ## 修改说明 针对 issue #6101: foreach/foreach_round_off_number/op_host/op_api/aclnn_foreach_round_off_number_v2.cpp:33-36 两份 dtype 白名单(910BC 与 950)均含 DT_INT32,但算子原型(DYNAMIC_INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT, DT_BF16, DT_INT16})))、op def、接口文档、arch35 tiling(仅 float/fp16/bf16/int16 四个 case)与 kernel 均不支持 INT32。参数校验期放行后,用户在 SelectBin/tiling 阶段才看到 Cannot find binary for op 类错误,而非校验期 ACLNN_ERR_PARAM_INVALID。 修复(仅白名单 2 行): | 白名单 | 修改前 | 修改后 | |---|---|---| | 910BC(910B/910_93) | {FLOAT, FLOAT16, BF16, **INT32**, INT16} | {FLOAT, FLOAT16, BF16, INT16}(保留实现与 op def 均支持的 INT16) | | 950 | {FLOAT, FLOAT16, BF16, **INT32**} | {FLOAT, FLOAT16, BF16}(与 arch35 tiling 实际支持集一致) | 非法 dtype 在一段接口校验期即返回 ACLNN_ERR_PARAM_INVALID(161002),不再下漏到 SelectBin/tiling。 Closes #6101 ## 验证 - UT:nn_op_api_ut --gtest_filter='*round_off*' **5/5 PASSED**。 - 实测(910B3,本仓 master 代码编译部署后三组 dtype 输入调用一段接口): | 输入 dtype | 修复前 | 修复后 | |---|---|---| | INT32 | 放行(白名单含),SelectBin 阶段 Cannot find binary 失败(561103) | 校验期拒绝,返回 161002 | | INT16(910BC 名单保留) | 放行 | 放行(ACL_SUCCESS) | | FLOAT16(对照组) | 放行 | 放行 | - pre-commit:全钩子通过(trailing-whitespace / end-of-file / clang-format / codespell / OAT 等)。 ## 说明 See merge request: cann/ops-nn!11039 | 4 天前 | |
bn_infer等26个算子新增ascend350平台支持 Co-authored-by: Developer user<zhuzixian1@h-partners.com> # message auto-generated for no-merge-commit merge: !10255 merge ascend350_adapt_w2 into master bn_infer等26个算子新增ascend350平台支持 Created-by: zhuzixian-lr Commit-by: Developer user Merged-by: cann-robot Description: ## 描述 26个算子新增ascend350平台支持:foreach_mul_scalar、foreach_sqrt、foreach_addcmul_scalar、foreach_div_scalar_list、foreach_lerp_scalar、foreach_norm、bn_infer、apply_adagrad_d、apply_gradient_descent、apply_adam、apply_adam_w_v2、embedding_hash_table_apply_adam_w、embedding_hash_table_export、embedding_hash_table_import、embedding_hash_table_lookup_or_insert、init_embedding_hash_table、binary_cross_entropy、sigmoid_cross_entropy_with_logits_v2、binary_cross_entropy_grad、l2_loss、nll_loss、nll_loss_grad、sparse_softmax_cross_entropy_with_logits、softmax_cross_entropy_with_logits、swiglu_group_quant、swi_glu。 修改模式(350与ascend950完全同配,两者同为 DAV_3510,走同一代码分支): - op_host/<op>_def.cpp:追加 AddConfig("ascend350"),复用 ascend950 同一 config 对象(regbase 形态含 foreach 系/bn_infer/apply_adam_w_v2/swi_glu 等) - CMakeLists:SUPPORT_COMPUTE_UNIT/SUPPORT_TILING_DIR(或 COMPUTE_UNITS 形态)增加 ascend350/arch35(bn_infer 为 op_host/CMakeLists 特殊形态,对标 bn_training_reduce 先例) - op_host/config/ascend350/:拷贝 ascend950 的 <op>_binary.json - scripts/kernel/binary_config/ascendc_config.json:仅对 json 中已有条目的算子修改(foreach 系 6 个 + SwiGlu 共 7 条 compute_units 加 ascend350,compile_options 与 ascend950 逐项相同);原无条目的算子不新增登记,避免影响默认编译选项行为 - nll_loss_grad 的 CMakeLists.txt 版权头规范化(OAT 合规检查要求) ## 测试 A5(Ascend950PR)环境实测: - bash build.sh --pkg --soc=ascend350 --ops=<op> --vendor_name=customize -j4 编译验证:26/26 算子通过(产物 .o、run 包产出、json 选项注入均验证;softmax_cross_entropy_with_logits 用 --soc=ascend950 对照编译确认两侧产物同构) - pre-commit 全部检查通过(按文件运行,含 clang-format/codespell/OAT 合规) ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5780 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 ## SocVersion 判断合规化 - 规则:不允许 SocVersion 区间判断隐式覆盖芯片,950/350 需显式 IsRegBase() 判断,不再依赖枚举顺序副作用 - 本 MR 涉及 1 处(sigmoid_cross_entropy_with_logits_v2 的 binary_cross_entropy_with_logits),已完成修改 - 改法:保留原 [ASCEND910B, ASCEND910E] 区间(覆盖 910B/910C/910E),或逻辑增加 IsRegbase()(显式覆盖 regbase 芯片,与 upstream !10101 已合入的 Ops::NN::AclnnUtil::IsRegbase() 同形态) - 行为零变化:950 原区间命中(true)→现 IsRegbase()(true);350 原被区间覆盖(true)→现 IsRegbase()(true);910B/C/E 走原区间不变 - 分支已 rebase 至最新 upstream master ## 四件套完整性检视修复 - 全量检视发现 17 个算子的 ascendc_config.json 登记缺失(摸底时带下划线 grep 未命中全驼峰条目名,误记为 950 无条目) - 涉及:loss 7(BinaryCrossEntropy/Grad、L2Loss、NLLLoss/Grad、SigmoidCrossEntropyWithLogitsV2、SparseSoftmaxCrossEntropyWithLogits)、hash 5(EmbeddingHashTableApplyAdamW/Export/Import/LookupOrInsert、InitEmbeddingHashTable)、optim 4(ApplyAdagradD、ApplyAdam、ApplyAdamWV2、ApplyGradientDescent)、activation 1(SoftmaxCrossEntropyWithLogits) - 修复:对标各自 ascend950 条目补登 ascend350(compute_units 追加 + compile_options 照抄),def/CMake/config 三件原已齐备 - 其余 84 算子四件套核查全绿或形态与 950 一致(详见任务侧检视报告) ## 补充算子 - foreach_add_scalar:清单补充登记,四件套补齐(def AddConfig ascend350 与 950 同 regbaseCfg 对象、op_kernel CMake COMPUTE_UNITS、config/ascend350/binary.json、ascendc_config.json 条目对标 950 追加 + compile_options 照抄),与同族 foreach_addcmul_scalar 等先例形态一致 ## 算子目录内融合规则适配 - 全量排查两波 84 算子目录 op_graph 层:仓内融合 pass 共 2 个、graph_infer 12 个、graph_plugin 1 个 - 🔴 修复 1 处:layer_norm/op_graph/fusion_pass/layer_norm_remove_broadcast_fusion_pass.cpp:102 support_soc 集合 {"Ascend950","MC62"} 增加 Ascend350(原 350 跳过融合与 950 分叉);ops-transformer 的 apply_rotary_pos_emb_tensormove_pass 无平台门控天然放行 See merge request: cann/ops-nn!10255 | 6 天前 | |
【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !10878 merge nn_wo into master 【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 1. 背景:mc62算子workspace占用对比1951增大 2. 由于mc62代码和A5是onetrack, 所有workspacesize硬编码为16M, 在mc62上也同样是16M,asc 提供接口,对mc62进行区分,从原来的16M 变成1K,A5和A2大小不变。 3. 修改:算子侧tiling中硬编码为16M大小的workspacesize统一改为用接口获取。 GetLibApiWorkSpaceSize实现如下: const static uint32_t WORK_SPACE_SIZE_910B = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE_950 = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE = 1024; uint32_t PlatformAscendC::GetLibApiWorkSpaceSize(void) const { auto npuArch = GetCurNpuArch(); if (npuArch == NpuArch::DAV_RESV) { PF_LOGE("get platform failed, CurNpuArch is NpuArch::DAV_RESV"); return -1; } else if (npuArch == NpuArch::DAV_2201) { return WORK_SPACE_SIZE_910B; } else if (npuArch == NpuArch::DAV_3510) { return WORK_SPACE_SIZE_950; } return WORK_SPACE_SIZE; } ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6135 ## 测试 1.单算子框架测试通过 2.二级冒烟通过 文档更新 类型标签 - [x] Bug修复 See merge request: cann/ops-nn!10878 | 4 天前 | |
docs: 修复算子 README 中的空格格式 Co-authored-by: aqt666<2016141505@qq.com> # message auto-generated for no-merge-commit merge: !10836 merge codex/readme-spacing-pr into master docs: 修复算子 README 中的空格格式 Created-by: aqt666 Commit-by: aqt666 Merged-by: cann-robot Description: 修复两个算子 README 中中文、英文和数字之间的空格格式问题。 关联 issue:#6032 See merge request: cann/ops-nn!10836 | 4 天前 | |
修改batch_mat_mul_v3中的部分资料表述 Co-authored-by: wangwei_mayday<wangwei1183@huawei.com> # message auto-generated for no-merge-commit merge: !11043 merge master into master 修改batch_mat_mul_v3中的部分资料表述 Created-by: wangwei_mayday Commit-by: wangwei_mayday Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1.文件中alpha、beta默认值描述存在误解 ops-nn/matmul/batch_mat_mul_v3/op_host/op_api/aclnn_baddbmm.h 37-38行对默认值为1的描述有误,会让使用者误解为不传参也能按照默认值为1走下去,实际上C接口要求必须传参 2.md中的范例执行时存在内存泄露风险 ops-nn/matmul/batch_mat_mul_v3/docs/aclnnAddbmm&aclnnInplaceAddbmm.md中的workspaceAddr被重复覆盖,最终释放时只能释放覆盖后的指针,无法释放野指针,存在内存泄漏风险 修改以上问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->Issue [#6132](https://gitcode.com/cann/ops-nn/issues/6132) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ops-nn/matmul/batch_mat_mul_v3/docs/aclnnAddbmm&aclnnInplaceAddbmm.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11043 | 4 天前 | |
【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !10878 merge nn_wo into master 【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 1. 背景:mc62算子workspace占用对比1951增大 2. 由于mc62代码和A5是onetrack, 所有workspacesize硬编码为16M, 在mc62上也同样是16M,asc 提供接口,对mc62进行区分,从原来的16M 变成1K,A5和A2大小不变。 3. 修改:算子侧tiling中硬编码为16M大小的workspacesize统一改为用接口获取。 GetLibApiWorkSpaceSize实现如下: const static uint32_t WORK_SPACE_SIZE_910B = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE_950 = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE = 1024; uint32_t PlatformAscendC::GetLibApiWorkSpaceSize(void) const { auto npuArch = GetCurNpuArch(); if (npuArch == NpuArch::DAV_RESV) { PF_LOGE("get platform failed, CurNpuArch is NpuArch::DAV_RESV"); return -1; } else if (npuArch == NpuArch::DAV_2201) { return WORK_SPACE_SIZE_910B; } else if (npuArch == NpuArch::DAV_3510) { return WORK_SPACE_SIZE_950; } return WORK_SPACE_SIZE; } ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6135 ## 测试 1.单算子框架测试通过 2.二级冒烟通过 文档更新 类型标签 - [x] Bug修复 See merge request: cann/ops-nn!10878 | 4 天前 | |
docs: 修复算子 README 中的空格格式 Co-authored-by: aqt666<2016141505@qq.com> # message auto-generated for no-merge-commit merge: !10836 merge codex/readme-spacing-pr into master docs: 修复算子 README 中的空格格式 Created-by: aqt666 Commit-by: aqt666 Merged-by: cann-robot Description: 修复两个算子 README 中中文、英文和数字之间的空格格式问题。 关联 issue:#6032 See merge request: cann/ops-nn!10836 | 4 天前 | |
【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !10878 merge nn_wo into master 【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 1. 背景:mc62算子workspace占用对比1951增大 2. 由于mc62代码和A5是onetrack, 所有workspacesize硬编码为16M, 在mc62上也同样是16M,asc 提供接口,对mc62进行区分,从原来的16M 变成1K,A5和A2大小不变。 3. 修改:算子侧tiling中硬编码为16M大小的workspacesize统一改为用接口获取。 GetLibApiWorkSpaceSize实现如下: const static uint32_t WORK_SPACE_SIZE_910B = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE_950 = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE = 1024; uint32_t PlatformAscendC::GetLibApiWorkSpaceSize(void) const { auto npuArch = GetCurNpuArch(); if (npuArch == NpuArch::DAV_RESV) { PF_LOGE("get platform failed, CurNpuArch is NpuArch::DAV_RESV"); return -1; } else if (npuArch == NpuArch::DAV_2201) { return WORK_SPACE_SIZE_910B; } else if (npuArch == NpuArch::DAV_3510) { return WORK_SPACE_SIZE_950; } return WORK_SPACE_SIZE; } ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6135 ## 测试 1.单算子框架测试通过 2.二级冒烟通过 文档更新 类型标签 - [x] Bug修复 See merge request: cann/ops-nn!10878 | 4 天前 | |
修改产品名 Co-authored-by: fwx1169505<fengying27@h-partners.com> # message auto-generated for no-merge-commit merge: !11017 merge master into master 修改产品名 Created-by: fengying555682 Commit-by: fwx1169505 Merged-by: cann-robot Description: ## 描述 修改quant和activation文件夹中的md文档涉及的产品名称 ## 关联的Issue [#6056](https://gitcode.com/cann/ops-nn/issues/6056) ## 测试 已经完成文档语法和链接一致性检测 ## 文档更新 quant和activation文件夹中的md文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11017 | 4 天前 | |
refactor(rnn): 整改 dynamic_rnn op_host/op_kernel 同名头文件 Co-authored-by: weike<weike13@huawei.com> # message auto-generated for no-merge-commit merge: !10853 merge codex/fix-dynamic-rnn-tiling-common into master refactor(rnn): 整改 dynamic_rnn op_host/op_kernel 同名头文件 Created-by: m0_55003149 Commit-by: weike Merged-by: cann-robot Description: ## 描述 整改 dynamic_rnn op_host/op_kernel 同名头文件 整改 dynamic_rnn op_host/op_kernel 同名头文件 ## 关联的Issue (https://gitcode.com/cann/ops-nn/issues/6047) ## 测试 ascend910b 环境验证: - op_host UT: PASS - op_api UT:PASS - kernel 二进制:Build binary success ## 文档更新 不涉及 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,代码规范整改(op_host/op_kernel 同名头文件命名) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10853 | 6 天前 | |
TransQuantParamV2 和 QuantMatmulActivationQuant 新增 ascend350 平台支持 Co-authored-by: guiruoyu<guiruoyu@h-partners.com> # message auto-generated for no-merge-commit merge: !10402 merge codex/trans-quant-param-v2-ascend350 into master TransQuantParamV2 和 QuantMatmulActivationQuant 新增 ascend350 平台支持 Created-by: guiruoyu Commit-by: guiruoyu Merged-by: cann-robot Description: 为 TransQuantParamV2 和 QuantMatmulActivationQuant 新增 ascend350 支持,沿用 ascend950 的实现与配置。参考:https://gitcode.com/cann/ops-math/pull/5489 。 - TransQuantParamV2:新增 AICore 注册及 ascend350 二进制配置,加入 ascendc_config.json 编译单元。 - QuantMatmulActivationQuant:新增 AICore 注册,并在 add_kernel_sources 中增加 ascend350,复用 arch35 内核及 auto_sync=false;同时覆盖 aclnnQuantMatmulActivationQuant 和 aclnnQuantMatmulActivationQuantWeightNz 两个接口。 额外扫描了上述算子的 ACLNN、tiling、kernel、公共 SoC 映射及 QuantBatchMatmulV3 依赖。ND/WeightNz 共用同一算子,使用 DAV_3510 架构判断;依赖已包含 ascend350。QuantMatmulActivationQuant 使用现有 CMake 配置生成机制,无独立 ascend950 binary.json/simplified key 需要复制。 验证:JSON 解析及二进制配置一致性、git diff --check 通过;执行 CMake 脚本(以桩函数捕获注册参数)验证 QuantMatmulActivationQuant 的 ascend950/ascend350 编译单元、arch35 内核入口和 auto_sync=false。当前环境未安装 CANN,未执行设备编译、UT/ST 和真机验证。 InferShape 补充:TransQuantParamV2 的 QbmmDavidSupportSoc 白名单加入 Ascend350,使 scale=[1]、offset=[N] 时按既有广播规则推导输出为 [N]。本次仅修改白名单;单行差异核对及 git diff --check 通过,未执行 CANN UT 或真机验证。 See merge request: cann/ops-nn!10402 | 5 天前 | |
fit ascend350 Co-authored-by: wuyufei<wuyufei13@huawei.com> # message auto-generated for no-merge-commit merge: !10649 merge master into master fit ascend350 Created-by: wuyufei Commit-by: wuyufei Merged-by: cann-robot Description: ## 描述 本 PR 围绕 MatmulEmuSplitWeight 算子对 ascend350 平台的适配展开,主要通过新增平台配置、放开 SocVersion 校验、注册 tiling 入口以及补充单元测试,使该算子能够在 Ascend350 上被识别与调度。改动同时保持对原有 Ascend950 平台的支持。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6014 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10649 | 6 天前 | |
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 | 5 天前 | |
[cleancode] vfusion类算子超大头文件、C++语言规则告警整改 Co-authored-by: runqi_zhang<zhangrunqi2@huawei.com> # message auto-generated for no-merge-commit merge: !10907 merge fix/cleancode-norm-v5 into master [cleancode] vfusion类算子超大头文件、C++语言规则告警整改 Created-by: runqi_zhang Commit-by: runqi_zhang Merged-by: cann-robot Description: ## 描述 vfusion类算子存在超大头文件、C++语言规则告警,需要对相应部分代码进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10907 | 5 天前 | |
修改matmul 算子atoll 异常反馈判断 Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !7083 merge master into master 修改matmul 算子atoll 异常反馈判断 Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改matmul 算子atoll 异常反馈判断,异常时返回默认值 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/3882 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7083 | 2 个月前 | |
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 | 22 天前 | |
动态库解耦 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 个月前 | |
算子 FatreluMul 支持 ascend950 Co-authored-by: zhoulong50_hw<zhoulong50@huawei.com> # message auto-generated for no-merge-commit merge: !10226 merge fatrelu_mul into master 算子 FatreluMul 支持 ascend950 Created-by: zhoulong50_hw Commit-by: zhoulong50_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本 PR 为算子 FatreluMul(fatrelu_mul)新增 Ascend 950(arch35 / DAV_3510)支持:新增 arch35 专属的 host 侧 tiling 与 kernel 侧实现,并在 fatrelu_mul_def.cpp 中注册 ascend950 AICore 配置。同时将算子的输入/输出名由 input/output 统一重命名为 x/y(涉及 OpDef 定义、多平台二进制配置 JSON 与 kernel 槽位绑定),并将原有 op_host 下的 tiling 文件迁入 arch22 子目录。该改动主要聚焦于新增 arch35 平台的完整 tiling 与 kernel 链路,不涉及既有平台行为变更。 主要改动 新增 arch35 host 侧 tiling 实现:新增 fatrelu_mul_tiling_arch35.cpp/.h,提供 TilingFuncFatreluMul 与 TilingPrepareForFatreluMul 及 FatreluMulCompileInfo,实现平台量获取(含 CompileInfo 可信度校验与回退查询)、dtype/format/维度/shape 异常值校验、行模型展开(batch_size/half_dim)、空 Tensor 短路、UB 切分(tile_elems)、多核切分(need_core_num/rows_former/rows_tail_core)、判界选 key 与 SetBlockDim/SetTilingKey 下发。 新增 arch35 kernel 侧实现:新增 FatreluMul_kernel.h(共享 fp32 域 VF 计算链 FatreluMulVF 与模板类 FatreluMulKernel<T, kPath>,经 if constexpr 支持 small-tail 行打包与 big-tail 行分段双路径)、FatreluMul_tiling_data.h(全局非模板化 FatreluMulTilingData 结构体)与 FatreluMul_struct.h(ASCENDC_TPL_ARGS_DECL/ASCENDC_TPL_SEL 声明 3 dtype × 2 path 共 6 个实例),并新增 kernel 入口 fatrelu_mul_apt.cpp(含核守卫与 TilingData 反序列化)。 注册 ascend950 平台配置并重命名 IO 接口:fatrelu_mul_def.cpp 新增 ascend950 的 OpAICoreConfig(动态编译/动态 rank/shape 支持、ExtendCfgInfo("opFile.value", "fatrelu_mul_apt") 等),并将算子输入/输出名从 input/output 改为 x/y,kirin 系列配置同步重命名。 多平台二进制配置同步重命名 IO 名:ascend910_93、ascend910b、kirin9030、kirinx90 四份 fatrelu_mul_binary.json 中的输入/输出 name 字段由 input/output 统一改为 x/y。 tiling 文件目录调整:op_host/fatrelu_mul_tiling.cpp/.h 迁入 op_host/arch22/ 子目录(arch22 平台 tiling 实现),对应 UT 测试 test_fatrelu_mul_tiling.cpp 的头文件包含路径同步更新。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5777 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 二级冒烟,泛化用例 230 条 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了 aclnnFatreluMul.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10226 | 11 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
allow hf32 config Co-authored-by: 丛吉钰<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !10038 merge master into master allow hf32 config Created-by: cong-jiyu Commit-by: 丛吉钰 Merged-by: cann-robot Description: ## 描述 本 PR 旨在为算子新增 HF32(高精度浮点 32 位)执行配置能力。在构建系统 cmake/func.cmake 中为 add_modules_sources 函数与 add_all_modules_sources 宏新增 ALLOW_HF32 参数(取值 enable_hi_float_32_execution / enable_float_32_execution),通过新增的 record_allow_hf32_ops 函数按 OPTYPE 去重记录允许 HF32 的算子,并在顶层 CMakeLists 的 add_category_subdirectory 之后由 gen_allow_hf32_ini 汇总生成 ops_allow_hf32_nn.ini 安装到 ops/built-in/tbe/impl_mode 目录;同时新增 install_allow_hf32_legacy_ini 将 scripts/package/legacy 下的 legacy ini 文件安装到同一目录,并以 4 个 ini 文件提供 conv/matmul 系列算子的四种 HF32 组合配置。 主要改动 - 新增 ALLOW_HF32 配置参数: 在 add_modules_sources 函数和 add_all_modules_sources 宏的 oneValueArgs 中新增 ALLOW_HF32,并将该参数从宏透传给函数,使算子模块可通过该参数声明允许 HF32 执行,取值仅支持 enable_hi_float_32_execution 或 enable_float_32_execution(非法值触发 FATAL_ERROR)。 - 新增 record_allow_hf32_ops 函数: 在 add_modules_sources 中配置了 ALLOW_HF32 时调用,以 OPTYPE=allow_hf32_value 格式记录算子并以 OPTYPE 为键去重,结果缓存到 ALLOW_HF32_NN_OPS 内部缓存变量,供后续生成 ini 文件使用。 - 新增 gen_allow_hf32_ini 与 install_allow_hf32_legacy_ini 函数: 前者汇总 ALLOW_HF32_NN_OPS 去重、排序后写入 ops_allow_hf32_nn.ini 并安装到 ops/built-in/tbe/impl_mode;后者将 scripts/package/legacy/ 目录下的 legacy ini 文件安装到同一目录;两者均在 ENABLE_CUSTOM 时跳过。 - 新增 4 个 legacy ini 配置文件: 在 scripts/package/legacy/ 下新增 allow_hf32_matmul_f_conv_f.ini、allow_hf32_matmul_f_conv_t.ini、allow_hf32_matmul_t_conv_f.ini、allow_hf32_matmul_t_conv_t.ini,分别为 Conv2D/Conv3D/DepthwiseConv2D 等卷积类算子与 MatMul/MatMulV2/BatchMatMul 等矩阵乘类算子配置 enable_float_32_execution 或 enable_hi_float_32_execution 的四种组合;其中 allow_hf32_matmul_t_conv_t.ini 额外包含 Einsum、TransposeBatchMatMul、FusedMatMul 三个算子。 ## 关联的Issue [#5877](https://gitcode.com/cann/ops-nn/issues/5877) ## 测试 编包安装:成功打包ini文件并安装。 单独卸载nn。仅卸载ops_allow_hf32_nn.ini 单独安装卸载ops-nn:成功安装并卸载,无残留。 算子配置ALLOW_HF32:成功在ini文件中配置算子。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10038 | 5 天前 | |
公共文档同步修改 Co-authored-by: yolic<chenyuning1@huawei.com> # message auto-generated for no-merge-commit merge: !10337 merge readme0912 into master 公共文档同步修改 Created-by: yolic Commit-by: yolic Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 公共文档同步修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5831](https://gitcode.com/cann/ops-nn/issues/5831) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了CONTRIBUTING.md、docs/QUICKSTART.md、docs/zh/install/compile.md、docs/zh/install/dir_structure.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10337 | 12 天前 | |
init | 11 个月前 | |
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 | 25 天前 | |
新增Batch一致性介绍 Co-authored-by: chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !10458 merge master into master 新增Batch一致性介绍 Created-by: gitcode-chenjiao Commit-by: chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增Batch一致性和确定性特性介绍 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5817](https://gitcode.com/cann/ops-nn/issues/5817) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> RAEDME.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10458 | 11 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
fix Third_Party_Open_Source_Software_List.yaml Co-authored-by: liuyufan0725<liuyufan9@huawei.com> # message auto-generated for no-merge-commit merge: !1879 merge fix_yaml into master fix Third_Party_Open_Source_Software_List.yaml Created-by: liuyufan0725 Commit-by: liuyufan0725 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新三方依赖清单Third_Party_Open_Source_Software_List.yaml 1、增加protobuf 2、将nlohmann/json修改为json ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1042](https://gitcode.com/cann/ops-nn/issues/1042) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了Third_Party_Open_Source_Software_List.yaml ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1879 | 7 个月前 | |
【描 述】 eigen update to 5.0.0 Co-authored-by: j00427146<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !1152 merge master into master 【描 述】 eigen update to 5.0.0 Created-by: jialimin1 Commit-by: j00427146 Merged-by: cann-robot Description: ## 描述 现开源软件eigen 3.4.0 EOM,Eigen 从3.4.0版本升级到5.0.0,解决生命周期问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-nn/issues/975 https://gitcode.com/cann/ops-nn/issues/389 ## 测试   ## 文档更新 SECURITY.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Update Eigen to 5.0.0 See merge request: cann/ops-nn!1152 | 7 个月前 | |
feat: 算子仓适配Ascend5162A芯片编译 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !10554 merge feat/ascend5162a-build-support into master feat: 算子仓适配Ascend5162A芯片编译 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 算子仓适配 Ascend5162A 芯片编译:在编译框架(CMakeLists、build 脚本、SOC 映射)与 UT 桩代码中注册 ascend5162a 计算单元,支持通过 --soc=ascend5162a 编译输出 5162A 算子包。 改动清单(8 个文件): | 文件 | 改动 | |---|---| | CMakeLists.txt | ASCEND_ALL_COMPUTE_UNIT 增加 ascend5162a | | build.sh | SUPPORT_COMPUTE_UNIT_SHORT 增加 ascend5162a,usage 说明同步 | | scripts/kernel/binary_script/build_env.sh | SOC_MAP 增加 Ascend5162A | | scripts/util/const_var.py | SOC_MAP_EXT 增加 ascend5162a → Ascend5162A | | scripts/util/opdesc_parser.py | SOC_TO_SHORT_SOC_MAP 增加 ascend5162a | | tests/ut/common/tiling_case_executor.cpp | soc 映射表增加 ascend5162a | | tests/ut/op_api/stub/opdev/platform.cpp | ASCEND5162A ToString 映射 | | tests/ut/op_api/stub/opdev/platform.h | SocVersion 枚举增加 ASCEND5162A | ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5899 ## 测试 本地环境(CANN 9.2.0,aarch64)执行 build.sh --soc=ascend5162a,编译通过并成功生成算子包 cann-5162a-ops-nn_9.2.0_linux-aarch64.run;pre-commit 全量检查通过。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!10554 | 9 天前 | |
quantize_add_layer_norm arch35 cleancode整改 Co-authored-by: boes129<chenqi185@huawei.com> # message auto-generated for no-merge-commit merge: !10498 merge fix/quantize_add_layer_norm_cleancode into master quantize_add_layer_norm arch35 cleancode整改 Created-by: boes129 Commit-by: boes129 Merged-by: cann-robot Description: ## 描述 PR #8234 合入后 cleancode 检查三项不达标: 1. quantize_add_layer_norm_regbase_helper.h 550 行,超过头文件 500 行阈值; 2. 8 个函数超过 50 行阈值(最大的 VFCalcMeanVar 232 行); 3. welford kernel 的 Process() 圈复杂度 25,超过阈值 20。 本 PR 为纯结构重构,不改任何计算逻辑: - classify_rule.yaml中ops/ops-nn/norm/quantize_add_layer_norm/已经覆盖了quantize_add_layer_norm算子适配950新增的文件,去掉之前额外加在classify_rule.yaml的文件。 - 新增 quantize_add_layer_norm_regbase_stats.h,把 mean/var 统计类函数(VFCalcMeanVar/VFCalcMeanVarFast 等)从 helper.h 挪过去,两个文件都在 500 行以内; - 超长函数拆小:VFCalcMeanVar 拆成每行两段(mean 相 / var 相)加块级小函数,FinalizeAlign 与两个 kernel 的 Init / VFCalcYQuant / Process 用同样拆法。拆分方式对照 rms_norm、add_layer_norm 等已合入代码的函数组织习惯,代码逐字搬移; - 唯一的等价改写:var 相改为从 UB 广播装载 mean(DIST_BRC_B32),替代原来跨段持有的寄存器直通,与本算子 full_load 路径 VFCalcYQuant 的现有写法一致; - 原 6 处 LocalMemBar 的数量、方向、作用域位置逐一核对,保持不变。 ## 关联的Issue 无(承接 MR #8234 的 cleancode 整改)。 ## 测试 蓝区真实环境(CANN 9.2.0-beta.2,Ascend950PR): - 950 kernel 构建(build.sh --soc=ascend950 --opkernel):零错误,binary 6 个 .o,与合入基线一致; - 950 host UT:14/14 PASSED; - 910b 回归(build.sh --soc=ascend910b -u):无 FAILED(910b 与 host 路径未改动); - 本地 pre-commit 全绿(含 clang-format、OAT 许可证检查)。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构(cleancode 检查整改,零语义变更) ## AI/Agent生成声明 - [ x] AI辅助编写 See merge request: cann/ops-nn!10498 | 9 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 2 个月前 | |
feat(ge-opgraph): D4 兼容处理 — ELF patch 弱化 CustomPassContext 新增成员方法符号 Co-authored-by: hugo111<zhaoxinxin1@huawei.com> # message auto-generated for no-merge-commit merge: !9924 merge feature/fusion-pass-d4-compat into master feat(ge-opgraph): D4 兼容处理 — ELF patch 弱化 CustomPassContext 新增成员方法符号 Created-by: hugo111 Commit-by: hugo111 Merged-by: cann-robot Description: # Pull Request ## 描述 背景:libopgraph_nn.so 使用新版本 CANN (>=9.0) 头文件编译后,会引用 新版本才提供的接口符号(CustomPassContext 新增成员方法、ES CompliantNodeBuilder V2 API 等)。这些符号在旧版本运行时(如 8.5.0) 中不存在,导致 dlopen 直接失败、所有融合 pass 无法注册。 本 PR 使该 .so 在新旧版本运行时上均可正常加载: - 构建后处理(cmake/weaken_compat_symbols.sh + weaken_dynsym.py): 将 .dynsym 中新版本接口符号从 GLOBAL 改为 WEAK,旧运行时加载时 未解析符号返回 NULL 而非 dlopen 失败;新运行时行为不变。 - pass 内运行时版本守卫:调用新版本接口前先通过 aclsysGetVersionNum 检测版本,旧版本环境降级跳过,避免调用 NULL 弱符号。 - 链接修正:libopgraph_nn.so 显式链接 libacl_rt.so,保证 aclsysGetVersionNum 在旧运行时下也能解析。 - 同步弱化 libes_nn.so/libes_math.so 中引用的 ES V2 符号。 - 移除/调整依赖新版本 es:: API 的 UT 用例,使 UT 可独立编译运行 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 mock GE(8.5.0/9.0.0)+ dlopen(RTLD_NOW|RTLD_GLOBAL) 穿刺验证: - 未 patch:dlopen 失败(undefined symbol: CustomPassContext::GetOptionValue)—— 证明弱化必要 - patch 后 8.5.0:dlopen 成功,版本守卫降级,无 SIGSEGV - patch 后 9.0.0:弱符号解析真实地址,正常调用 CI 编译 libopgraph_nn.so 时 POST_BUILD 自动执行弱化脚本。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 脚本对 pyelftools 缺失、无匹配符号均 exit 0,不阻断构建。 See merge request: cann/ops-nn!9924 | 4 天前 | |
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 | 24 天前 |
🔥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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。