本项目是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 天前 | |
erfinv等3个算子新增ascend350平台支持 Co-authored-by: c00887544<chenshengze@huawei.com> # message auto-generated for no-merge-commit merge: !9912 merge 350 into master erfinv等3个算子新增ascend350平台支持 Created-by: chengzhi1120 Commit-by: c00887544 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> erfinv等3个算子新增ascend350平台支持 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5664 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9912 | 5 小时前 | |
修复--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 | 11 小时前 | |
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 | 12 小时前 | |
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 | 1 天前 | |
Conv3DTranspose算子tbe_tiling代码解耦适配静态库场景 Co-authored-by: cheng_gao<cheng.gao@huawei.com> # message auto-generated for no-merge-commit merge: !10039 merge tbe_move_20260902 into master Conv3DTranspose算子tbe_tiling代码解耦适配静态库场景 Created-by: cheng_gao Commit-by: cheng_gao Merged-by: cann-robot Description: ## 描述 Conv3DTranspose算子tbe_tiling代码解耦适配静态库场景 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5670 ## 测试 RDV基本功能 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10039 | 5 小时前 | |
refactor(pooling): 重命名MaxPoolGradFusionPass并统一MaxPoolV3Grad的NaN处理策略 Co-authored-by: qq_52056150<wangshuo179@huawei.com> # message auto-generated for no-merge-commit merge: !9988 merge refactor/max-pool-grad-fusion-pass-rename-and-nan-policy into master refactor(pooling): 重命名MaxPoolGradFusionPass并统一MaxPoolV3Grad的NaN处理策略 Created-by: qq_52056150 Commit-by: qq_52056150 Merged-by: cann-robot Description: 本 MR 包含两部分内容:融合规则重命名与配套资料、MaxPoolV3Grad 与 MaxPoolGrad 的 NaN 处理策略统一。两部分修改文件零重叠。 ## 一、重命名 MaxPoolGradFusionPass 并补充融合规则资料 将 MaxPoolV3GradFusionPass 统一重命名为 MaxPoolGradFusionPass。原名按被改写后的 **目的算子**命名,但该规则实际匹配的**源算子**是 MaxPoolGrad (kSourceOpTypes = {"MaxPoolGrad"}),与前向 MaxPool --> MaxPoolV3 的 MaxPoolFusionPass 命名方式保持一致。 纯 1:1 重命名,无逻辑变更: | 项 | 原 | 新 | | --- | --- | --- | | 实现文件 | max_pool_v3_grad_fusion_pass.cpp | max_pool_grad_fusion_pass.cpp | | 头文件 | max_pool_v3_grad_fusion_pass.h | max_pool_grad_fusion_pass.h | | 头文件宏 | OPS_MAX_POOL_V3_GRAD_FUSION_PASS_H | OPS_MAX_POOL_GRAD_FUSION_PASS_H | | 类名 | MaxPoolV3GradFusionPass | MaxPoolGradFusionPass | | 注册名 | MaxPoolV3GradFusionPass | MaxPoolGradFusionPass | | UT 文件 | test_max_pool_v3_grad_fusion_pass.cpp | test_max_pool_grad_fusion_pass.cpp | | UT 套件 | MaxPoolV3GradFusionPassTest | MaxPoolGradFusionPassTest | 新增 pooling/max_pool_v3_grad/docs/MaxPoolGradFusionPass.md 及配图,说明 MaxPoolGrad --> MaxPoolV3Grad 的融合规则、匹配条件与约束。op_graph 与 UT 的 CMakeLists 均以 glob 收集源文件,重命名不影响构建。 ## 二、统一 NaN 处理策略 MaxPoolV3Grad 此前通过模板参数选用 MAX_SELECT_NAN_IGNORE,与 MaxPoolGrad 的 MAX_SELECT_NAN_PROPAGATE 语义不一致。本次删除整套策略开关,两个算子统一采用 MaxPoolGrad 的 NaN 传播语义。 删除 MaxSelectPolicy 枚举及 MaxPoolGradSIMT 的 Policy 模板参数, CycleUpdate、MaxPoolNchw、MaxPoolNhwc 及各 asc_vf_call 同步去除该参数, 调用方 max_pool_grad.cpp 与 max_pool_v3_grad.cpp 不再传递策略。 关于最大值初值:原 PROPAGATE 分支用 NumericLimits<T>::NegativeInfinity(),该接口 仅支持 half/float/bfloat16。MaxPoolGrad 只有 3 种浮点 dtype 故可用,而 MaxPoolV3Grad 支持 9 种 dtype(含 int8/int16/int32/int64/uint8/uint16),直接复用会触发 static_assert 编译失败;NumericLimits<T>::Lowest() 同样不覆盖 int64,且对浮点 会在窗口同时含 -inf 与 Lowest() 时选错 argmax。因此改为复用本文件原 IGNORE 分支 已有的 maxIdx < 0 空累加器哨兵,无需任何初值常量: if ((*maxIdx < 0) || (val > *maxVal) || isnan(val)) 初值 maxVal = 0、maxIdx = -1 两行均取自原 IGNORE 分支,未引入新符号。 行为说明:NaN 恒胜出,窗口内按行优先扫描的最后一个 NaN 接收梯度;非 NaN 等值 first-wins。与原 MaxPoolGrad PROPAGATE 分支逐例等价(30 万组含 -inf/+inf/NaN/Lowest 的随机窗口 argmax 完全一致)。 同步更新 README 特殊值处理与确定性说明;golden 改为直接复现 kernel 的选择规则, 替换原先屏蔽 NaN 的编码实现。 ## 测试 本地验证通过,算子门槛用例全部验证通过,无功能影响,线上David冒烟和OBP冒烟均通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 新增MaxPoolGradFusionPass.md文档,更新README.md部分描述 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9988 | 7 小时前 | |
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 天前 | |
modified md files(for readability improvement) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !9817 merge master into master modified md files(for readability improvement) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 modified md files(for readability improvement) ## 关联的Issue na ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 md files ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9817 | 5 小时前 | |
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 天前 | |
修复aclnnTopKTopPSampleV2文档示例代码与参数表不一致问题 Co-authored-by: 陈赵旻熠<chenzhaominyi1@huawei.com> # message auto-generated for no-merge-commit merge: !10065 merge master into master 修复aclnnTopKTopPSampleV2文档示例代码与参数表不一致问题 Created-by: zerosaki_admin Commit-by: 陈赵旻熠 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复aclnnTopKTopPSampleV2文档示例代码与参数表不一致问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#5681](https://gitcode.com/cann/ops-nn/issues/5681) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了aclnnTopKTopPSampleV2文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10065 | 3 小时前 | |
docs_fix Co-authored-by: jisongyuan@h-partners.com<jisongyuan@h-partners.com> # message auto-generated for no-merge-commit merge: !10019 merge master into master docs_fix Created-by: ji-songyuan Commit-by: jisongyuan@h-partners.com Merged-by: cann-robot Description: ## 描述 本 PR 对 mse_loss_grad、fused_adamw 两个算子的接口文档(.md)进行勘误修复,共涉及 2 个文件,改动量 +3/-8。 主要解决以下文档与实现不一致的问题: - **代码块未闭合**:函数原型代码块缺少结束标记,导致渲染异常 - **错误码表格 rowspan 与实际行数不符**:表格合并单元格数大于实际数据行 - **过时约束说明**:表格中包含与当前实现不符的约束条件 ### 改动明细 | # | 文件 | 改动 | 说明 | |---|------|------|------| | 1 | loss/mse_loss_grad_v2/docs/aclnnMseLossBackward.md | +1/-0 | aclnnMseLossBackwardGetWorkspaceSize 函数原型代码块末尾补上 `` 结束标记,修复 markdown 渲染时代码块未闭合的问题 | | 2 | optim/fused_adamw/docs/aclnnFusedAdamw.md | +2/-8 | 错误码 ACLNN_ERR_PARAM_INVALID(161002) 表格的 rowspan 由 5 改为 3,与实际约束行数一致;删除两条过时约束说明("amsgrad 为 true 时 maxExpAvgSqsRef 和 paramsRef 的 shape 不一致"、"stateSteps 中每个 Tensor 的元素个数不为 1"),这两条约束已不在当前实现中校验 | ### 改动原则 - **纯文档修复,不改变任何代码逻辑**:所有改动均为 .md 文件内的文字描述,不涉及 .cpp/.h 源文件 - **对齐实现**:修正后的描述与当前算子实现、错误码逻辑、约束校验保持一致 - **聚焦最小改动**:仅修正文档与实现不一致项,不做额外的文档重构 ## 关联的Issue issue #5558 ## 测试 - 文档改动无需编译/功能测试,通过人工 review 验证描述与代码实现一致 - 改动不影响算子行为,CI 编译与功能测试结果不受影响 ## 文档更新 本 PR 即为文档更新,涉及以下文件: - loss/mse_loss_grad_v2/docs/aclnnMseLossBackward.md - optim/fused_adamw/docs/aclnnFusedAdamw.md` ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!10019 | 8 小时前 | |
Revert "WQBMM和QBMM 算子兼容性整改" Co-authored-by: renzetao<renzetao2@huawei.com> # message auto-generated for no-merge-commit merge: !10058 merge huitui into master Revert "WQBMM和QBMM 算子兼容性整改" Created-by: renzetao Commit-by: renzetao Merged-by: cann-robot Description: ## 描述 回退兼容性相关修改,直至 Ascend 支持相关内容 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> #5678 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10058 | 3 小时前 | |
[BugFix] 修复 aclnnFastLayerNorm 统计输出 shape 校验缺失 Co-authored-by: Chen_HaoWen<chenhaowen12@huawei.com> # message auto-generated for no-merge-commit merge: !9987 merge fix/issue-5614-fast-layer-norm-output-shape into master [BugFix] 修复 aclnnFastLayerNorm 统计输出 shape 校验缺失 Created-by: luowen203_gg123 Commit-by: Chen_HaoWen Merged-by: cann-robot Description: ## 描述 ### 问题与影响 aclnnFastLayerNormGetWorkspaceSize 对必选输出 out 已校验 shape,但对非空的 meanOutOptional 和 rstdOutOptional 只校验 dtype 与最大维数,未校验完整 shape。 设 input 的 shape 为 [A1,...,Ai,R1,...,Rj],normalizedShape 为 [R1,...,Rj],两个统计输出非空时都应严格为 [A1,...,Ai,1,...,1]。修复前传入 {3,3,3,3} 等非法 shape 时,接口仍返回 ACLNN_SUCCESS;正确行为应返回 ACLNN_ERR_PARAM_INVALID(161002)。错误的输出描述继续进入执行器后,还可能造成输出内存布局与算子语义不一致。 检查既有回归用例时还发现,test_aclnn_fast_layer_norm.cpp 中原有 24 条 FastLayerNorm 用例实际通过 OP_API_UT(aclnnLayerNorm, ...) 调用了普通 LayerNorm,因此无法覆盖 FastLayerNorm 参数校验逻辑。 ### 修改内容 1. 在 FastLayerNorm 参数 shape 校验阶段,根据 input 与 normalizedShape 构造统计输出期望 shape:保留非归一化轴尺寸,将归一化轴全部置为 1。 2. 对非空的 meanOutOptional、rstdOutOptional 分别执行完整 shape 相等校验,任一不匹配即返回 161002;单个统计输出为空时仍保持可选参数语义。 3. 将既有 24 条 UT 的目标接口改为 aclnnFastLayerNorm,使测试名称、测试数据与实际被测接口一致。 4. 新增 mean 与 rstd 各自单独非空且 shape 为 {3,3,3,3} 的负向用例,覆盖两个独立分支。 5. 同步补充 aclnnFastLayerNorm.md 的输出 shape 约束与 161002 错误码说明。 ### 兼容性与风险 本修改只在 workspace 查询阶段拒绝原本不符合接口约束的统计输出描述,不改变合法输入、空可选输出、计算图、tiling 或 kernel 实现。合法调用的执行路径与结果保持不变。 ## 关联的Issue Closes #5614 ## 测试 - 发布基线:cann/ops-nn@2659efc82ae2cba7ea3650c193fec4f35906d6aa - PR HEAD(唯一提交):c35efc955b837851dae8de9139c2a7e5cb9383ea - 提交整理:原代码修复与版权头修订已压缩为一个提交;压缩后 3 个变更文件与已验证版本逐字节一致 - 本地静态检查: - git diff origin/master..HEAD --check - clang-format --dry-run --Werror norm/layer_norm_v4/op_host/op_api/aclnn_fast_layer_norm.cpp norm/layer_norm_v4/tests/ut/op_host/op_api/test_aclnn_fast_layer_norm.cpp - UT 调用审计:26 个 OP_API_UT(aclnnFastLayerNorm, ...),0 个 OP_API_UT(aclnnLayerNorm, ...) - 仓库 pre-commit 全量检查:trailing-whitespace、end-of-file、merge-conflict、private-key、clang-format 18、codespell、OAT 全部通过 - A2(Ascend 910B,CANN 9.1.0-beta.1,aarch64)等价内容门禁(压缩前 HEAD 4b6e7b9087fb1aa2f063fd59d44c3d8d70d4737d): - 构建:bash build.sh -u --noexec --ops=layer_norm_v4 --soc=ascend910b -j8,返回码 0 - 回归:build/tests/ut/op_api/nn_op_api_ut --gtest_filter='l2_fast_layer_norm_test.*',26/26 通过,返回码 0 - ascend910B2_aclnnFastLayerNorm_error_mean_shape:通过 - ascend910B2_aclnnFastLayerNorm_error_rstd_shape:通过 - A2 真实 NPU 调用(Ascend 910B3,非 UT/stub,压缩前等价内容 HEAD): - 构建并隔离安装:bash build.sh --pkg --soc=ascend910b --ops=layer_norm_v4 --vendor_name=flnshape -j8,返回码 0 - ldd 与程序内 dlsym + dladdr 均确认接口实现来自本次安装的 flnshape_nn/op_api/lib/libcust_opapi.so;库 SHA256 为 2c88e6409c1138baa7b374b49129794e0f88446ae0fa8c1c557aeba856cabe71 - 合法场景 input=[2,1,1,32]、normalizedShape=[1,1,32]、mean/rstd=[2,1,1,1]:workspace 查询、第二段执行和流同步均返回 0,workspace 为 512 字节 - Device 输出回拷后对比 CPU 公式:out 最大绝对误差 1.1920929e-7,mean/rstd 最大绝对误差均为 0 - 仅 mean 非空且 shape 为 [3,3,3,3]:返回 161002;仅 rstd 非空且 shape 为 [3,3,3,3]:返回 161002 - GitCode CI:[PR-pipeline_ops-nn #8142](https://gitcode.com/CANN/ops-nn/actions/runs/0f60222f16244727924b7581c3729418) - 流水线 pull_request_id=9987,PR API 回读 HEAD 为唯一提交 c35efc955b837851dae8de9139c2a7e5cb9383ea - PreBuild、Compile、UT、PreSmoke、后处理五个阶段全部完成 - 68 个 job 全部通过,失败数 0 ## 文档更新 更新 norm/layer_norm_v4/docs/aclnnFastLayerNorm.md: - 明确 meanOutOptional 和 rstdOutOptional 即使另一统计输出为空,也必须满足 [A1,...,Ai,1,...,1]。 - 在 ACLNN_ERR_PARAM_INVALID(161002)中增加统计输出 shape 非法场景,并同步修正表格行数。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9987 | 5 小时前 | |
docs-fix Co-authored-by: jisongyuan@h-partners.com<jisongyuan@h-partners.com> # message auto-generated for no-merge-commit merge: !10031 merge master into master docs-fix Created-by: ji-songyuan Commit-by: jisongyuan@h-partners.com Merged-by: cann-robot Description: ## 描述 本 PR 对 fused_adamw 算子接口文档进行约束补充修复,涉及 1 个文件,改动量 +5/-5。 主要解决以下文档缺失约束说明的问题: - **空 Tensor 约束未声明**:5 个 TensorList 输入参数的描述中未明确"不支持空 Tensor"约束,读者无法从文档获知该限制,可能导致传入空 Tensor 触发未定义行为 ### 改动明细 | # | 文件 | 改动 | 说明 | |---|------|------|------| | 1 | optim/fused_adamw/docs/aclnnFusedAdamw.md | +5/-5 | 为 5 个 TensorList 参数(paramsRef、grads、expAvgsRef、expAvgSqsRef、maxExpAvgSqsRef)的描述补充"不支持空 Tensor"约束说明,使用 <ul><li> 列表形式包裹,与文档其他参数的约束说明风格保持一致 | ### 改动原则 - **纯文档修复,不改变任何代码逻辑**:所有改动均为 .md 文件内的文字描述,不涉及 .cpp/.h 源文件 - **对齐实现**:修正后的描述与当前算子实现中空 Tensor 校验逻辑一致 - **聚焦最小改动**:仅补充缺失约束说明,不做额外的文档重构 ## 关联的Issue issue #4847 ## 测试 - 文档改动无需编译/功能测试,通过人工 review 验证描述与代码实现一致 - 改动不影响算子行为,CI 编译与功能测试结果不受影响 ## 文档更新 本 PR 即为文档更新,涉及以下文件: - optim/fused_adamw/docs/aclnnFusedAdamw.md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!10031 | 6 小时前 | |
refactor(pooling): 重命名MaxPoolGradFusionPass并统一MaxPoolV3Grad的NaN处理策略 Co-authored-by: qq_52056150<wangshuo179@huawei.com> # message auto-generated for no-merge-commit merge: !9988 merge refactor/max-pool-grad-fusion-pass-rename-and-nan-policy into master refactor(pooling): 重命名MaxPoolGradFusionPass并统一MaxPoolV3Grad的NaN处理策略 Created-by: qq_52056150 Commit-by: qq_52056150 Merged-by: cann-robot Description: 本 MR 包含两部分内容:融合规则重命名与配套资料、MaxPoolV3Grad 与 MaxPoolGrad 的 NaN 处理策略统一。两部分修改文件零重叠。 ## 一、重命名 MaxPoolGradFusionPass 并补充融合规则资料 将 MaxPoolV3GradFusionPass 统一重命名为 MaxPoolGradFusionPass。原名按被改写后的 **目的算子**命名,但该规则实际匹配的**源算子**是 MaxPoolGrad (kSourceOpTypes = {"MaxPoolGrad"}),与前向 MaxPool --> MaxPoolV3 的 MaxPoolFusionPass 命名方式保持一致。 纯 1:1 重命名,无逻辑变更: | 项 | 原 | 新 | | --- | --- | --- | | 实现文件 | max_pool_v3_grad_fusion_pass.cpp | max_pool_grad_fusion_pass.cpp | | 头文件 | max_pool_v3_grad_fusion_pass.h | max_pool_grad_fusion_pass.h | | 头文件宏 | OPS_MAX_POOL_V3_GRAD_FUSION_PASS_H | OPS_MAX_POOL_GRAD_FUSION_PASS_H | | 类名 | MaxPoolV3GradFusionPass | MaxPoolGradFusionPass | | 注册名 | MaxPoolV3GradFusionPass | MaxPoolGradFusionPass | | UT 文件 | test_max_pool_v3_grad_fusion_pass.cpp | test_max_pool_grad_fusion_pass.cpp | | UT 套件 | MaxPoolV3GradFusionPassTest | MaxPoolGradFusionPassTest | 新增 pooling/max_pool_v3_grad/docs/MaxPoolGradFusionPass.md 及配图,说明 MaxPoolGrad --> MaxPoolV3Grad 的融合规则、匹配条件与约束。op_graph 与 UT 的 CMakeLists 均以 glob 收集源文件,重命名不影响构建。 ## 二、统一 NaN 处理策略 MaxPoolV3Grad 此前通过模板参数选用 MAX_SELECT_NAN_IGNORE,与 MaxPoolGrad 的 MAX_SELECT_NAN_PROPAGATE 语义不一致。本次删除整套策略开关,两个算子统一采用 MaxPoolGrad 的 NaN 传播语义。 删除 MaxSelectPolicy 枚举及 MaxPoolGradSIMT 的 Policy 模板参数, CycleUpdate、MaxPoolNchw、MaxPoolNhwc 及各 asc_vf_call 同步去除该参数, 调用方 max_pool_grad.cpp 与 max_pool_v3_grad.cpp 不再传递策略。 关于最大值初值:原 PROPAGATE 分支用 NumericLimits<T>::NegativeInfinity(),该接口 仅支持 half/float/bfloat16。MaxPoolGrad 只有 3 种浮点 dtype 故可用,而 MaxPoolV3Grad 支持 9 种 dtype(含 int8/int16/int32/int64/uint8/uint16),直接复用会触发 static_assert 编译失败;NumericLimits<T>::Lowest() 同样不覆盖 int64,且对浮点 会在窗口同时含 -inf 与 Lowest() 时选错 argmax。因此改为复用本文件原 IGNORE 分支 已有的 maxIdx < 0 空累加器哨兵,无需任何初值常量: if ((*maxIdx < 0) || (val > *maxVal) || isnan(val)) 初值 maxVal = 0、maxIdx = -1 两行均取自原 IGNORE 分支,未引入新符号。 行为说明:NaN 恒胜出,窗口内按行优先扫描的最后一个 NaN 接收梯度;非 NaN 等值 first-wins。与原 MaxPoolGrad PROPAGATE 分支逐例等价(30 万组含 -inf/+inf/NaN/Lowest 的随机窗口 argmax 完全一致)。 同步更新 README 特殊值处理与确定性说明;golden 改为直接复现 kernel 的选择规则, 替换原先屏蔽 NaN 的编码实现。 ## 测试 本地验证通过,算子门槛用例全部验证通过,无功能影响,线上David冒烟和OBP冒烟均通过 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 新增MaxPoolGradFusionPass.md文档,更新README.md部分描述 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9988 | 7 小时前 | |
修复codecheck问题 Co-authored-by: demoauguste<zhanghao418@huawei.com> # message auto-generated for no-merge-commit merge: !10024 merge master into master 修复codecheck问题 Created-by: demoauguste Commit-by: demoauguste Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 该 PR 主要针对 dequant_situ_quant 与 situ_mx_quant 算子的 host/tiling/kernel 代码修复 codecheck(静态检查)问题,核心手段包括:将魔法数字替换为具名 constexpr 常量或 sizeof 表达式、修正对外接口 aclnnSituMxQuantGetWorkspaceSize 的 const 修饰并移除冗余 const_cast、清理未使用的 include 与 using namespace、修正日志格式说明符等;此外按 PR 描述更新了 aclnnSituMxQuant.md 文档中的示例代码,并同步为示例/单测补充了 ACLNN_ERR_PARAM_INVALID 错误码的兜底定义。 主要改动 修正 aclnnSituMxQuantGetWorkspaceSize 接口签名: 在 aclnn_situ_mx_quant.h 与 aclnn_situ_mx_quant.cpp 中,将输出参数 yOut、yScaleOut 由 const aclTensor* 改为 aclTensor*,并删除实现中的 const_cast 转换,使接口 const 语义正确。 魔法数字替换为具名常量/枚举: dequant_situ_quant_def.cpp 将 beta/linear_beta 默认值提取为 DEFAULT_BETA、DEFAULT_LINEAR_BETA;situ_mx_quant_def.cpp 将 dst_type 的魔法值 40 替换为 ge::DT_FLOAT4_E2M1;dequant_situ_quant_tiling.cpp 用 sizeof(int8_t) 等及新增的 BYTES_DEQUANT_BIAS_PER_ELEM、BYTES_QUANT_SCALE_DYNAMIC、BYTES_QUANT_SCALE_STATIC 等常量替代硬编码字节数。 替换 kernel 与 tiling 中的硬编码数值: dequant_situ_quant.h 中 Duplicate、BinaryRepeatParams、WholeReduceMax 调用的 8 分别改为 BLOCK_ELEM、MASK_BLK_STRIDE;dequant_situ_quant_tiling.cpp 中 ubMinBlockLen、cacheLineLen 改为由 ALIGN_UINT_IN_CACHE_32B、PACK_UINT_IN_CACHE_512B 与 inputDTypeLen 推导。 清理头文件与类型/格式问题: 移除 dequant_situ_quant_tiling.h 中未使用的 using namespace Ops::NN::Optiling;、situ_mx_quant_tiling_arch35.h 中未使用的 <vector> include,并为 situ_mx_quant_tiling_data.h 补充 <cstdint>;situ_mx_quant_tiling_arch35.cpp 中 tilingKey 改为 uint64_t 且日志格式符由 %ld 修正为 %lu,TilingPrepare4SituMxQuant 未使用参数改为注释形式 /*context*/。 示例与文档同步: test_aclnn_situ_mx_quant.cpp 在公共头不可见 aclnn 错误码枚举时补充 ACLNN_ERR_PARAM_INVALID(错误码 161002)的兜底宏定义;按 PR 描述更新 aclnnSituMxQuant.md 示例代码以修复其问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5658 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了aclnnSituMxQuant.md,修复示例代码问题。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:修复代码codecheck问题 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10024 | 6 小时前 | |
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 | 1 天前 | |
erfinv等3个算子新增ascend350平台支持 Co-authored-by: c00887544<chenshengze@huawei.com> # message auto-generated for no-merge-commit merge: !9912 merge 350 into master erfinv等3个算子新增ascend350平台支持 Created-by: chengzhi1120 Commit-by: c00887544 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> erfinv等3个算子新增ascend350平台支持 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5664 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9912 | 5 小时前 | |
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 | 5 天前 | |
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 天前 | |
refactor(modulate): A5(arch35) Reg 加载存储接口升级为 LoadAlign/StoreAlign Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9990 merge upgrade-interface into master refactor(modulate): A5(arch35) Reg 加载存储接口升级为 LoadAlign/StoreAlign Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 vfusion 融合版 Modulate 算子 A5(arch35,Ascend 950)侧的 Reg 实现路径接口升级到新的 Reg 加载/存储接口与 UB 地址空间限定符。 ### 改动原因 vfusion/modulate 的 A5(arch35)Reg 路径代码中使用了旧的地址空间限定符 __local_mem__ 与旧的 Reg 加载/存储接口 Reg::DataCopy,需要升级为新接口以适配当前工具链与接口规范。 ### 改动方法 仅修改 vfusion/modulate/op_kernel/arch35/modulate_regbase_common.h,覆盖 ModulateBaseKernel 的 ComputeScaleShift / ComputeScale / ComputeShift 三个函数: - 将 x/scale/shift/y 的 LocalTensor::GetPhyAddr() 指针强转由 __local_mem__ T* 改为 __ubuf__ T*; - Reg 加载接口由 Reg::DataCopy<T, Reg::LoadDist::DIST_NORM> 改为 Reg::LoadAlign<T, Reg::LoadDist::DIST_NORM>; - Reg 存储接口由 Reg::DataCopy<T, Reg::StoreDist::DIST_NORM> 改为 Reg::StoreAlign<T, Reg::StoreDist::DIST_NORM>。 ## 关联的Issue - 关联 Issue #5649:https://gitcode.com/cann/ops-nn/issues/5649 ## 测试 本次改动未新增/修改测试文件,未涉及算子功能逻辑变更;依赖仓库既有 CI 流水线验证(PR 已附带 ci-pipeline-passed 标签)。 ## 文档更新 无,本次改动不涉及文档。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Reg 接口升级(__local_mem__→__ubuf__,Reg::DataCopy→Reg::LoadAlign/Reg::StoreAlign) ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9990 | 11 小时前 | |
修改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 | 13 小时前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 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 个月前 | |
修复--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 | 11 小时前 | |
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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。