本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
docs: add environment details to bug report Co-authored-by: yolic<chenyuning1@huawei.com> # message auto-generated for no-merge-commit merge: !10383 merge 0912report into master docs: add environment details to bug report Created-by: yolic Commit-by: yolic Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ISSUE添加模板,引导用户添加环境信息 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了ISSUE_TEMPLATE/bug-report.yml ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10383 | 20 天前 | |
fix(swiglu_group_grad): 补齐 Scalar 流水同步,修复 gradWeight 偶现精度问题 Co-authored-by: qq_52056150<wangshuo179@huawei.com> # message auto-generated for no-merge-commit merge: !10447 merge fix/swiglu-group-grad-pipeline-sync into master fix(swiglu_group_grad): 补齐 Scalar 流水同步,修复 gradWeight 偶现精度问题 Created-by: qq_52056150 Commit-by: qq_52056150 Merged-by: cann-robot Description: ## 问题 regbase kernel 通过 GetPhyAddr 直接用 Scalar 流水读写 TQue/TBuf 缓冲,但 TQue 内建事件只覆盖 V<->MTE 方向,从不栅栏 Scalar 流水。跨 tile / 跨 chunk 复用同一块 UB 时存在硬件级 WAR/RAW 竞争,表现为 gradWeight 偶现精度偏差(非崩溃)。 ## 修复 补齐四个缺失的同步方向,不使用 PIPE_ALL,按实际依赖选择精确流水事件: - **S_MTE2**(WAR:Scalar 读 vs MTE2 覆写)— NumpyPairwiseSum 用 Scalar 读 gradYQueue_ 缓冲,FreeTensor 只置 V_MTE2(解阻 Vector),下一 tile 的 DataCopyPad 会用 MTE2 覆写同一块 UB。补 ProcessFullRowTiles(FP32)、ProcessUltraWideTask(FP32)、ProcessHiddenChunks(FP32)。 - **MTE3_S**(WAR:MTE3 读 vs Scalar 覆写)— WriteScalarFloat 与 ProcessFullRowTiles 的 gradWeightQueue_ AllocTensor 只等 MTE3_V,随后 Scalar 直接写入,而上一次 CopyChunkOut / CopyTileOut 的 MTE3 可能仍在读同一缓冲。 - **MTE2_S / MTE3_MTE2** — ProcessUltraWideFixedTree 单核归并循环去掉 PipeBarrier<PIPE_ALL>,改为精确事件;SyncAll 前的全局栅栏收窄为 PipeBarrier<PIPE_MTE3>(只有 MTE3 有未完成写)。 - **S_V**(WAR:Scalar 读 vs Vector 覆写)— gradYFloatBuffer_ / inputFloatBuffer_ 是 TBuf,无内建事件,下一 tile 的 CastTileToFloat / CastChunkToFloat 从 Vector 侧重写。另外 NumpyPairwiseSumFast 入口补 S_V,与 NumpyPairwiseSumVectorized 对齐——ProcessHiddenChunks 传入的 partial 数组由 Scalar 写出,chunkElementCount==2048 时走 Fast 分支。 ## 验证 Ascend950PR / CANN 9.1.0: - 编译:--opkernel 通过(3 个 tilingKey 特化全部成功) - UT:op_host 29/29 PASSED,op_kernel 4/4 PASSED - pre-push gate:PASSED(opkernel UT + ascend950 pkg) > RegBase intrinsics 在 tikicpulib CPU 模拟器下按既有方式 skip,精度回归需真实 NPU 硬件复跑。 See merge request: cann/ops-nn!10447 | 19 天前 | |
知识库接口实现迁移到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 | 24 天前 | |
迁移3个TF plugin Co-authored-by: akira<zhouyuanhang4@h-partners.com> # message auto-generated for no-merge-commit merge: !10288 merge tf_plugin_migration_from_canndev into master 迁移3个TF plugin Created-by: VoyageZhou Commit-by: akira Merged-by: cann-robot Description: ## 描述 迁移3个TF plugin - depthwise_conv2d_backprop_filter_plugin.cc - depthwise_conv2d_backprop_input_plugin.cc - depthwise_conv2d_forward_native_plugin.cc <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [Issue 5812](https://gitcode.com/cann/ops-nn/issues/5812) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10288 | 21 天前 | |
算子 UpdateTensorDesc 支持 ascend950 Co-authored-by: zhoulong50_hw<zhoulong50@huawei.com> # message auto-generated for no-merge-commit merge: !10344 merge update_tensor_desc into master 算子 UpdateTensorDesc 支持 ascend950 Created-by: zhoulong50_hw Commit-by: zhoulong50_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 算子 UpdateTensorDesc 支持 ascend950,支持 geir 通路。 实现了该算子的 tiling + kernel:主要思路是通过将输出搬入 UB,然后根据算子要求赋值,再搬出。 本次交付同时搭配了 tests 以及 examples。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5878 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 二级冒烟,泛化用例210条,geir 测试,ut 测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增ascend950算子,更新了op_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10344 | 19 天前 | |
[cleancode] norm类算子C++语言规则告警整改 Co-authored-by: runqi_zhang<zhangrunqi2@huawei.com> # message auto-generated for no-merge-commit merge: !10501 merge fix/cleancode-norm-v4 into master [cleancode] norm类算子C++语言规则告警整改 Created-by: runqi_zhang Commit-by: runqi_zhang Merged-by: cann-robot Description: ## 描述 norm类算子出现C++语言规则告警,对相关代码进行整改。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10501 | 18 天前 | |
算子 UpdateTensorDesc 支持 ascend950 Co-authored-by: zhoulong50_hw<zhoulong50@huawei.com> # message auto-generated for no-merge-commit merge: !10344 merge update_tensor_desc into master 算子 UpdateTensorDesc 支持 ascend950 Created-by: zhoulong50_hw Commit-by: zhoulong50_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 算子 UpdateTensorDesc 支持 ascend950,支持 geir 通路。 实现了该算子的 tiling + kernel:主要思路是通过将输出搬入 UB,然后根据算子要求赋值,再搬出。 本次交付同时搭配了 tests 以及 examples。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5878 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 二级冒烟,泛化用例210条,geir 测试,ut 测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增ascend950算子,更新了op_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10344 | 19 天前 | |
[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 | 24 天前 | |
fix issue #5824 5825 Co-authored-by: yolic<chenyuning1@huawei.com> # message auto-generated for no-merge-commit merge: !10343 merge 0912issue into master fix issue #5824 5825 Created-by: yolic Commit-by: yolic Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改部分算子文档,部分链接已失效。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5824](https://gitcode.com/cann/ops-nn/issues/5824) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10343 | 20 天前 | |
解决foreach_exp/foreach_expm1/foreach_round_off_number/foreach_sub_list算子已知问题 Co-authored-by: surezz<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !10178 merge foreach_five_op_pro into master 解决foreach_exp/foreach_expm1/foreach_round_off_number/foreach_sub_list算子已知问题 Created-by: surezz Commit-by: surezz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决foreach_exp/foreach_expm1/foreach_round_off_number/foreach_sub_list算子已知问题,核心改动是为这些算子补齐整型数据类型支持(int16/int8/uint8,其中 foreach_round_off_number 为 int16) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5642 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> david冒烟、二级冒烟、新增四个算子(int16/int8/uint8)用例共100条,加上原用例200条,无功能回退,精度通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10178 | 20 天前 | |
perf: float2/float4 for embedding_hash_table_apply_adam_w Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !10323 merge perf/adamw-b128 into master perf: float2/float4 for embedding_hash_table_apply_adam_w Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 EmbeddingHashTableApplyAdamW 算子(arch35)引入 SIMT 访存合并 + 高维 probe 摊销布局优化: (1)**合并访存 VF**(fp32 偶数 dim∈[6,128]\{26,62\} 或 dim>736):独立 VF ComputeAdamWMergedFp32,m/v/maxGradNorm/grad/values 五路状态 float4(B128)/float2(B64) 批量访存(dim%4==0→float4,%4==2→float2,运行时 16B 对齐判定兜底),两相 load/compute/store 压寄存器峰值;blockX 主窗口封顶 4(dim≥88 为 8)、高窗口封顶 32。tiling/kernel 分派条件逐字一致(布局契约)。 (2)**probe 摊销布局**(dim 257~736 全 dtype/奇偶 + dim>736 的 fp16/奇数档):旧公式 blockNum=N×⌈dim/256⌉ 超额 block 全空转,改为 fp32 bx=32/by=16、fp16 bx=64/by=8(fp16 bx=32 在 even 344~352/奇数 641~767 实测稳定回退 0.93~0.99×,bx=64 全档 ≥1.017×,两 dtype 分叉为实测标定);legacy kernel 内 xLoop(xLoopSize=⌈dim/blockX⌉ kernel 推导)一次 probe 走全程,与旧公式位级一致。 (3)**回退策略**(全 dim 扫描标定):dim 26/62(0.975× 稳定回退)、dim 130~256(旧布局已近最优)保持 legacy;fp16 dim≤256 保持旧公式。 (4)**兼容性**:桶格式/tiling 字段/flag 位语义/MurmurHash3 零改动,hash 家族算子不受影响。 **改动文件**: - hash/embedding_hash_table_apply_adam_w/op_kernel/arch35/embedding_hash_table_apply_adam_w.h:合并 VF + Process() 分派门控 - hash/embedding_hash_table_apply_adam_w/op_host/arch35/embedding_hash_table_apply_adam_w_tiling_arch35.cpp:分派窗口 + probe 摊销布局分支 - hash/embedding_hash_table_apply_adam_w/tests/ut/op_host/arch35/test_embedding_hash_table_apply_adam_w_tiling.cpp:UT 文件名修复(原名不匹配 UT glob 从未执行)+ 新增分派窗口契约断言 7 组 **实测性能**(950PR,N=2^20,B=2^21,min 耗时,fp32 全 dim 1024 档 + fp16 逐档标定): - fp32 主窗口 dim 6~128:均值 1.12×(峰值 1.72×@dim8) - fp32 dim 257~736:368 档均值 1.13×(最好 1.45×@257) - fp32 dim>736 偶数:均值 1.25×(最好 1.46×@864) - fp16 dim 257~1024:均值 1.38×(峰值 2.98×@258) - 其余档(fp16≤256、fp32 奇数≤256、dim<6、130~256)持平,全 dim 双 dtype 无回退 **测试**: - e2e 真机五算子 sweep 全场景 150 用例全 PASS(init 36/36、lookup 54/54、export 11/11、import 9/9、adamw 40/40,含 dim>256 新增用例与 fp16 高维档) - tiling UT 4/4 PASS(含分派窗口契约断言) - 布局改动与旧公式位级一致(dim 258~1024 含奇数/amsgrad 逐字节比对) - 双机复测结论一致 关联需求 issue:https://gitcode.com/cann/ops-nn/issues/5823 See merge request: cann/ops-nn!10323 | 23 天前 | |
docs: 修正 GatherV2/GatherV3/NanMedian/NanMedianDim 文档示例问题 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !10541 merge master into master docs: 修正 GatherV2/GatherV3/NanMedian/NanMedianDim 文档示例问题 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. docs: 修正 GatherV2/GatherV3/NanMedian/NanMedianDim 文档示例问题 2. gru_grad性能提升 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5896 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> aclnnGatherV2.md aclnnGatherV3.md aclnnNanMeidan.md aclnnNanMeidanDim.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10541 | 18 天前 | |
Logit算子贡献 Co-authored-by: ilovescrapy<2623969821@qq.com> # message auto-generated for no-merge-commit merge: !4945 merge logit-latest into master Logit算子贡献 Created-by: ilovescrapy Commit-by: ilovescrapy Merged-by: cann-robot Description: Backgroud(背景信息) 一、背景信息 (必填) 对现有的算子增加int16、int8、uint8三种数据类型的支持。 二、价值/作用 (必填) 基于Logit算子历史TBE版本使用Ascend C编程语言进行优化,实现了AscendC实现的Logit算子对Atlas A2训练系列产品和Atlas 800I A2推理系列硬件的适配。丰富昇腾算子开源仓算子实现,给同类型算子开发提供了参考示例。 See merge request: cann/ops-nn!4945 | 20 天前 | |
fix ascend950 matmul_emu_split cannot find binary Co-authored-by: zhengyuhao3<zhengyuhao3@huawei.com> # message auto-generated for no-merge-commit merge: !10491 merge fix_matmul_emu_split into master fix ascend950 matmul_emu_split cannot find binary Created-by: zhengyuhao3 Commit-by: zhengyuhao3 Merged-by: cann-robot Description: ## 描述 修复matmul_emu_split算子由于CMakeList编译选项变更导致找不到二进制文件问题 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5886 ## 测试 本地自验证功能正常 aclnnFuzz框架测试正常 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10491 | 18 天前 | |
modified md file (Updated the README.md file of the AddRmsNorm operator) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !10523 merge master into master modified md file (Updated the README.md file of the AddRmsNorm operator) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 Modified the meaning of the rstd parameter in the README.md file of the AddRmsNorm operator. ## 关联的Issue [#5523](https://gitcode.com/cann/ops-nn/issues/5523) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 norm/add_rms_norm/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10523 | 18 天前 | |
refactor(optim): CodeCheck代码规范整改 Co-authored-by: wangpengbo26<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !10441 merge codecheck915 into master refactor(optim): CodeCheck代码规范整改 Created-by: wangpengbo26 Commit-by: wangpengbo26 Merged-by: cann-robot Description: ## 描述 对 optim 算子族 arch35 平台 tiling 代码进行 C++ 规范整改,将 reinterpret_cast 替换为 static_cast,消除 codecheck 告警。 ### 改动原因 7 个 LAMB 算子 arch35 tiling 文件中使用 reinterpret_cast 进行类型转换,触发 codecheck 告警。这些转换均为已知类型间的下行转换,可安全使用 static_cast 替代。 ### 改动方法 每个文件 2 处修改(共 14 处),统一模式: 1. reinterpret_cast<uint8_t*>(emptyRawTiling->GetData()) → static_cast<uint8_t*>(...) 2. reinterpret_cast<const XxxCompileInfo*>(context->GetCompileInfo()) → static_cast<const XxxCompileInfo*>(...) 涉及 7 个算子: - lamb_apply_optimizer_assign - lamb_apply_weight_assign - lamb_next_m_v - lamb_next_m_v_with_decay - lamb_next_right - lamb_update_with_lr - lamb_update_with_lr_v2 涉及文件(7 个,均 +2 -2): - optim/lamb_apply_optimizer_assign/op_host/arch35/lamb_apply_optimizer_assign_tiling_arch35.cpp - optim/lamb_apply_weight_assign/op_host/arch35/lamb_apply_weight_assign_tiling_arch35.cpp - optim/lamb_next_m_v/op_host/arch35/lamb_next_m_v_tiling_arch35.cpp - optim/lamb_next_m_v_with_decay/op_host/arch35/lamb_next_m_v_with_decay_tiling_arch35.cpp - optim/lamb_next_right/op_host/arch35/lamb_next_right_tiling_arch35.cpp - optim/lamb_update_with_lr/op_host/arch35/lamb_update_with_lr_tiling_arch35.cpp - optim/lamb_update_with_lr_v2/op_host/arch35/lamb_update_with_lr_v2_tiling_arch35.cpp ## 关联的Issue -https://gitcode.com/cann/ops-nn/issues/5864 ## 测试 pass。 ## 文档更新 不涉及 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:codecheck 规范整改 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!10441 | 19 天前 | |
add overlap constraint for w parallel kernel Co-authored-by: fengjiawei1<fengjiawei5@huawei.com> # message auto-generated for no-merge-commit merge: !10497 merge avg_pool_over_ca into master add overlap constraint for w parallel kernel Created-by: fengjiawei1 Commit-by: fengjiawei1 Merged-by: cann-robot Description: ## 描述 add overlap constraint for w parallel kernel <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5897 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10497 | 18 天前 | |
fix(prelu_backward): 按接口文档修正weight/gradWeight的shape校验 Co-authored-by: transformer910<tianye82@h-partners.com> # message auto-generated for no-merge-commit merge: !10395 merge br_prelugrad_checkshape into master fix(prelu_backward): 按接口文档修正weight/gradWeight的shape校验 Created-by: transformer910 Commit-by: transformer910 Merged-by: cann-robot Description: ## 描述 【问题背景】 aclnnPreluBackward 的 CheckShape 校验与接口文档(docs/aclnnPreluBackward.md)不符,存在两类问题: 1. gradWeight 校验错误:weight 元素个数非 1 时,强制要求 gradWeight 为一维 [channelSize], 导致 gradWeight 与 weight 同 shape 的合法场景(文档明确要求"gradWeight的shape与weight的 shape保持一致")被误判为 ACLNN_ERR_PARAM_INVALID。 2. weight 自身形态未校验:仅校验 weight 元素个数等于 self 通道数,未校验形态,导致 weight={2,2} + self={2,4,3,2} 这类文档不允许的输入被静默接受,且后续被 flatten 成 一维送入 kernel 按通道权重计算,产生语义错误的结果。 【修改方案】 op_api/aclnn_prelu_backward.cpp 的 CheckShape 重构 weight 校验逻辑(self > 1 维时): - weight 为 1 维:元素个数必须等于 self 的第 2 维(通道数),如 self (1,2,3) + weight (2,); - weight 为多维:维数必须与 self 相同、第 2 维必须等于通道数、其余维度必须全为 1, 如 self (1,2,3) + weight (1,2,1); - 不满足上述形态时报 ACLNN_ERR_PARAM_INVALID。 gradWeight 校验改为无条件要求 shape 与 weight 保持一致(原 weightNum==1 与非 1 两个 分支的校验合并),与文档约束一致。 执行链路无改动:多维 weight 送 kernel 前仍会 flatten 为一维,输出侧已有 reshape 到 gradWeight shape 的逻辑,不影响计算结果。 【影响范围】 仅影响 aclnnPreluBackward 接口的入参 shape 校验(更严格),不涉及 kernel 变更。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5865 ## 测试 【自测情况】 UT 变更(test_aclnn_prelu_backward.cpp): - 修改 testcase_025:weight (2,2) + self (2,4,3,2) 由 SUCCESS 改为期望 ACLNN_ERR_PARAM_INVALID(原用例与文档约束冲突); - 保留 testcase_034:weight/gradWeight 均为 (1,45000) 的多维同 shape 场景; - 新增 testcase_035:self (1,2,3) + weight (1,2,1) + gradWeight (1,2,1),正向场景; - 新增 testcase_036:self (1,2,3) + weight (2,) + gradWeight (2,),正向场景; - 新增 testcase_037:weight (2,1)(元素个数匹配但形态非法),异常场景; - 新增 testcase_038:weight (1,2,1) + gradWeight (2,)(shape 不一致),异常场景。 运行 l2_prelu_backward_test 全量 38 个用例,全部通过(含精度用例)。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10395 | 19 天前 | |
docs: 修正 GatherV2/GatherV3/NanMedian/NanMedianDim 文档示例问题 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !10541 merge master into master docs: 修正 GatherV2/GatherV3/NanMedian/NanMedianDim 文档示例问题 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. docs: 修正 GatherV2/GatherV3/NanMedian/NanMedianDim 文档示例问题 2. gru_grad性能提升 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5896 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> aclnnGatherV2.md aclnnGatherV3.md aclnnNanMeidan.md aclnnNanMeidanDim.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10541 | 18 天前 | |
nn仓算子350适配 Co-authored-by: zhouliang<zhouliang88@huawei.com> # message auto-generated for no-merge-commit merge: !10332 merge master into master nn仓算子350适配 Created-by: zhou-liang1027 Commit-by: zhouliang Merged-by: cann-robot Description: ## 描述 nn仓算子350适配 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5826 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10332 | 20 天前 | |
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 | 1 个月前 | |
[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 | 25 天前 | |
fix(msda): 加固 multi_scale_deformable_attn 310P 输入校验,封堵 GM 越界读 Co-authored-by: cuijie25<cuijie24@h-partners.com> # message auto-generated for no-merge-commit merge: !9456 merge msda_fix into master fix(msda): 加固 multi_scale_deformable_attn 310P 输入校验,封堵 GM 越界读 Created-by: cuijie25 Commit-by: cuijie25 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 加固 MultiScaleDeformableAttn 算子输入校验,封堵 GM 越界读(本 PR 缩减为仅含 310P 相关修改,910b/950 平台同款加固后续另行提交): - op_host(tiling.cpp,310P/910b 共用 tiling):补齐 level_start_index、sampling_location 两个输入的空指针检查;新增 numLevels 一致性校验(spatialShape[0]、attnWeight/location 的 level 维、levelStartIndex[0] 必须相等),覆盖 GE 图直连 tiling 路径,防止不一致 shape 绕过 host 校验进入 kernel 后 GetValue/DataCopy 越界读。 - op_kernel(ms_deform_attn_310p.h):310P kernel 逐 level 校验 H/W 合法性,以 numKeys_ 为唯一可信上界,非法时打印诊断并 Trap 报错,防止 valueOffset 越界/回绕。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5305](https://gitcode.com/cann/ops-nn/issues/5305) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 非法 shape(level 维不一致 / H*W 超过 numKeys)场景下 tiling 返回 GRAPH_FAILED,kernel Trap 报错 - 合法 shape 回归验证功能不受影响 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9456 | 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 个月前 | |
算子 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 | 19 天前 | |
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 个月前 | |
公共文档同步修改 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 | 21 天前 | |
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 个月前 | |
新增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 | 19 天前 | |
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 | 27 天前 | |
当前torch_ext的测试框架还没搭建,文件覆盖率非100%,需要先用classify_rule规避tqbmm的torch_ext Co-authored-by: wangwei_mayday<wangwei1183@huawei.com> # message auto-generated for no-merge-commit merge: !10401 merge master into master 当前torch_ext的测试框架还没搭建,文件覆盖率非100%,需要先用classify_rule规避tqbmm的torch_ext Created-by: wangwei_mayday Commit-by: wangwei_mayday Merged-by: cann-robot Description: ## 描述 当前matmul的torch_extension ut测试框架还没搭建起来,原本需要覆盖的torch_extension相关函数无法做ut覆盖,主要是以下这些文件夹下的函数 ops/ops-nn/matmul/transpose_quant_batch_mat_mul/torch_extension 当前先用规避手段,避免这些文件被扫描ut覆盖率 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->关联Issue [#5472](https://gitcode.com/cann/ops-nn/issues/5472) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ x ] 其他,请描述:规则修改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10401 | 19 天前 | |
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 个月前 |
🔥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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。