本项目是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 | 1 天前 | |
修复selu和SoftshrinkGrad算子产品支持情况描述错误问题 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !9982 merge selu_fix into master 修复selu和SoftshrinkGrad算子产品支持情况描述错误问题 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 修正 Selu 与 SoftshrinkGrad(aclnnSoftshrinkBackward 接口)两个算子文档中 Ascend 950PR/Ascend 950DT 产品支持情况描述错误的问题。 经核对 canndev 仓 ops/built-in/tbe/op_info_cfg/ai_core/ascend950/aic-ascend950-ops-info.ini,其中已登记 [Selu] 算子信息(dtype:float16,float,int32,int8,bfloat16;slicePattern:elemwise),Ascend 950PR/Ascend 950DT 默认支持该算子;soft_shrink_grad 的 README 与 aclnnSoftshrinkBackward.md 文档均已声明 950PR/950DT 支持,并具备 arch35 tiling 单测。具体修改: 1. activation/selu/docs/aclnnSelu&aclnnInplaceSelu.md:Ascend 950PR/Ascend 950DT 支持情况由"不支持"改为"支持",与 selu README.md 及 canndev ini 信息保持一致。 2. docs/zh/op_api_list.md:按表中符号说明("-"表示该接口暂不支持当前列产品),aclnnSelu&aclnnInplaceSelu 与 aclnnSoftshrinkBackward 两行的"确定性说明(Ascend 950)"列由"-"改为"默认确定性实现"。两个算子均为逐元素(elemwise/broadcast)计算,不含原子加等非确定性操作。 ## 关联的Issue #5630 ## 测试 - 纯文档修改,不涉及代码逻辑,无适用测试。 - 已核对证据:canndev ascend950 ini 存在 [Selu] 段;ops-nn 仓 activation/selu/README.md、activation/selu_grad/docs/aclnnSeluBackward.md、activation/soft_shrink_grad/docs/aclnnSoftshrinkBackward.md 均声明 950PR/950DT 支持;activation/soft_shrink_grad/tests/ut/op_host/arch35/test_soft_shrink_grad_tiling.cpp 为 950(arch35)tiling 单测。 ## 文档更新 - 更新 activation/selu/docs/aclnnSelu&aclnnInplaceSelu.md:修正 Ascend 950PR/Ascend 950DT 支持情况。 - 更新 docs/zh/op_api_list.md:修正 aclnnSelu&aclnnInplaceSelu、aclnnSoftshrinkBackward 两条接口 Ascend 950 列的确定性说明。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9982 | 20 小时前 | |
统一配置ops-nn安装目录及文件权限 Co-authored-by: q00889097<qinhan10@huawei.com> # message auto-generated for no-merge-commit merge: !9836 merge master into master 统一配置ops-nn安装目录及文件权限 Created-by: qinhan123 Commit-by: q00889097 Merged-by: cann-robot Description: ## 描述 该 PR 旨在统一 ops-nn 安装目录及文件权限的配置方式:清理散落在安装脚本各处的 chmod 权限设置逻辑,改为在统一入口集中处理,并同步升级了 cann-cmake 依赖版本以配合权限体系的调整。核心改动集中在 scripts/package/ops_nn/scripts/install.sh 与 opp_install.sh:删除了对日志文件、scene.info、version.info、INSTALL_INFO_FILE、script 目录及 filelist.csv 的分散 chmod 操作 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5580 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9836 | 8 小时前 | |
Conv3DTranspose算子950代码与tbe解耦,tbe_tiling_api迁移至conv/common/op_host并独立出OpTypeV2枚举定义 Co-authored-by: cheng_gao<cheng.gao@huawei.com> # message auto-generated for no-merge-commit merge: !9769 merge tbe_move_20260902 into master Conv3DTranspose算子950代码与tbe解耦,tbe_tiling_api迁移至conv/common/op_host并独立出OpTypeV2枚举定义 Created-by: cheng_gao Commit-by: cheng_gao Merged-by: cann-robot Description: ## 描述 Conv3DTranspose算子950代码与tbe解耦,tbe_tiling_api迁移至conv/common/op_host并独立出OpTypeV2枚举定义 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5641 ## 测试 RDV基本功能 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9769 | 7 小时前 | |
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 | 21 小时前 | |
Conv3DTranspose算子950代码与tbe解耦,tbe_tiling_api迁移至conv/common/op_host并独立出OpTypeV2枚举定义 Co-authored-by: cheng_gao<cheng.gao@huawei.com> # message auto-generated for no-merge-commit merge: !9769 merge tbe_move_20260902 into master Conv3DTranspose算子950代码与tbe解耦,tbe_tiling_api迁移至conv/common/op_host并独立出OpTypeV2枚举定义 Created-by: cheng_gao Commit-by: cheng_gao Merged-by: cann-robot Description: ## 描述 Conv3DTranspose算子950代码与tbe解耦,tbe_tiling_api迁移至conv/common/op_host并独立出OpTypeV2枚举定义 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5641 ## 测试 RDV基本功能 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9769 | 7 小时前 | |
修复selu和SoftshrinkGrad算子产品支持情况描述错误问题 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !9982 merge selu_fix into master 修复selu和SoftshrinkGrad算子产品支持情况描述错误问题 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 修正 Selu 与 SoftshrinkGrad(aclnnSoftshrinkBackward 接口)两个算子文档中 Ascend 950PR/Ascend 950DT 产品支持情况描述错误的问题。 经核对 canndev 仓 ops/built-in/tbe/op_info_cfg/ai_core/ascend950/aic-ascend950-ops-info.ini,其中已登记 [Selu] 算子信息(dtype:float16,float,int32,int8,bfloat16;slicePattern:elemwise),Ascend 950PR/Ascend 950DT 默认支持该算子;soft_shrink_grad 的 README 与 aclnnSoftshrinkBackward.md 文档均已声明 950PR/950DT 支持,并具备 arch35 tiling 单测。具体修改: 1. activation/selu/docs/aclnnSelu&aclnnInplaceSelu.md:Ascend 950PR/Ascend 950DT 支持情况由"不支持"改为"支持",与 selu README.md 及 canndev ini 信息保持一致。 2. docs/zh/op_api_list.md:按表中符号说明("-"表示该接口暂不支持当前列产品),aclnnSelu&aclnnInplaceSelu 与 aclnnSoftshrinkBackward 两行的"确定性说明(Ascend 950)"列由"-"改为"默认确定性实现"。两个算子均为逐元素(elemwise/broadcast)计算,不含原子加等非确定性操作。 ## 关联的Issue #5630 ## 测试 - 纯文档修改,不涉及代码逻辑,无适用测试。 - 已核对证据:canndev ascend950 ini 存在 [Selu] 段;ops-nn 仓 activation/selu/README.md、activation/selu_grad/docs/aclnnSeluBackward.md、activation/soft_shrink_grad/docs/aclnnSoftshrinkBackward.md 均声明 950PR/950DT 支持;activation/soft_shrink_grad/tests/ut/op_host/arch35/test_soft_shrink_grad_tiling.cpp 为 950(arch35)tiling 单测。 ## 文档更新 - 更新 activation/selu/docs/aclnnSelu&aclnnInplaceSelu.md:修正 Ascend 950PR/Ascend 950DT 支持情况。 - 更新 docs/zh/op_api_list.md:修正 aclnnSelu&aclnnInplaceSelu、aclnnSoftshrinkBackward 两条接口 Ascend 950 列的确定性说明。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9982 | 20 小时前 | |
modify examples/fast_kernel_launch_example/README.md Co-authored-by: yolic<chenyuning1@huawei.com> # message auto-generated for no-merge-commit merge: !9440 merge 0828_torch_readme into master modify examples/fast_kernel_launch_example/README.md Created-by: yolic Commit-by: yolic Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改 examples/fast_kernel_launch_example/README.md,新增soc说明 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#5302](https://gitcode.com/cann/ops-nn/issues/5302) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了 examples/fast_kernel_launch_example/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9440 | 11 天前 | |
docs: fix wrong op name LpNormV2 in lp_norm_v3 README Co-authored-by: liuhanwen8<liuhanwen8@huawei.com> # message auto-generated for no-merge-commit merge: !9920 merge fix/lp-norm-v3-readme-title into master docs: fix wrong op name LpNormV2 in lp_norm_v3 README Created-by: liuhanwen8 Commit-by: liuhanwen8 Merged-by: cann-robot Description: ## 描述 experimental/norm/lp_norm_v3/README.md 中的算子名称误写为 **LpNormV2**(共 5 处),实际算子为 **LpNormV3**: - 算子注册名为 LpNormV3:OP_ADD(LpNormV3)(op_host/lp_norm_v3_def.cpp:50) - aclnn 调用接口为 aclnnLpNormV3(examples/test_aclnn_lp_norm_v3.cpp:406) - 目录名、def/tiling/kernel 示例文件名均为 lp_norm_v3 该 README 疑似从 norm/lp_norm_v2 复制后未改名。本 PR 将标题及正文共 5 处 LpNormV2 全部更正为 LpNormV3,仅改文档,不涉及代码改动。 > 备注:原 PR #9919 因头分支重建被自动关闭后重开受限,本 PR 为其替代,内容与 #9919 最终状态完全一致(单提交)。 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5621 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 仅文档改动,不涉及代码行为;已核对 master 分支 README 中 5 处错误位置,修正内容与算子实际注册名(LpNormV3)一致。 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 更新了 experimental/norm/lp_norm_v3/README.md <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9920 | 1 天前 | |
fix(foreach): 四算子整型语义对齐 PyTorch — AddScalarV2/SubListV2 溢出回绕 + Exp/Expm1 整进浮出 Co-authored-by: Tian_1122<tianjunhan@h-partners.com> # message auto-generated for no-merge-commit merge: !9890 merge master into master fix(foreach): 四算子整型语义对齐 PyTorch — AddScalarV2/SubListV2 溢出回绕 + Exp/Expm1 整进浮出 Created-by: Tian_1122 Commit-by: Tian_1122 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> int16/int8/uint8 新增类型下, AddScalarV2/SubListV2 整数溢出饱和钳位(竞品为二进制补码回绕);Exp/Expm1 整进整出+rint取整+饱和钳位(竞品整进浮出fp32+IEEE饱和), 常规取值即有差异(如 uint8 exp(3)=20 vs 20.085)。 修复: - AddScalarV2/SubListV2: 参照 !9151(AddListV2) 方案, 新增各自私有 wrap kernel —int16 域直接计算(硬件原生模2^16回绕), int8/uint8 经half提升int16精算后位掩码折叠低8位 - Exp/Expm1: 新增公共模板 foreach_utils/op_kernel/foreach_int_to_float_unary.h(骨架+函数指针复用),整数输入提升fp32计算后直写float32输出 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue #5618 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9890 | 6 小时前 | |
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 | 1 天前 | |
fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Co-authored-by: pingchuantang<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9994 merge fix/golden-empty-tensor-and-int-path into master fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Created-by: zl_hw Commit-by: pingchuantang Merged-by: cann-robot Description: ## 描述 修正 11 个 foreach / scatter / lamb 算子 tests/assets/golden.py 的四类缺陷。这些缺陷不改变算子行为, 但会让 TTK cross_check 三方比对的结论失真,部分 dtype 的精度结论从未被真正验证过。 **1) 空张量崩溃(scatter 类)** var 或 updates 的 numel 为 0 时 golden 抛异常。算子侧对空张量按结构合法放行 (scatter_reduce_common_tiling.cpp 放行,scatter_reduce_common_simt.h 在 sliceSize == 0 时 Init/Process 为 no-op),golden 改为同口径短路返回。 **2) 整型参照失真** 三方腿把整型入参强转 fp32 再计算;fp32 尾数 24 位,>2^24 的 int32 静默丢低位 (2^30+100 → 2^30+128)。改为整型进整型出。 **3) 三方标杆与 golden 逐位相等 → 双标杆塌陷** golden 侧 _to_fp32/_t 无条件 astype("float32") 撤销了 TTK 的 Promote;三方侧 .to(torch.float32) 抬档后不回窄。两者叠加使 golden 与 third_party 逐位相同(实测 ttk-compare.log 3200/3200 行 |b-g| = 0),cross_check 三比值的分母被夹到精度标准 §4.5.1 的 err,无量纲的 mare/mere 仍小, 而有量纲的 **RMSE 比值随输出量级线性放大** → 假红(实测最高 **2348.6 / 166.1**)。 修复:golden 跟随 Promote **不做任何 cast**;三方按内核算法转写(见 4)。 **4) 三方 compose 与被测内核算法不对等** - **4.1 中间量精度**:内核是融合 DAG —— 窄类型入参先 Cast<U,T,0> 加宽到 U(=float),十几步中间量 全程留在 fp32,最后 Cast<T,U,1> / NarrowStore 窄回(依据:lamb_next_m_v_dag.h:44 "Compute in U (=float)";scatter_reduce_common_simt.h "ACC: float for fp16" + LoadWiden/NarrowStore)。 而 torch 只在**单个算子内部**用 opmath=float,**算子之间**每一步都把结果落回窄类型 (A100 实测:fp16 下 300*300 直接得 inf,而 (a*a)/a 真值 300 明明存得下)。 三方遂在窄类型上逐步溢出,产生 golden/NPU 都没有的 inf/nan。 修复:入口加宽 + 出口窄回,**两者必须成对** —— 缺加宽则溢出,缺窄回则回到缺陷 3 的塌陷。 - **4.2 运算序列**:compose 用 torch.addcmul 的融合 FMA(单次舍入),而内核是 Add(Mul(V,B2), Mul(G2,OmB2))(两次独立乘法 + 一次加法,三次舍入)。竞品凭空更准, ratio = NPU误差/竞品误差 把内核判成缺陷。修复为与内核逐字对应的分步拼接。 **不变量**:只改 third_party(设备侧竞品腿)与 golden 的 dtype 口径,**不改任何算子语义**; CPU golden 不含任何 cast,由 TTK 的 Promote 单独喂高精度输入,两条腿在 TTK 侧本就分离 (golden 收 Promote 后输入,third_party 收 original_input_arrays)。 **受影响算子(11 个)**:foreach_addcdiv_list、foreach_addcmul_list、scatter_div、scatter_max、 scatter_min、scatter_mul、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、 lamb_next_right、lamb_update_with_lr_v2 ## 关联的Issue 关联 Issue #5635 ## 测试 TTK GEIR 通路真机验证(Atlas A5 / ascend950,CANN 9.2.0,三方标杆 A100-PCIE-40GB + torch 2.13.0+cu126), **11 个算子 / 66 例全部 PASS,三比值零超标**。用例覆盖 fp16 / bf16 / fp32 / int8 / uint8 / int32 各档, 以及空张量、inf、near-zero 边界。 修复前后对照(同一用例集): | 算子 | 修复前典型失败 | 修复后 | |---|---|---| | foreach_addcdiv_list | bf16 rmse 比值 20.92、fp32 mare 比值 88.65 | 6/6 PASS | | foreach_addcmul_list | bf16 rmse 比值 166.10 | 6/6 PASS | | scatter_mul | fp32 rmse 比值 116.27 + NaN/Inf mismatch | 10/10 PASS | | scatter_min / scatter_div / scatter_max | — | 6/6、10/10、10/10 PASS | | lamb_next_m_v | rmse 塌陷 + NaN/Inf mismatch + fp32 mare 6.20 | 4/4 PASS | | lamb_next_right | fp16 rmse 比值 20.28 | 3/3 PASS | | lamb_next_m_v_with_decay | — | 4/4 PASS | | lamb_apply_weight_assign | fp16 rmse 比值 9.03 | 3/3 PASS | | lamb_update_with_lr_v2 | 测试方原用例(changwei issue #87) | 4/4 PASS | 跑批命令: bash python3 -m ttk geir -i <用例集>.csv --plugin <算子>/tests/assets/golden.py \ --device-whitelist=0 -d -b -c=false --seed 12345 ## 文档更新 无。本 PR 只改 tests/assets/golden.py,不涉及算子实现、原型、资料。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9994 | 8 小时前 | |
[BugFix] 修复cross_entropy_loss算子内存越界写问题 Co-authored-by: zhu-lei0614<zhulei113@huawei.com> # message auto-generated for no-merge-commit merge: !9849 merge master into master [BugFix] 修复cross_entropy_loss算子内存越界写问题 Created-by: zhu-lei0614 Commit-by: zhu-lei0614 Merged-by: cann-robot Description: ## 描述 cross_entropy_loss_full_load.h:162中InitBuffer初始化了32B的内存,在895行inputQueue_.AllocTensor出来的有效内存只有32B,但在896行的DataCopyPad一共写入了196B的数据,有160B的越界写入 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5257 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9849 | 8 小时前 | |
fix: sparse_tensor_dense_mat_mul Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9959 merge fix into master fix: sparse_tensor_dense_mat_mul Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 修复目标为 sparse_tensor_dense_mat_mul(稀疏张量与稠密矩阵相乘)Cmake配置问题。 ## 关联的Issue [#5638](https://gitcode.com/cann/ops-nn/issues/5638) ## 测试 算子执行成功 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9959 | 8 小时前 | |
aclnn_add_rms_norm_quant_v2头文件重复定义 Co-authored-by: liujie12345678<liujie81@huawei.com> # message auto-generated for no-merge-commit merge: !9499 merge master into master aclnn_add_rms_norm_quant_v2头文件重复定义 Created-by: liujie12345678 Commit-by: liujie12345678 Merged-by: cann-robot Description: ## 描述 norm/add_rms_norm_quant/op_host/op_api/aclnn_add_rms_norm_quant_v2.h norm/add_rms_norm_quant_v2/op_host/op_api/aclnn_add_rms_norm_quant_v2.h 头文件重复 需要删除:norm/add_rms_norm_quant/op_host/op_api/aclnn_add_rms_norm_quant_v2.h ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5333 ## 测试 通过 ## 文档更新 NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:删除重复头文件定义 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9499 | 7 小时前 | |
fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Co-authored-by: pingchuantang<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !9994 merge fix/golden-empty-tensor-and-int-path into master fix(assets): 修正 11 个算子 golden 的四类缺陷——空张量崩溃、整型参照失真、三方标杆塌陷与算法不对等 Created-by: zl_hw Commit-by: pingchuantang Merged-by: cann-robot Description: ## 描述 修正 11 个 foreach / scatter / lamb 算子 tests/assets/golden.py 的四类缺陷。这些缺陷不改变算子行为, 但会让 TTK cross_check 三方比对的结论失真,部分 dtype 的精度结论从未被真正验证过。 **1) 空张量崩溃(scatter 类)** var 或 updates 的 numel 为 0 时 golden 抛异常。算子侧对空张量按结构合法放行 (scatter_reduce_common_tiling.cpp 放行,scatter_reduce_common_simt.h 在 sliceSize == 0 时 Init/Process 为 no-op),golden 改为同口径短路返回。 **2) 整型参照失真** 三方腿把整型入参强转 fp32 再计算;fp32 尾数 24 位,>2^24 的 int32 静默丢低位 (2^30+100 → 2^30+128)。改为整型进整型出。 **3) 三方标杆与 golden 逐位相等 → 双标杆塌陷** golden 侧 _to_fp32/_t 无条件 astype("float32") 撤销了 TTK 的 Promote;三方侧 .to(torch.float32) 抬档后不回窄。两者叠加使 golden 与 third_party 逐位相同(实测 ttk-compare.log 3200/3200 行 |b-g| = 0),cross_check 三比值的分母被夹到精度标准 §4.5.1 的 err,无量纲的 mare/mere 仍小, 而有量纲的 **RMSE 比值随输出量级线性放大** → 假红(实测最高 **2348.6 / 166.1**)。 修复:golden 跟随 Promote **不做任何 cast**;三方按内核算法转写(见 4)。 **4) 三方 compose 与被测内核算法不对等** - **4.1 中间量精度**:内核是融合 DAG —— 窄类型入参先 Cast<U,T,0> 加宽到 U(=float),十几步中间量 全程留在 fp32,最后 Cast<T,U,1> / NarrowStore 窄回(依据:lamb_next_m_v_dag.h:44 "Compute in U (=float)";scatter_reduce_common_simt.h "ACC: float for fp16" + LoadWiden/NarrowStore)。 而 torch 只在**单个算子内部**用 opmath=float,**算子之间**每一步都把结果落回窄类型 (A100 实测:fp16 下 300*300 直接得 inf,而 (a*a)/a 真值 300 明明存得下)。 三方遂在窄类型上逐步溢出,产生 golden/NPU 都没有的 inf/nan。 修复:入口加宽 + 出口窄回,**两者必须成对** —— 缺加宽则溢出,缺窄回则回到缺陷 3 的塌陷。 - **4.2 运算序列**:compose 用 torch.addcmul 的融合 FMA(单次舍入),而内核是 Add(Mul(V,B2), Mul(G2,OmB2))(两次独立乘法 + 一次加法,三次舍入)。竞品凭空更准, ratio = NPU误差/竞品误差 把内核判成缺陷。修复为与内核逐字对应的分步拼接。 **不变量**:只改 third_party(设备侧竞品腿)与 golden 的 dtype 口径,**不改任何算子语义**; CPU golden 不含任何 cast,由 TTK 的 Promote 单独喂高精度输入,两条腿在 TTK 侧本就分离 (golden 收 Promote 后输入,third_party 收 original_input_arrays)。 **受影响算子(11 个)**:foreach_addcdiv_list、foreach_addcmul_list、scatter_div、scatter_max、 scatter_min、scatter_mul、lamb_apply_weight_assign、lamb_next_m_v、lamb_next_m_v_with_decay、 lamb_next_right、lamb_update_with_lr_v2 ## 关联的Issue 关联 Issue #5635 ## 测试 TTK GEIR 通路真机验证(Atlas A5 / ascend950,CANN 9.2.0,三方标杆 A100-PCIE-40GB + torch 2.13.0+cu126), **11 个算子 / 66 例全部 PASS,三比值零超标**。用例覆盖 fp16 / bf16 / fp32 / int8 / uint8 / int32 各档, 以及空张量、inf、near-zero 边界。 修复前后对照(同一用例集): | 算子 | 修复前典型失败 | 修复后 | |---|---|---| | foreach_addcdiv_list | bf16 rmse 比值 20.92、fp32 mare 比值 88.65 | 6/6 PASS | | foreach_addcmul_list | bf16 rmse 比值 166.10 | 6/6 PASS | | scatter_mul | fp32 rmse 比值 116.27 + NaN/Inf mismatch | 10/10 PASS | | scatter_min / scatter_div / scatter_max | — | 6/6、10/10、10/10 PASS | | lamb_next_m_v | rmse 塌陷 + NaN/Inf mismatch + fp32 mare 6.20 | 4/4 PASS | | lamb_next_right | fp16 rmse 比值 20.28 | 3/3 PASS | | lamb_next_m_v_with_decay | — | 4/4 PASS | | lamb_apply_weight_assign | fp16 rmse 比值 9.03 | 3/3 PASS | | lamb_update_with_lr_v2 | 测试方原用例(changwei issue #87) | 4/4 PASS | 跑批命令: bash python3 -m ttk geir -i <用例集>.csv --plugin <算子>/tests/assets/golden.py \ --device-whitelist=0 -d -b -c=false --seed 12345 ## 文档更新 无。本 PR 只改 tests/assets/golden.py,不涉及算子实现、原型、资料。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9994 | 8 小时前 | |
feat:nn add aclnn testcase and golden again. Co-authored-by: yanzhi2024<yanzhi@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master feat:nn add aclnn testcase and golden again. Created-by: yanzhi2024 Commit-by: yanzhi2024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 补充了一批算子的st用例 和 golden。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5587 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9634 | 23 小时前 | |
modify anti_mx_quant kernel ut Co-authored-by: pyq17870581669<pengyongqiang5@huawei.com> # message auto-generated for no-merge-commit merge: !9977 merge AntiMxQuant0907 into master modify anti_mx_quant kernel ut Created-by: pyq17870581669 Commit-by: pyq17870581669 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> kernel UT 零校验——输入未初始化、输出不校验,需要修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5610 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本地UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9977 | 21 小时前 | |
refactor: 移除 dynamic_rnn/dynamic_rnnv2 系列 TF 插件并修复 einsum TF 插件注册 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9925 merge revert-dynamic into master refactor: 移除 dynamic_rnn/dynamic_rnnv2 系列 TF 插件并修复 einsum TF 插件注册 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 ### 改动原因 dynamic_rnn / dynamic_rnnv2 的 TensorFlow 框架插件此前迁移到本仓后,会引发部分用例 ATC 失败, 本次先行下线处理:删除通过 REGISTER_CUSTOM_OP 注册 TF 源算子映射的 3 个 *_tf_plugin.cpp(共 -244 行)。 同时修复 batch_mat_mul_v3 下 einsum TF 插件的注册:Einsum 算子具有变长(DYNAMIC_INPUT)输入, 原 AutoMappingByOpFn 静态映射无法承载动态输入个数,改用动态映射接口 ParseParamsFn + AutoMappingFnDynamic 完成映射。 ### 改动方法 1. 删除 rnn/dynamic_rnn/framework/block_lstm_tf_plugin.cpp(-106): REGISTER_CUSTOM_OP("DynamicRNN").OriginOpType("BlockLSTM"),将 TF BlockLSTM 解析为 DynamicRNN(cell_type=BLOCKLSTM); ParseParamsRNN 透传 forget_bias/cell_clip/use_peephole;ParseOpToGraphRNN 按输入索引重建子图并映射输出。 2. 删除 rnn/dynamic_rnn/framework/dynamic_rnn_tf_plugin.cpp(-96): 注册 TF DynamicRNN/DynamicRnn → DynamicRNN;FusionParseParamsFn(DynamicRNNParserParams)基于融合子图节点解析: 检测 Transpose 节点推断 time_major=false,从 Const 节点(lstm_cell/add/y)解析 forget_bias,输入 1 format 置 HWCN。 3. 删除 rnn/dynamic_rnnv2/framework/dynamic_rnnv2_tf_plugin.cpp(-42): 注册 TF DynamicRnnV2/DynamicRnnv2WithoutSeqlength/DynamicRnnv2WithSeqlength → DynamicRNN/DynamicRNNV2,设置 is_misplaced=true。 4. 修改 matmul/batch_mat_mul_v3/framework/einsum_tf_plugin.cpp(+5 -3): - AutoMappingFnEinSum 入参由 const ge::Operator& 改为 const google::protobuf::Message*, 内部由 AutoMappingByOpFn(op_src, op) 改为 AutoMappingFnDynamic(op_src, op, value),value["in"]=("x","N"); - 注册由 .ParseParamsByOperatorFn(...) 改为 .ParseParamsFn(...)。 依据代码:CANN Einsum 算子原型为 DYNAMIC_INPUT(x) + REQUIRED_ATTR(equation) + REQUIRED_ATTR(N) (common/inc/op_graph/op_nn_proto_extend.h),映射表将 TF 源输入 "in" 映射到动态输入 "x" 并同步数量属性 "N", 与 index/concat_offset/framework/concat_offset_tf_plugin.cpp 处理动态输入/输出个数的用法一致。 构建侧无需改动:cmake/func.cmake 中 add_tf_plugin_sources() 通过 file(GLOB FRAMEWORK_DIR/*_tf_plugin.cpp) 自动收集编译,删除即不再参与构建;framework/CMakeLists.txt 仅调用 add_onnx_plugin_sources(), 保留的 ONNX 插件 npu_lstm_onnx_plugin.cpp、npu_lstm_cell_onnx_plugin.cpp 不受影响。 ## 关联的Issue - 关联 Issue:#5619 https://gitcode.com/cann/ops-nn/issues/5619 ## 测试 未新增测试用例。静态检查:仓库内无其他文件显式引用被删除的插件符号或文件名(git grep 验证), tf_plugin 源文件由 CMake glob 自动收集,删除后无构建残留引用。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复(einsum TF 插件注册修复) - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码清理(移除 dynamic_rnn 系列 TF 插件) ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9925 | 22 小时前 | |
统一配置ops-nn安装目录及文件权限 Co-authored-by: q00889097<qinhan10@huawei.com> # message auto-generated for no-merge-commit merge: !9836 merge master into master 统一配置ops-nn安装目录及文件权限 Created-by: qinhan123 Commit-by: q00889097 Merged-by: cann-robot Description: ## 描述 该 PR 旨在统一 ops-nn 安装目录及文件权限的配置方式:清理散落在安装脚本各处的 chmod 权限设置逻辑,改为在统一入口集中处理,并同步升级了 cann-cmake 依赖版本以配合权限体系的调整。核心改动集中在 scripts/package/ops_nn/scripts/install.sh 与 opp_install.sh:删除了对日志文件、scene.info、version.info、INSTALL_INFO_FILE、script 目录及 filelist.csv 的分散 chmod 操作 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5580 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9836 | 8 小时前 | |
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 | 4 天前 | |
support torch2.14 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9855 merge torch into master support torch2.14 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 torch_ext jit编译时,根据已有的torch选择不同的C++版本编译 ## 关联的Issue [#5543](https://gitcode.com/cann/ops-nn/issues/5543) ## 测试 在torch2.14.0环境编译构建,然后运行算子,成功 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9855 | 4 天前 | |
Fix misspelled executor parameter in aclnn API doxygen comment. Co-authored-by: void_ptr<baochaojun@huawei.com> # message auto-generated for no-merge-commit merge: !9690 merge pr/fix_issue_5350 into master Fix misspelled executor parameter in aclnn API doxygen comment. Created-by: void_ptr Commit-by: void_ptr Merged-by: cann-robot Description: ## 描述 修复多个两段式 aclnn 接口头文件注释参数名拼写错误 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5350 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9690 | 4 天前 | |
修改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 | 4 天前 | |
动态库解耦 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 | 14 天前 | |
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 | 8 小时前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
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 | 8 天前 | |
产品文档中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 | 7 天前 | |
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 | 1 个月前 | |
fix Third_Party_Open_Source_Software_List.yaml Co-authored-by: liuyufan0725<liuyufan9@huawei.com> # message auto-generated for no-merge-commit merge: !1879 merge fix_yaml into master fix Third_Party_Open_Source_Software_List.yaml Created-by: liuyufan0725 Commit-by: liuyufan0725 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新三方依赖清单Third_Party_Open_Source_Software_List.yaml 1、增加protobuf 2、将nlohmann/json修改为json ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1042](https://gitcode.com/cann/ops-nn/issues/1042) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了Third_Party_Open_Source_Software_List.yaml ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1879 | 6 个月前 | |
【描 述】 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 | 6 个月前 | |
将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9549 merge master into master 将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 主要修改内容: 1. nn仓完成和legacy common 动态库解耦后,卷积和matmul的不同版本 ophost ut 已经不能混合一起跑了。需要版本隔离 2. ascend950的ut全量编译 失败,需要修改 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/5425](https://gitcode.com/cann/ops-nn/issues/5425) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9549 | 7 天前 | |
fix matmul_emu_split_weight classify Co-authored-by: zhengyuhao3<zhengyuhao3@huawei.com> # message auto-generated for no-merge-commit merge: !9721 merge fix-mm_split_w-classify into master fix matmul_emu_split_weight classify Created-by: zhengyuhao3 Commit-by: zhengyuhao3 Merged-by: cann-robot Description: ## 描述 参考mat_mul_v3算子,修改matmul_emu_split_weight算子的classify_rule配置,区分arch35的扫描责任田 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 无代码改动,无需测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:classify配置调整 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9721 | 6 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 1 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 1 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 1 个月前 | |
upgrade version 9.2.0 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9513 merge master into master upgrade version 9.2.0 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 upgrade version 9.2.0 ## 关联的Issue [#5362](https://gitcode.com/cann/ops-nn/issues/5362) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 版本更新 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9513 | 6 天前 |
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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。