本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
add check ops list Co-authored-by: he_kan<hekan4@huawei.com> # message auto-generated for no-merge-commit merge: !9797 merge ci into master add check ops list Created-by: he_kan Commit-by: he_kan Merged-by: cann-robot Description: ## 描述 新增对于pr_filelist.txt是否在白名单中的check 如果不在,则不执行线上st <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9797 | 27 天前 | |
feat: 算子910B~910E区间判断追加IsRegbase()并统一IsArch3510判断以兼容后续Regbase芯片 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !10101 merge q_aclnn_version into master feat: 算子910B~910E区间判断追加IsRegbase()并统一IsArch3510判断以兼容后续Regbase芯片 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 以 RegBase 架构(NpuArch = DAV_3510,含 Ascend950 及后续 Regbase 芯片)兼容为目标,统一两类芯片判断写法: 1. **区间判断追加**:对 4 个算子 op_api 中 GetSocVersion() >= ASCEND910B && GetSocVersion() <= ASCEND910E 区间判断追加 || Ops::NN::AclnnUtil::IsRegbase(),使 RegBase 平台在 SocVersion 区间之外时也走 910B 支持分支 2. **硬编码统一**:将 1 个算子的本地架构判断封装函数(IsArch3510)实现改为 IsRegbase(),后续 Regbase 芯片无需逐文件修改 ## 修改内容一:区间判断追加(4 个文件,4 处) | 算子 | 文件 | 修改 | |------|------|------| | logsoftmaxv2 | activation/log_softmax_v2/op_api/aclnn_log_softmax.cpp | CheckSocVersionIsSupportBf16 追加 IsRegbase();补 include | | logsoftmaxgrad | activation/log_softmax_grad/op_api/aclnn_logsoftmax_backward.cpp | 同上(include 原已存在) | | softmaxgrad | activation/softmax_grad/op_api/aclnn_softmax_backward.cpp | 同上(include 原已存在) | | batchNormElemt | norm/batch_norm_elemt/op_host/op_api/aclnn_batch_norm_elemt.cpp | 追加 IsRegbase() 并删除冗余 == SocVersion::ASCEND950;补 include | ### 关于删除 == SocVersion::ASCEND950 的说明 SocVersion 枚举中 ASCEND950 = ASCEND910_95(值 3)位于 ASCEND910B(1)与 ASCEND910E(4)之间,区间判断本已覆盖 950,原 || == ASCEND950 分支从不单独生效;且 Ascend950 的 NpuArch 即 DAV_3510,IsRegbase() 对 950 同样为真。净效果为纯扩展,存量平台无收窄。 ## 修改内容二:硬编码判断统一(1 个文件,1 处) - layerNormV4:norm/layer_norm_v4/op_host/op_api/aclnn_layer_norm.cpp:123 —— IsArch3510() 函数体改为 Ops::NN::AclnnUtil::IsRegbase()(调用点不动) ### 范围说明 - addRmsNormQuantV2(aclnn_add_rms_norm_quant_v2):upstream !10098(完善RMSNorm量化校验)已将其 IsSocVersion950() 统一改名并实现为 IsRegbase(),本次不改,与 upstream 保持零 diff - batchNormGradV3(aclnn_fast_batch_norm_backward):经评审本次不改,与 upstream 保持零 diff,其恒真条件见关联 Issue - 公共头 level2_base_caculation.h、experimental 目录、tests 不在本次范围,遗留问题见关联 Issue ## 关联的Issue - #5707 (ops-nn仓RegBase兼容遗留问题清理:公共头IsRegbase同步、恒真条件修正、重复查询优化) ## 测试 - pre-commit 检查(clang-format/codespell/OAT 等)全部通过 - 修改文件 g++ -fsyntax-only 语法验证通过 - 已触发 compile 编译 - 建议测试项: 1. 910B/910E 平台回归 BF16 正反向用例行为不变 2. Ascend950 平台回归(验证删除 == ASCEND950 等价、layerNormV4 的 950 分支行为不变) 3. RegBase 平台 BF16 用例由校验拒绝变为正常放行 4. 区间外平台(910/310/310P)BF16 仍被拦截 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ### 关联issue - [cann/ops-math#5467(ops-math 侧 910B~910E 区间判断追加 IsRegBase)](https://gitcode.com/cann/ops-math/pull/5467) See merge request: cann/ops-nn!10101 | 23 天前 | |
知识库接口实现迁移到ops-nn仓 Co-authored-by: Jiaxin_001<jiaxin12@huawei.com> # message auto-generated for no-merge-commit merge: !9748 merge zsk_0902 into master 知识库接口实现迁移到ops-nn仓 Created-by: Jiaxin_001 Commit-by: Jiaxin_001 Merged-by: cann-robot Description: ## 描述 canndev 仓计划删除 LegacyCommonMgr 接口,ops-nn 仓的 Ops::NN::QueryBank 实现依赖该接口访问知识库查询实现代码,将知识库查询的完整实现代码迁移到ops-nn仓,使 ops-nn 自身拥有端到端的知识库查询能力。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5539 ## 测试 测试反向卷积涉及的算子,知识库功能正常且走了新路径。 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9748 | 23 天前 | |
知识库接口实现迁移到ops-nn仓 Co-authored-by: Jiaxin_001<jiaxin12@huawei.com> # message auto-generated for no-merge-commit merge: !9748 merge zsk_0902 into master 知识库接口实现迁移到ops-nn仓 Created-by: Jiaxin_001 Commit-by: Jiaxin_001 Merged-by: cann-robot Description: ## 描述 canndev 仓计划删除 LegacyCommonMgr 接口,ops-nn 仓的 Ops::NN::QueryBank 实现依赖该接口访问知识库查询实现代码,将知识库查询的完整实现代码迁移到ops-nn仓,使 ops-nn 自身拥有端到端的知识库查询能力。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5539 ## 测试 测试反向卷积涉及的算子,知识库功能正常且走了新路径。 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9748 | 23 天前 | |
NPUAllocFloatStatus算子编码规范问题修复 Co-authored-by: wkkk0528<wangkai578@huawei.com> # message auto-generated for no-merge-commit merge: !9936 merge fix_npu_alloc_float_status into master NPUAllocFloatStatus算子编码规范问题修复 Created-by: wkkk0528 Commit-by: wkkk0528 Merged-by: cann-robot Description: ## 描述 修复 npu_alloc_float_status 算子的编码规范门禁缺陷: - G.PRE.09:宏定义末尾不以分号结尾(examples/test_geir) - G.FUU.21:memset 替换为安全函数 memset_s 并检查返回值 - G.CNS.04-CPP:ValidateDtype/ValidateFormat/ValidateShape 指针参数补充 const 修饰 - G.INC.03-CPP:npu_alloc_float_status_tiling_data.h 头文件自包含(补充 <cstdint>) ## 关联的issue https://gitcode.com/cann/ops-nn/issues/5612 ## 测试 已通过st测试、算子冒烟测试 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:编码规范门禁缺陷修复 See merge request: cann/ops-nn!9936 | 26 天前 | |
fix conv Co-authored-by: huafeng793<chenhuafeng2@huawei.com> # message auto-generated for no-merge-commit merge: !9974 merge fix_conv_0907 into master fix conv Created-by: huafeng793 Commit-by: huafeng793 Merged-by: cann-robot Description: ## 描述 1、quant conv算子golden问题修复 2、conv3dv2 AIC问题修复,修复load3d指令kstep配置越界(k方向搬运超过singlecoreCi) 根因:tiling决策问题,决策的kL0超过(singlecoreCi * kh * kw),原因是kL0 = kBL1MaxSize=singlecoreCi * kh * kw * kd conv3d load3d搬运时,featuremap一次只搬运一个kd=1的大小,故kL0计算自然也不涉及kd。 仅涉及HW模式,M模式无问题。 case信息如下: 【case1】conv3d hif8场景tilingkey=2058 feature:NCDHW,[5,4,2,128,256],hifloat8 filter:NCDHW,[4,1,5,5,5],hifloat8 bias:false output:NCDHW,[5,4,1,6,11],hifloat8 stride:[1,1,24,24,24] pad:[8,8,8,8,8,8] dilations:[1,1,4,4,4] groups:4 offset_x:0 【case2】conv3d hif8场景tilingkey=4154 feature:NCDHW,[3,6,4,96,192],hifloat8 filter:NCDHW,[16,6,11,11,11],hifloat8 bias:false output:NCDHW,[3,16,1,2,4],hifloat8 stride:[1,1,63,63,63] pad:[30,30,30,30,30,30] dilations:[1,1,6,6,6] groups:1 offset_x:0 【case3】conv3d hif8场景tilingkey=5178 feature:NCDHW,[3,8,24,128,128],hifloat8 filter:NCDHW,[32,2,9,9,9],hifloat8 bias:false output:NCDHW,[3,32,1,3,3],hifloat8 stride:[1,1,48,48,48] pad:[32,32,32,32,32,32] dilations:[1,1,8,8,8] groups:4 offset_x:0 3、conv aclnn代码问题cleancode 1)ExtendConv2dNCHW / QuantConv3dNCDHW 丢弃 L0Inner 返回码,错误被静默吞掉 2)QuantConv3dImpl::PostProcess:Transpose/ReFormat 返回值未判空即传入下一 L0 调用 4、conv2d sequeeze biasadd fusion pass cannFuse成环检测问题修复 修复方案:对于只是节点连边关系修改的融合pass,无需进行cannFuse检测。对于多节点融合成一个节点的融合pass,保留cannFuse。 ## 关联的Issue [#5797](https://gitcode.com/cann/ops-nn/issues/5797) [#5798](https://gitcode.com/cann/ops-nn/issues/5798) ## 测试 RDV通过 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9974 | 23 天前 | |
docs: 新增SoftmaxGradExtFusionPass/SoftmaxGradExtV2FusionPass/AscendQuantV2ScatterFusionPass/PReluGradFusionPass融合pass文档 Co-authored-by: yuanbin_22<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !9734 merge docs/sync-fusion-pass-soft-quant into master docs: 新增SoftmaxGradExtFusionPass/SoftmaxGradExtV2FusionPass/AscendQuantV2ScatterFusionPass/PReluGradFusionPass融合pass文档 Created-by: yuanbin_22 Commit-by: yuanbin_22 Merged-by: cann-robot Description: ## 描述 新增四个融合 pass 的说明文档,补充融合模式、使用约束及支持的型号信息: - **SoftmaxGradExtFusionPass**:将 Mul、ReduceSum、Sub 小算子融合为 SoftmaxGradExt 算子,支持 Ascend 950PR/950DT。 - **SoftmaxGradExtV2FusionPass**:SoftmaxGradExt 融合的 V2 版本,覆盖4种融合场景,支持 Ascend 950PR/950DT。 - **AscendQuantV2ScatterFusionPass**:将 AscendQuantV2 + Scatter 结构融合为 QuantUpdateScatter 算子,支持 Ascend 950PR/950DT。 - **PReluGradFusionPass**:将 PReluGrad 算子拆分为 PReluGradUpdate 和 PReluGradReduce 两个算子,支持 Ascend 950PR/950DT。 同时新增 7 张融合模式示意图(LFS)。 ## 关联的Issue #5497 ## 测试 纯文档更新,无需测试。 ## 文档更新 - 新增 activation/softmax_grad_ext/docs/SoftmaxGradExtFusionPass.md - 新增 activation/softmax_grad_ext/docs/SoftmaxGradExtV2FusionPass.md - 新增 activation/p_relu_grad_update/docs/PReluGradFusionPass.md - 新增 quant/ascend_quant_v2/docs/AscendQuantV2ScatterFusionPass.md - 新增 docs/zh/figures/ 下 7 张配图 ## 类型标签 - [x] 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9734 | 24 天前 | |
[fix] 补充examples目录下10个示例代码文件缺失的版权声明头 Co-authored-by: tangweiwei<tangweiwei2@huawei.com> # message auto-generated for no-merge-commit merge: !10258 merge fix/example-copyright-header into master [fix] 补充examples目录下10个示例代码文件缺失的版权声明头 Created-by: tangweiwei2 Commit-by: tangweiwei Merged-by: cann-robot Description: ## 描述 检查仓内所有 .cpp/.cc/.h 源文件(排除 experimental 目录)的版权声明情况,发现 examples 目录下 10 个示例代码文件缺失标准版权声明头(Copyright (c) 20xx Huawei Technologies Co., Ltd. ... CANN Open Software License Agreement Version 2.0 ...)。 本 PR 为以下 10 个文件补充版权声明头,版权年份与各算子同目录下其他源文件保持一致: 1. examples/add_example/examples/test_geir_add_example.cpp(2025) 2. index/scatter_mul/examples/test_geir_scatter_mul.cpp(2026) 3. index/scatter_max/examples/test_geir_scatter_max.cpp(2026) 4. index/scatter_min/examples/test_geir_scatter_min.cpp(2026) 5. index/scatter_div/examples/test_geir_scatter_div.cpp(2026) 6. activation/swiglu_group/examples/test_aclnn_swiglu_group.cpp(2026) 7. vfusion/modulate_grad/examples/test_aclnn_modulatebackward.cpp(2025) 8. quant/swiglu_mx_quant/examples/arch35/test_aclnn_swiglu_mx_quant.cpp(2026) 9. quant/swiglu_mx_quant_with_dual_axis/examples/arch35/test_aclnn_swiglu_mx_quant_with_dual_axis.cpp(2026) 10. quant/swiglu_backward_mx_quant_with_dual_axis/examples/arch35/test_aclnn_swiglu_backward_mx_quant_with_dual_axis.cpp(2026) 仅在每个文件头部新增版权声明,不改动任何功能代码。 ## 关联的Issue 关联Issue #5782 ## 测试 - 使用脚本扫描确认修改前 10 个文件无版权声明,修改后均包含标准版权头; - 仅新增文件头部注释,不影响编译与功能,无需运行算子测试。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10258 | 23 天前 | |
docs: 修正 IndexFill/ScatterNd/FusedLinearOnlineMaxSum/WeightQuantBatchMatmulV2/LSTM 文档示例笔误 Co-authored-by: weike<weike13@huawei.com> # message auto-generated for no-merge-commit merge: !10123 merge codex/pr-37ebcb4-docs-fix into master docs: 修正 IndexFill/ScatterNd/FusedLinearOnlineMaxSum/WeightQuantBatchMatmulV2/LSTM 文档示例笔误 Created-by: m0_55003149 Commit-by: weike Merged-by: cann-robot Description: ## 描述 修正 5 个算子文档示例中的笔误(对应本地提交 37ebcb4cb): - aclnnInplaceIndexFill:示例中日志打印的函数名由 aclnnIndexFill 改为 aclnnInplaceIndexFill; - aclnnScatterNd:示例注释由 aclnnAdd 改为 aclnnScatterNd; - aclnnFusedLinearOnlineMaxSum:示例中变量名 tatgetDeviceAddr 拼写修正为 targetDeviceAddr; - aclnnWeightQuantBatchMatmulV2:示例中 LOG_PRINT 的 aclnnCast2 修正为 aclnnCast; - aclnnLSTM:公式中隐藏状态向量符号 h_i 修正为 h_t。 ## 关联的Issue (https://gitcode.com/cann/ops-nn/issues/5704) ## 测试 纯文档修改,无代码逻辑变更,不需要运行测试。 ## 文档更新 本次改动仅涉及 5 个算子 .md 文档的示例/描述修正。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10123 | 25 天前 | |
解决foreach_exp/foreach_expm1/foreach_round_off_number/foreach_sub_list算子已知问题 | 20 天前 | |
perf: float2/float4 for embedding_hash_table_export/import Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !9895 merge perf/export-import-b128 into master perf: float2/float4 for embedding_hash_table_export/import Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 EmbeddingHashTableExport / EmbeddingHashTableImport 算子(arch35)引入 SIMT 访存合并优化:values 拷贝由逐元素 4B 标量访存改为按对齐分档的 float4(B128)/float2(B64) 短向量批量访存。桶 values 区偏移 24B、仅 8B 对齐(24B 桶头为 hash 家族跨算子契约),桶侧封顶 float2(B64);外部张量行在 dim%4==0 且基址 16B 对齐时用 float4(B128)(运行时对齐检查兜底)。dim≤4 回退原始标量路径(小 dim 宽访存收益抵不过开销,实测 import dim=4 无回退路径慢 16%)。桶格式/tiling/flag 语义/哈希函数零改动,canndev 仓 evict 算子跨仓契约不受影响。 **改动文件**: - hash/embedding_hash_table_import/op_kernel/arch35/embedding_hash_table_import.h:新增 CopyImportValuesMerged __simt_callee__ helper,values 插入循环改为三档合并分派(+39 -7) - hash/embedding_hash_table_export/op_kernel/arch35/embedding_hash_table_export.h:新增 CopyExportValuesMerged helper(读桶 2×float2 组装、输出行 float4 写),ExportPerThread values 拷出循环改为三档分派(+43 -7) **性能数据**(950PR,N=2^20,B=2^21,min 耗时,对比 built-in 基线): - import:dim8 +13%;dim16/32/48/64/128 = 1.65×/1.70×/1.99×/2.11×/2.35×(dim128 10.05→4.29 ms) - export:dim8/16/32/48/64/128 = 1.15×/1.21×/1.22×/1.24×/1.26×/1.28×(收益受 CountPerThread 全桶 flag 扫描等固定开销稀释) - 两算子 dim1~4 持平(标量回退路径),全 dim 无回退 ## 关联的Issue 关联 Issue #5578 ## 测试 - e2e 真机五算子 canonical 精度全 PASS(init 3/3、lookup 9/9、export 3/3、import 3/3、adamw 6/6) - sweep 全场景矩阵 137 用例全 PASS(init 36/36、lookup 54/54、export 11/11、import 9/9、adamw 27/27,含全 dim 档/filter_key/多表/碰撞边界) - vendor 包 vs built-in 包:精度逐项一致;性能五算子对比,优化算子只升不降,未优化的 apply_adam_w 对照组两包持平(环境无漂移) ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9895 | 27 天前 | |
[fix] 补充examples目录下10个示例代码文件缺失的版权声明头 Co-authored-by: tangweiwei<tangweiwei2@huawei.com> # message auto-generated for no-merge-commit merge: !10258 merge fix/example-copyright-header into master [fix] 补充examples目录下10个示例代码文件缺失的版权声明头 Created-by: tangweiwei2 Commit-by: tangweiwei Merged-by: cann-robot Description: ## 描述 检查仓内所有 .cpp/.cc/.h 源文件(排除 experimental 目录)的版权声明情况,发现 examples 目录下 10 个示例代码文件缺失标准版权声明头(Copyright (c) 20xx Huawei Technologies Co., Ltd. ... CANN Open Software License Agreement Version 2.0 ...)。 本 PR 为以下 10 个文件补充版权声明头,版权年份与各算子同目录下其他源文件保持一致: 1. examples/add_example/examples/test_geir_add_example.cpp(2025) 2. index/scatter_mul/examples/test_geir_scatter_mul.cpp(2026) 3. index/scatter_max/examples/test_geir_scatter_max.cpp(2026) 4. index/scatter_min/examples/test_geir_scatter_min.cpp(2026) 5. index/scatter_div/examples/test_geir_scatter_div.cpp(2026) 6. activation/swiglu_group/examples/test_aclnn_swiglu_group.cpp(2026) 7. vfusion/modulate_grad/examples/test_aclnn_modulatebackward.cpp(2025) 8. quant/swiglu_mx_quant/examples/arch35/test_aclnn_swiglu_mx_quant.cpp(2026) 9. quant/swiglu_mx_quant_with_dual_axis/examples/arch35/test_aclnn_swiglu_mx_quant_with_dual_axis.cpp(2026) 10. quant/swiglu_backward_mx_quant_with_dual_axis/examples/arch35/test_aclnn_swiglu_backward_mx_quant_with_dual_axis.cpp(2026) 仅在每个文件头部新增版权声明,不改动任何功能代码。 ## 关联的Issue 关联Issue #5782 ## 测试 - 使用脚本扫描确认修改前 10 个文件无版权声明,修改后均包含标准版权头; - 仅新增文件头部注释,不影响编译与功能,无需运行算子测试。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10258 | 23 天前 | |
修复example&&文档中的错误&&gru_grad大shape下精度问题 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !9972 merge master into master 修复example&&文档中的错误&&gru_grad大shape下精度问题 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1.修复example和文档中的错误 2. gru_grad大shape下精度问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5799 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> index/gather_v2/docs/aclnnMedianDim.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9972 | 23 天前 | |
修复api的level Co-authored-by: szhexin<shangzhexin@huawei.com> # message auto-generated for no-merge-commit merge: !10008 merge tensorapi into master 修复api的level Created-by: szhexin Commit-by: szhexin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->scaleadd走的tensorapi,需要修改对应api参数 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->Issue [#5779](https://gitcode.com/cann/ops-nn/issues/5779) ## 测试 <!--描述进行了哪些测试来验证你的改动。-->本地测试通过,冒烟通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10008 | 23 天前 | |
feat: 算子910B~910E区间判断追加IsRegbase()并统一IsArch3510判断以兼容后续Regbase芯片 Co-authored-by: hahaha22<wangrunze20@h-partners.com> # message auto-generated for no-merge-commit merge: !10101 merge q_aclnn_version into master feat: 算子910B~910E区间判断追加IsRegbase()并统一IsArch3510判断以兼容后续Regbase芯片 Created-by: hahaha22 Commit-by: hahaha22 Merged-by: cann-robot Description: ## 描述 以 RegBase 架构(NpuArch = DAV_3510,含 Ascend950 及后续 Regbase 芯片)兼容为目标,统一两类芯片判断写法: 1. **区间判断追加**:对 4 个算子 op_api 中 GetSocVersion() >= ASCEND910B && GetSocVersion() <= ASCEND910E 区间判断追加 || Ops::NN::AclnnUtil::IsRegbase(),使 RegBase 平台在 SocVersion 区间之外时也走 910B 支持分支 2. **硬编码统一**:将 1 个算子的本地架构判断封装函数(IsArch3510)实现改为 IsRegbase(),后续 Regbase 芯片无需逐文件修改 ## 修改内容一:区间判断追加(4 个文件,4 处) | 算子 | 文件 | 修改 | |------|------|------| | logsoftmaxv2 | activation/log_softmax_v2/op_api/aclnn_log_softmax.cpp | CheckSocVersionIsSupportBf16 追加 IsRegbase();补 include | | logsoftmaxgrad | activation/log_softmax_grad/op_api/aclnn_logsoftmax_backward.cpp | 同上(include 原已存在) | | softmaxgrad | activation/softmax_grad/op_api/aclnn_softmax_backward.cpp | 同上(include 原已存在) | | batchNormElemt | norm/batch_norm_elemt/op_host/op_api/aclnn_batch_norm_elemt.cpp | 追加 IsRegbase() 并删除冗余 == SocVersion::ASCEND950;补 include | ### 关于删除 == SocVersion::ASCEND950 的说明 SocVersion 枚举中 ASCEND950 = ASCEND910_95(值 3)位于 ASCEND910B(1)与 ASCEND910E(4)之间,区间判断本已覆盖 950,原 || == ASCEND950 分支从不单独生效;且 Ascend950 的 NpuArch 即 DAV_3510,IsRegbase() 对 950 同样为真。净效果为纯扩展,存量平台无收窄。 ## 修改内容二:硬编码判断统一(1 个文件,1 处) - layerNormV4:norm/layer_norm_v4/op_host/op_api/aclnn_layer_norm.cpp:123 —— IsArch3510() 函数体改为 Ops::NN::AclnnUtil::IsRegbase()(调用点不动) ### 范围说明 - addRmsNormQuantV2(aclnn_add_rms_norm_quant_v2):upstream !10098(完善RMSNorm量化校验)已将其 IsSocVersion950() 统一改名并实现为 IsRegbase(),本次不改,与 upstream 保持零 diff - batchNormGradV3(aclnn_fast_batch_norm_backward):经评审本次不改,与 upstream 保持零 diff,其恒真条件见关联 Issue - 公共头 level2_base_caculation.h、experimental 目录、tests 不在本次范围,遗留问题见关联 Issue ## 关联的Issue - #5707 (ops-nn仓RegBase兼容遗留问题清理:公共头IsRegbase同步、恒真条件修正、重复查询优化) ## 测试 - pre-commit 检查(clang-format/codespell/OAT 等)全部通过 - 修改文件 g++ -fsyntax-only 语法验证通过 - 已触发 compile 编译 - 建议测试项: 1. 910B/910E 平台回归 BF16 正反向用例行为不变 2. Ascend950 平台回归(验证删除 == ASCEND950 等价、layerNormV4 的 950 分支行为不变) 3. RegBase 平台 BF16 用例由校验拒绝变为正常放行 4. 区间外平台(910/310/310P)BF16 仍被拦截 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ### 关联issue - [cann/ops-math#5467(ops-math 侧 910B~910E 区间判断追加 IsRegBase)](https://gitcode.com/cann/ops-math/pull/5467) See merge request: cann/ops-nn!10101 | 23 天前 | |
修改AIDD扫描问题 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !10263 merge master into master 修改AIDD扫描问题 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10263 | 23 天前 | |
补全embeddingbag,avgpool2d,embedding_dense_backward约束与实际代码行为对齐 Co-authored-by: Apricityh<wangxu359@huawei.com> # message auto-generated for no-merge-commit merge: !10136 merge fix/embedding-dense-backward-log-format into master 补全embeddingbag,avgpool2d,embedding_dense_backward约束与实际代码行为对齐 Created-by: Apricityh Commit-by: Apricityh Merged-by: cann-robot Description: ## 描述 补全embeddingbag,avgpool2d,embedding_dense_backward约束与实际代码行为对齐 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5726 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10136 | 24 天前 | |
[fix] 补充examples目录下10个示例代码文件缺失的版权声明头 Co-authored-by: tangweiwei<tangweiwei2@huawei.com> # message auto-generated for no-merge-commit merge: !10258 merge fix/example-copyright-header into master [fix] 补充examples目录下10个示例代码文件缺失的版权声明头 Created-by: tangweiwei2 Commit-by: tangweiwei Merged-by: cann-robot Description: ## 描述 检查仓内所有 .cpp/.cc/.h 源文件(排除 experimental 目录)的版权声明情况,发现 examples 目录下 10 个示例代码文件缺失标准版权声明头(Copyright (c) 20xx Huawei Technologies Co., Ltd. ... CANN Open Software License Agreement Version 2.0 ...)。 本 PR 为以下 10 个文件补充版权声明头,版权年份与各算子同目录下其他源文件保持一致: 1. examples/add_example/examples/test_geir_add_example.cpp(2025) 2. index/scatter_mul/examples/test_geir_scatter_mul.cpp(2026) 3. index/scatter_max/examples/test_geir_scatter_max.cpp(2026) 4. index/scatter_min/examples/test_geir_scatter_min.cpp(2026) 5. index/scatter_div/examples/test_geir_scatter_div.cpp(2026) 6. activation/swiglu_group/examples/test_aclnn_swiglu_group.cpp(2026) 7. vfusion/modulate_grad/examples/test_aclnn_modulatebackward.cpp(2025) 8. quant/swiglu_mx_quant/examples/arch35/test_aclnn_swiglu_mx_quant.cpp(2026) 9. quant/swiglu_mx_quant_with_dual_axis/examples/arch35/test_aclnn_swiglu_mx_quant_with_dual_axis.cpp(2026) 10. quant/swiglu_backward_mx_quant_with_dual_axis/examples/arch35/test_aclnn_swiglu_backward_mx_quant_with_dual_axis.cpp(2026) 仅在每个文件头部新增版权声明,不改动任何功能代码。 ## 关联的Issue 关联Issue #5782 ## 测试 - 使用脚本扫描确认修改前 10 个文件无版权声明,修改后均包含标准版权头; - 仅新增文件头部注释,不影响编译与功能,无需运行算子测试。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10258 | 23 天前 | |
DynamicRNN: 修复双标杆精度并优化性能 Co-authored-by: weike<weike13@huawei.com> # message auto-generated for no-merge-commit merge: !10245 merge lstm into master DynamicRNN: 修复双标杆精度并优化性能 Created-by: m0_55003149 Commit-by: weike Merged-by: cann-robot Description: ## 描述 A5(950) 平台 DynamicRNN/LSTM 的 fp32 路径同时存在精度与性能问题: ## 关联的Issue (https://gitcode.com/cann/ops-nn/issues/5786) ## 测试 - 精度:全量200 精度失败集 13 条,其中 A2 同样失败的 12 条 ,另外一条复检通过。 - 性能:全量 200 用例均优于 A2。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10245 | 23 天前 | |
nn仓vector算子适配350平台 Co-authored-by: zhouliang<zhouliang88@huawei.com> # message auto-generated for no-merge-commit merge: !10004 merge master into master nn仓vector算子适配350平台 Created-by: zhou-liang1027 Commit-by: zhouliang Merged-by: cann-robot Description: ## 描述 p_relu等算子适配350平台 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5755 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10004 | 24 天前 | |
fix asan test Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !9033 merge master into master fix asan test Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 修复 ASan(AddressSanitizer)测试中暴露的问题,主要包括:类型不匹配、越界访问、字段缺失及命名不一致。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 详细变更 ### 1. 类型修正(uint32_t/int32_t → int64_t/uint64_t) 使测试中的 CompileInfo 结构体字段类型与实际算子侧定义保持一致,消除 ASan 因类型宽度不匹配报告的问题。 | 文件 | 字段 | 旧类型 | 新类型 | |------|------|--------|--------| | test_add_layer_norm_tiling.cpp | aivCoreNum_, sysWorkspaceSize_, vecRegSize_, blockSize_ | uint32_t | int64_t | | test_embedding_dense_grad_v2_tiling.cpp | totalCoreNum | int32_t | uint64_t | | test_add_rms_norm_cast_tiling.cpp | totalCoreNum | uint32_t | uint64_t | | test_add_rms_norm_quant_tiling.cpp | totalCoreNum | uint32_t | uint64_t | ### 2. 命名规范化:isRegbase → isRegBase 修正大小写不一致,统一为驼峰命名 isRegBase。 - test_embedding_dense_grad_v2_tiling.cpp ### 3. 补充缺失字段 isRegBase 为以下测试的 CompileInfo 结构体补充 isRegBase 字段(默认 false),避免因结构体字段缺失导致的内存读取越界: - test_modulate_tiling.cpp(4 处) - test_multi_scale_deformable_attention_grad_tiling.cpp(1 处) - test_multi_scale_deformable_attn_function_tiling.cpp(9 处) ### 4. 补充缺失字段 blockSize / vlFp32 - test_layer_norm_grad_tiling.cpp: 为 LayerNormGradCompileInfo 补充 blockSize 和 vlFp32(均为 int64_t)字段。 ### 5. 移除硬编码值 - test_add_rms_norm_cast_tiling.cpp: 将 totalCoreNum = 40、totalUbSize = 196608 改为 0,避免与实际平台信息不一致。 - test_add_rms_norm_quant_tiling.cpp: 同上,并调整字段顺序与命名(socVersion → curSocVersion,totalUbSize → maxUbSize)。 ### 6. 越界访问修复 - tests/ut/common/tiling_context_faker.cpp:309: 添加 idx < inputInstanceNumPacked_.size() 边界检查,防止 inputInstanceNumPacked_ 越界访问。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9033 | 30 天前 | |
[BugFix] 修复add_rms_norm_dynamic_quant FP4输出y的shape恢复错误(尾两维(1,2)场景) Co-authored-by: wangqi<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !10182 merge fix/fp4-packed-dim-shape-restore into master [BugFix] 修复add_rms_norm_dynamic_quant FP4输出y的shape恢复错误(尾两维(1,2)场景) Created-by: wangqi_ai Commit-by: wangqi Merged-by: cann-robot Description: 关联 Issue: #5727 ## 变更摘要 修复 torch.ops.cann_ops_nn.add_rms_norm_dynamic_quant(基于 aclnnAddRmsNormDynamicMxQuantV2)在 **x1 尾两维为 (1,2) 且 dst_type 为 FP4(40/41)** 时输出 y 的 shape 恢复错误(EZ0009),并补充 H=2 边界 st 用例。 - **csrc 修复**(+4 行):构造 TensorWrapper y_wrapper 时显式指定 packedDim = y.dim() - 1,跳过歧义 stride 启发式,走 CollectB4ShapeInfo 确定性恢复分支;非 4-bit 类型不消费该字段,无影响。该分支同时完整恢复所有非末维 stride(启发式仅修正倒数第二维),描述符更规范。 - **st 用例**(+6 行):新增 H=2 边界用例(R=1/R=2 × FP4 E2M1/E1M2、H=4 对照、FP8 回归、bf16)——修复前 H=2 覆盖为零(既有用例 H 最小 32)。 ## 问题现象 Invalid_Argument_Tensor_Shape(EZ0009): Parameter output_y of AddRmsNormDynamicMxQuant has incorrect shape [[..., 2, 1]]. Reason: same as input x1. [FUNC:CheckShapeSame][FILE:add_rms_norm_dynamic_mx_quant_tiling_base_arch35.cpp][LINE:44] L1 shape fuzz 的 6 个失败用例均为此模式。 ## 根因 csrc 将 FP4 的 y 按尾维减半打包为 uint8(y_shape.back() /= 2)后,TensorWrapper 未声明 packedDim(默认 -1),aclnn_common.h 的 CollectB4ShapeInfo 退化为 stride 启发式。当打包后 y 的末两维均为 1(连续 tensor 末两维 stride 均为 1 且倒数第二维 size 为 1)时,启发式误判打包维度在倒数第二维,恢复出 (...,2,1)。该场景下逻辑 shape (...,1,2) 与 (...,2,1) 字节层面同构(1 字节含 2 个 FP4),启发式原理上无法区分,必须显式声明——这正是 packedDim 字段的设计目的。 ## 验证(TTK E2E,Ascend950PR,cann-9.2.0) | 项 | 结果 | |---|---| | 原始 6 个 L1 shape 失败用例 | shape 报错全部消除(修复前 0/6 可执行) | | 泛化矩阵 113 例(维度 1-7 × H=2 全 R 变体 × dst_type 35/36/40/41 × beta/x3/output_rstd/round_mode/bf16) | 全部通过;H 奇数+FP4 等非法组合仍被既有校验正确拒绝 | | st 回归(41 既有用例,固定 seed A/B 对比原始代码) | 行为等价 | | 全量 st(41 既有 + 6 新增) | **47/47 PASS** | | pre-commit(clang-format / codespell / OAT 合规) | 全部通过 | ## 附带分析结论(不改变 golden,仅记录) 修复后 fuzz 用例 957(FP4,H=2,118M 行)在 binary_equal 标准下仍有 16/238M(~7e-8)bit 翻档。已实验证明:golden 的 fp32→T_X cast 建模与 kernel 实际路径一致(去掉 cast 后翻档恶化 4 个数量级至 0.12%,**不可改为 fp32 量化**);残余翻档源于 golden 与 kernel 的 fp32 normed ulp 级差异(求和顺序)恰落在 cast 判决边界两侧,属量化边界的固有噪声,建议通过容差配置处理(FP4 的 y 容差 2^-10 已有先例)。 ## 关联改进(另一仓) 本 bug 之所以表象错位(shape 报错掩盖属性丢失),是因为 L1 用例从 aclnn 转 E2E 时属性键名(camelCase dstType 等)未映射为 torch schema 的 snake_case,被 TTK 静默丢弃后按默认值执行。已在 ops-test-kit 提交看护 MR:cann/ops-test-kit#239(未匹配属性打 WARNING)。 ## CLA 已通过(cann-cla/yes)。 See merge request: cann/ops-nn!10182 | 24 天前 | |
[fix] 补充examples目录下10个示例代码文件缺失的版权声明头 Co-authored-by: tangweiwei<tangweiwei2@huawei.com> # message auto-generated for no-merge-commit merge: !10258 merge fix/example-copyright-header into master [fix] 补充examples目录下10个示例代码文件缺失的版权声明头 Created-by: tangweiwei2 Commit-by: tangweiwei Merged-by: cann-robot Description: ## 描述 检查仓内所有 .cpp/.cc/.h 源文件(排除 experimental 目录)的版权声明情况,发现 examples 目录下 10 个示例代码文件缺失标准版权声明头(Copyright (c) 20xx Huawei Technologies Co., Ltd. ... CANN Open Software License Agreement Version 2.0 ...)。 本 PR 为以下 10 个文件补充版权声明头,版权年份与各算子同目录下其他源文件保持一致: 1. examples/add_example/examples/test_geir_add_example.cpp(2025) 2. index/scatter_mul/examples/test_geir_scatter_mul.cpp(2026) 3. index/scatter_max/examples/test_geir_scatter_max.cpp(2026) 4. index/scatter_min/examples/test_geir_scatter_min.cpp(2026) 5. index/scatter_div/examples/test_geir_scatter_div.cpp(2026) 6. activation/swiglu_group/examples/test_aclnn_swiglu_group.cpp(2026) 7. vfusion/modulate_grad/examples/test_aclnn_modulatebackward.cpp(2025) 8. quant/swiglu_mx_quant/examples/arch35/test_aclnn_swiglu_mx_quant.cpp(2026) 9. quant/swiglu_mx_quant_with_dual_axis/examples/arch35/test_aclnn_swiglu_mx_quant_with_dual_axis.cpp(2026) 10. quant/swiglu_backward_mx_quant_with_dual_axis/examples/arch35/test_aclnn_swiglu_backward_mx_quant_with_dual_axis.cpp(2026) 仅在每个文件头部新增版权声明,不改动任何功能代码。 ## 关联的Issue 关联Issue #5782 ## 测试 - 使用脚本扫描确认修改前 10 个文件无版权声明,修改后均包含标准版权头; - 仅新增文件头部注释,不影响编译与功能,无需运行算子测试。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10258 | 23 天前 | |
修改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 | 30 天前 | |
动态库解耦 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 个月前 | |
feat(cmake): prebed include/aicpu path in Findaicpu.cmake Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !9958 merge feat/prebed-include-aicpu-path into master feat(cmake): prebed include/aicpu path in Findaicpu.cmake Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 在 Findaicpu.cmake 中为已安装依赖包构建场景补充 include/aicpu 头文件搜索路径,预埋后续opbase中pkg_inc/aicpu头文件给include/aicpu/路径切换平稳过渡。 ### 变更 cmake if(BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG) set(AICPU_INC_DIRS ... ${ASCEND_DIR}/${SYSTEM_PREFIX}/include/experiment/datagw/aicpu/common ${ASCEND_DIR}/${SYSTEM_PREFIX}/pkg_inc ${ASCEND_DIR}/${SYSTEM_PREFIX}/pkg_inc/aicpu ${ASCEND_DIR}/${SYSTEM_PREFIX}/include/aicpu ← 新增 ) ### 涉及文件 | 文件 | 变更 | 说明 | |------|------|------| | cmake/modules/Findaicpu.cmake | +1 | AICPU_INC_DIRS 追加 include/aicpu 路径 | ## 关联的Issue include path增加一个路径,逻辑简单,不用创建issue了。 ## 测试 相关用例测试通过。 ## 文档更新 NA ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [x] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-nn!9958 | 26 天前 | |
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 个月前 | |
update download ops-test-kit and update case for st Co-authored-by: he_kan<hekan4@huawei.com> # message auto-generated for no-merge-commit merge: !9537 merge ci into master update download ops-test-kit and update case for st Created-by: he_kan Commit-by: he_kan Merged-by: cann-robot Description: ## 描述 1. 更新ops_st_test.sh脚本中下载ops-test-kit的方式,由原有的配置make文件下载,改为直接用git clone下载 2. 针对线上CI模式,不返回失败,在正式上线前不阻塞CI 3. 更新非量化mm类用例,减少执行时间 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> Issue #4426 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9537 | 1 个月前 | |
产品文档中png文件改为英文名 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !8300 merge master into master 产品文档中png文件改为英文名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 产品文档中的png图片名由中文改为英文 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#4260](https://gitcode.com/cann/ops-nn/issues/4260) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> png和相关的link md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8300 | 1 个月前 | |
init | 11 个月前 | |
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 个月前 | |
cannsim改名为npusim Co-authored-by: liangbinglong<liangbinglong@huawei.com> # message auto-generated for no-merge-commit merge: !8349 merge master into master cannsim改名为npusim Created-by: liangbinglong Commit-by: liangbinglong Merged-by: cann-robot Description: ## 描述 经TSC评审,cannsim工具正式更名为npusim,相关命令行、资料同步刷新,cannsim作为别名兼容一段时间,需要尽快切换 ## 关联的Issue NA ## 测试 使用最新链接版本测试,相关命令行已经全部更名为npusim ## 文档更新 更新doc下面的调优部分文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8349 | 1 个月前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 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 | 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 个月前 | |
修复--jit包没有kernel源码无法在线编译,不符合资料的问题 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9952 merge new_set into master 修复--jit包没有kernel源码无法在线编译,不符合资料的问题 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 本 PR 主要解决 JIT 包因缺少 kernel 源码而无法在线编译、与资料描述不符的问题,核心是调整二进制产物构建与算子信息生成的触发条件:将 ENABLE_BINARY 的赋值时机前移到编译选项解析阶段,并取消 build_binary 与 ENABLE_JIT/ENABLE_CUSTOM 的耦合,改为由 ENABLE_BINARY/ENABLE_PACKAGE 驱动,从而保证相关场景下 kernel 二进制能被正确生成; ### 主要改动 * build.sh 中 ENABLE_BINARY 赋值时机前移:在 checkopts() 处理自定义算子编译选项 ops=* 时即置 ENABLE_BINARY=TRUE,删除原先位于 assemble_cmake_args() 中 ENABLE_CUSTOM == TRUE 才置位的逻辑,使二进制构建开关在更早阶段生效。 * build.sh 中 build_binary 触发条件调整:main() 内条件由「ENABLE_BINARY 或 ENABLE_CUSTOM 且 ENABLE_JIT == FALSE」改为「ENABLE_BINARY 或 ENABLE_PACKAGE」,解除了 JIT 场景下不构建二进制的限制,并纳入 ENABLE_PACKAGE 场景。 * cmake/gen_ops_info.cmake 条件收紧:gen_ops_info_and_python 中按计算单元生成算子编译信息的判断由 ENABLE_BINARY OR ENABLE_CUSTOM 改为仅 ENABLE_BINARY,使该流程只受二进制构建开关控制。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9952 | 26 天前 | |
quantize_add_layer_norm算子支持950 Co-authored-by: boes129<chenqi185@huawei.com> # message auto-generated for no-merge-commit merge: !8234 merge feat/quantize_add_layer_norm_ascend950 into master quantize_add_layer_norm算子支持950 Created-by: boes129 Commit-by: boes129 Merged-by: cann-robot Description: ## 描述 **背景**: QuantizeAddLayerNorm 融合 (x1+x2+bias) → LayerNorm → 静态量化,输出 INT8 y 与残差 x,是 vllm-ascend W8A8 链路上 LayerNorm-quant 家族成员(同族 add_layer_norm_quant 已全量支持 950)。此前该算子仅支持 910B / 910_93 / Kirin,Ascend 950(arch35/regbase)无注册,属功能性缺口。本 PR 按家族标准模式补齐 950 支持:单提交 9b3f1af1d,18 个文件,+4077/−11,基于 upstream/master(6f805c527)。 **方法**:仿照兄弟算子 add_layer_norm_quant 已合入的 arch35 实现模式(混合法:kernel 分发入口 + 预编译二进制): - **登记**:def.cpp 新增 config_950,dtype 契约与 910B 完全一致(y 恒 INT8、x 跟随主路;fp16 主路→scales/zp=fp32、bf16 主路→scales/zp=bf16、fp32 主路→scales/zp=fp32),全部输入 .AutoContiguous()。910B / 910_93 / Kirin 配置与逻辑一行未动。 - **Tiling**:tiling.cpp 按家族标准骨架 CanUseRegbase 分流(950 → 新调度员;其余走原 910B 逻辑,仅函数名加 Membase 后缀,内容未改)。新增 tiling_arch35.cpp:12 个 tiling key(8001~8122 = 2 种 UB 策略 × 2 种 bias 形态 × 3 种量化模式),full_load(整行驻留、两遍统计,数值路径与 910B 一致)与 welford(列分块、单遍流式统计)双策略。 - **Kernel**:新增 _apt.cpp 12-key 分发入口 + arch35 三件(helper / full_load / welford);复用 add_layer_norm 的 arch35 共享头与 norm_common 归约原语(编译期源码级复用,运行时零依赖),op_host/CMakeLists.txt 声明 DEPENDENCIES add_layer_norm norm_common(norm 族 39 个算子的标准做法)。 - **预编译**:config/ascend950/binary.json 共 6 条(3 个 dtype 槽位 × zero_points 有无),simplified_key 与 GenSimplifiedKey 严格对齐。 - **测试与文书**:host tiling UT +12、kernel 冒烟 UT +3、golden 生成/比对脚本(numpy,补该算子无 golden 的历史缺口,真卡 ST 可直接复用)。 ## 关联的Issue 关联Issue #4496([Requirement|需求建议]: quantize_add_layer_norm 增加 Ascend 950 支持) **详细的算子设计方法在下面ISSUE中体现:** https://gitcode.com/cann/ops-nn/issues/4496 ## 测试 1. **host tiling UT**(伪 950 平台,无需真机):新增 12 例,覆盖 full_load/welford × bias 形态 × 量化模式的 key 落位(8001~8122)与核数断言;连同 910B 既有 infershape/dtype 2 例回归 → **14/14 PASSED**。 2. **kernel UT**(c310 模拟器):full_load / full_load fast-path(D=64)/ welford 三组形状 × 3 种量化模式,3 例**跑通冒烟**。说明:CANN 9.0.0-beta.2 模拟器不完整模拟量化系 regbase 指令流——同仓佐证:batch_norm 基线全绿且 0 条 unknown instr(模拟器本身健康),rms_norm_quant_v2 等 950 量化系算子同为此限制、其 kernel UT 即 run-only。数值正确性不由模拟器断言,golden 比对基建已备,交由真卡 ST 验证。 3. **全矩阵回归**(真实环境,三 SoC): | SoC | 结果 | |---|---| | ascend950 | 二进制全部产出;host UT 14 例全过;kernel UT 3 例冒烟通过 | | ascend910b | host UT 14 例全过;kernel UT 既有 6 例通过,无回归 | | ascend910_93 | 编译通过,binary_info_config 正确注册 QuantizeAddLayerNorm | 4. **终态复验**(2026-09-07,真实 950 环境,对最终单提交 9b3f1af1d 重新 clone 验证):HEAD 正确;binary.json = 6 条;构建恰好产出 **6 个 .o**(与 6 条 binary 一一对应);binary_info_config.json 含 QuantizeAddLayerNorm;UT 14+3 PASSED、0 [ FAILED ]。 构建命令:bash build.sh --soc=ascend950 --ops=quantize_add_layer_norm -u / --opkernel。 > **量化输出契约说明**:Ascend 950 硬件支持 FP8/INT4 等量化输出,本 PR 保持与 910B 语义及家族 950 先例(add_layer_norm_quant / layer_norm_quant)一致的 INT8 契约;若下游需要 FP8 输出,属算子接口演进,建议另立 issue 讨论。 ## 文档更新 - README.md:支持矩阵 Ascend 950PR / 950DT × → √。 - classify_rule.yaml:HPTG1 追加 3 类 arch35 路径备案(tiling_arch35.cpp / config/ascend950/ / op_kernel/arch35/)。 - docs/zh/op_list.md:各列为 SoC 无关维度,确认无需改动。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8234 | 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 个月前 | |
调整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 个月前 | |
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 个月前 |
ops-nn
🔥Latest News
- [2026/05] 优化kernel编译配置项,减少simplified_key和ascendc_config配置文件(!3330)。
- [2026/05] 引入ops-tensor,基于分层结构优化Cube类算子,减少偏移量计算和简化指令参数(!5036)。
- [2026/05] 发布生态算子的精度验收标准(!4572)。
- [2026/03] 开源算子支持下一代芯片:Ascend950PR(!450)。
- [2026/03] 新增<<<>>>的算子开发样例(!620)。
- [2026/03] 低bit类算子和融合算子支持更多数据类型:fp8/mxfp8/hifp8/mxfp4等,并支持pertensor/perchannel/pertoken/pergroup/perblock等不同量化和组合方式:全量化融合算子:quant_batch_matmul_v4,伪量化融合算子:weight_quant_batch_matmul_v2。
- [2026/03] 支持SIMD/SIMT新同构编程算子实现:[MapIndex](#660),[ScatterSub](#710)。
- [2026/01] 新增QuickStart,指导新手零基础入门算子项目部署(支持Docker环境)、算子开发和贡献流程。
- [2025/12] 开源算子支持Ascend 950PR/Ascend 950DT/KirinX90,可以通过NPU Simulator仿真工具开发调试;优化指南类文档,聚焦算子开发指南,明确最小交付件和关键示例代码,针对Ascend/samples仓算子提供迁移本项目的指导;新支持稀疏4:2量化matmul算子,针对稀疏矩阵开启硬件加速能力。
- [2025/11] 新支持算子index_fill、masked_scatter、scatter、tf_scatter_add、fused_cross_entropy_loss_with_max_sum。
- [2025/10] 新增experimental目录,完善贡献指南,支持开发者调试并贡献自定义算子。
- [2025/09] ops-nn项目首次上线,开源算子支持Atlas A2/A3系列产品。
🚀概述
ops-nn是CANN(Compute Architecture for Neural Networks)算子库中提供神经网络计算能力的高阶算子库,包括matmul类、activation类等算子,算子库架构图如下:

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