本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
编译任务机器规格调整以及冒烟脚本调整 Co-authored-by: chenyajie<chenyajie6@huawei.com> # message auto-generated for no-merge-commit merge: !8787 merge master into master 编译任务机器规格调整以及冒烟脚本调整 Created-by: yajie_caroline Commit-by: chenyajie Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8787 | 1 个月前 | |
修复 swiglu_group_quant_grad、swiglu_group_quant hifp8 tiling 静态检查缺陷 Co-authored-by: shilulu<shilulu8@huawei.com> # message auto-generated for no-merge-commit merge: !9107 merge clean_code into master 修复 swiglu_group_quant_grad、swiglu_group_quant hifp8 tiling 静态检查缺陷 Created-by: shilulu Commit-by: shilulu Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复 swiglu_group_quant_grad、swiglu_group_quant hifp8 tiling 静态检查缺陷 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5078 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9107 | 1 个月前 | |
新增fusedmatmul可缩放的add场景 Co-authored-by: szhexin<shangzhexin@huawei.com> # message auto-generated for no-merge-commit merge: !8546 merge fmm_muon into master 新增fusedmatmul可缩放的add场景 Created-by: szhexin Commit-by: szhexin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->在 FusedMatMul 的 Add 融合场景中,当前接口仅支持将矩阵乘结果与 Add 输入直接相加,无法对两路输入分别进行缩放。为满足 alpha、beta 系数参与计算的需求,需要增加 torch.ops.cann_ops_nn.fused_matmul 接口,新增可选的 alpha 和 beta Tensor 输入 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->Issue #4440 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->冒烟通过,本地测试通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> docs/zh/menu_aclnn_api.md docs/zh/menu_torch_api.md docs/zh/op_api_list.md docs/zh/torch_api_list.md matmul/fused_mat_mul/docs/aclnnFusedMatmulV2.md matmul/fused_mat_mul/docs/torchapi_fused_matmul.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8546 | 1 个月前 | |
fix(matmul): 限制 fixed_shift_value 取值范围为 [34,43] Co-authored-by: KDC202<1664969415@qq.com> # message auto-generated for no-merge-commit merge: !8878 merge master into master fix(matmul): 限制 fixed_shift_value 取值范围为 [34,43] Created-by: KDC202 Commit-by: KDC202 Merged-by: cann-robot Description: ## 修改内容 对 Gemm 和 MatMulV3 的 ONNX plugin 中 fixed_shift_value 属性解析增加取值范围校验,限制为 [34, 43],超出范围的值将被忽略并使用默认值 42。 ## 涉及文件 - common/src/framework/gemm_onnx_plugin.cpp - matmul/mat_mul_v3/framework/matmul_onnx_plugin.cpp ## 改动说明 1. 新增常量 FIXED_SHIFT_VALUE_MAX = 43 和 FIXED_SHIFT_VALUE_MIN = 34。 2. gemm_onnx_plugin.cpp:解析 fixed_shift_value 时增加上下界检查。 3. matmul_onnx_plugin.cpp:同样增加上下界检查,并将硬编码的 42 替换为 FIXED_SHIFT_VALUE_DEFAULT 常量。 See merge request: cann/ops-nn!8878 | 1 个月前 | |
[CANNBot]新增NPUAllocFloatStatus算子 Co-authored-by: qq_52056150<24171214023@stu.xidian.edu.cn> # message auto-generated for no-merge-commit merge: !8782 merge add_npu_alloc_float_status into master [CANNBot]新增NPUAllocFloatStatus算子 Created-by: wkkk0528 Commit-by: qq_52056150 Merged-by: cann-robot Description: ## 描述 NPUAllocFloatStatus算子支持Ascend950 ### 算子功能 NPUAllocFloatStatus 用于分配并初始化浮点异常状态张量。算子接收一个可选的输入张量(仅用于形状推导),输出一个固定长度为8的float32张量,所有元素初始化为零值。该算子是 NPUFloatStatus 类算子的基础组件,通常与 NPUClearFloatStatus 配合使用,用于管理 NPU 浮点运算的异常状态。 ### 实现方式 - **架构**: Ascend950 (arch35) SIMT kernel - **Kernel 实现**: 单核 Scalar 模式,使用 SetValue 逐元素将零值写入 GM(绕过 UB,规避 DYN/BIN 首字节污染),完成后执行 DataCacheCleanAndInvalid 保证 GM 数据一致性 - **Tiling**: arch35 专用 Tiling,固定输出 8 个 float32 元素,单核无切分 - **Shape/Dtype 推导**: 输出 shape 固定为 [8],dtype 为 float32 - **REG_OP**: NPUAllocFloatStatus 原型注册,支持图模式调用 ## 关联的issue https://gitcode.com/cann/ops-math/issues/2677 ## 测试 ### TTK 测试结果 - 测试轮次: 第1轮 - 测试环境: Ascend950PR_957c (8 devices), CANN 9.2.0, TTK 3.0.0 - 第1轮结果: 编译错误(TQuePosition 标识符问题),已修复为 SetValue 直写 GM 方案 - 当前代码版本已通过本地 CI 编译验证 ### 本地 CI 预检结果 | 阶段 | 结果 | 说明 | |------|------|------| | Code Review | PASS | CR01-CR07 全部通过,2项WARN已修复(魔鬼数字提取为常量) | | Compile (single) | PASS | 单算子编译成功 | | Compile (A5) | PASS | A5 包编译成功 | | Package Verify | PASS | 2个.run包验证通过 | | CodeCheck pre-commit | PASS | clang-format/ruff/codespell/OAT 全部通过 | | UT ophost | PASS | op_host 单元测试通过 | | Example/Smoke | SKIPPED | 依赖 UT 全通过 | ### 交付件清单 - op_host: def.cpp, infershape.cpp, tiling_arch35.cpp, simplified_key.ini - op_kernel: arch35 kernel (npu_alloc_float_status.h, tiling_data.h, tiling_key.h, apt.cpp) - op_graph: proto.h, graph_infer.cpp - tests: golden.py, UT (op_api/op_host) - examples: aclnn + geir 示例 - docs: README.md ## 文档更新 - 新增 docs/zh/op_list.md 中 NPUAllocFloatStatus 条目 - 新增算子 README.md 和 aclnn API 文档 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述 ## AI/Agent 生成声明 代码来源: - [ ] 纯人工手写 - [ ] AI 辅助编写 - [x] AI 完全生成 人工审查:已完成 测试验证:已通过 合规检查:已完成 See merge request: cann/ops-nn!8782 | 1 个月前 | |
fix_clean code Co-authored-by: cann-robot<cann-robot@cann-robot> # message auto-generated for no-merge-commit merge: !9006 merge master into master fix_clean code Created-by: candy_cloud_fly Commit-by: cann-robot Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> clean code 清理 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9006 | 1 个月前 | |
新增fusedmatmul可缩放的add场景 Co-authored-by: szhexin<shangzhexin@huawei.com> # message auto-generated for no-merge-commit merge: !8546 merge fmm_muon into master 新增fusedmatmul可缩放的add场景 Created-by: szhexin Commit-by: szhexin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->在 FusedMatMul 的 Add 融合场景中,当前接口仅支持将矩阵乘结果与 Add 输入直接相加,无法对两路输入分别进行缩放。为满足 alpha、beta 系数参与计算的需求,需要增加 torch.ops.cann_ops_nn.fused_matmul 接口,新增可选的 alpha 和 beta Tensor 输入 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->Issue #4440 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->冒烟通过,本地测试通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> docs/zh/menu_aclnn_api.md docs/zh/menu_torch_api.md docs/zh/op_api_list.md docs/zh/torch_api_list.md matmul/fused_mat_mul/docs/aclnnFusedMatmulV2.md matmul/fused_mat_mul/docs/torchapi_fused_matmul.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8546 | 1 个月前 | |
fix TorchNPU Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !7243 merge master into master fix TorchNPU Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 ① torch_npu名称合一TorchNPU ②《acl API》手册更名修改 ③ link修改commerical为community ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/3951 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7243 | 2 个月前 | |
fix(nn): release resources on init failure in aclnn examples and docs Co-authored-by: wangjun03<wangjun01@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !8693 merge fix/init-failure-resource-release-nn into master fix(nn): release resources on init failure in aclnn examples and docs Created-by: wangjun03 Commit-by: wangjun03 Merged-by: cann-robot Description: ## 描述 修复 NN/Transformer 类算子调用示例在初始化失败场景下资源释放不完整的问题。 - aclrtSetDevice 失败时,在返回前调用 aclFinalize,释放已初始化的 ACL 资源。 - aclrtCreateStream 失败时,在返回前依次调用 aclrtResetDevice 和 aclFinalize,释放已设置的 Device 及 ACL 资源。 - 保留原有 CHECK_RET 写法和正常执行路径的资源释放顺序。 - 同步修改文档示例和对应的可执行示例源码,保证两处代码一致。 本次修改参考仓库内 PR #8603(aclnnSoftmax)的修复方式,仅补齐资源释放逻辑,不涉及算子 Tiling、Kernel 和计算功能变更。 ## 涉及算子 ### activation(4 个算子,8 个文件) - **SoftmaxV2**:aclnnSoftmax - **LogSoftmaxV2**:aclnnLogSoftmax - **SoftmaxGrad**:aclnnSoftmaxBackward - **LogSoftmaxGrad**:aclnnLogSoftmaxBackward ### norm(23 个算子,56 个文件) - **GroupNormGrad**:aclnnGroupNormBackward - **LpNormV2**:aclnnLinalgVectorNorm、aclnnNorm - **LayerNormV4**:aclnnLayerNorm、aclnnFastLayerNorm - **LayerNormGradV3**:aclnnLayerNormBackward - **AddLayerNorm**:aclnnAddLayerNorm - **AddLayerNormQuant**:aclnnAddLayerNormQuant - **AddRmsNorm**:aclnnAddRmsNorm - **AddRmsNormCast**:aclnnAddRmsNormCast - **AddRmsNormQuant**:aclnnAddRmsNormQuant - **AddRmsNormDynamicQuant**:aclnnAddRmsNormDynamicQuant、aclnnAddRmsNormDynamicQuantV2 - **AddRmsNormDynamicMxQuant**:aclnnAddRmsNormDynamicMxQuant - **RmsNormDynamicMxQuant**:aclnnRmsNormDynamicMxQuant - **RmsNormGradQuant**:aclnnRmsNormGradQuant - **RmsNormQuantV3**:aclnnRmsNormQuantV3 - **BatchNormV3**:aclnnBatchNorm、aclnnBatchNormElemt - **BatchNormGradV3**:aclnnBatchNormBackward、aclnnFastBatchNormBackward - **RmsNorm**:aclnnRmsNorm - **RmsNormGrad**:aclnnRmsNormGrad - **InplaceAddRmsNorm**:aclnnInplaceAddRmsNorm - **SyncBatchNormBackwardElemt**:aclnnBatchNormElemtBackward - **SyncBatchNormBackwardReduce**:aclnnBatchNormReduceBackward - **SyncBatchNormGatherStats**:aclnnSyncBatchNormGatherStats ### experimental 镜像(8 个文件) - experimental/activation: LogSoftmaxV2 - experimental/loss: SoftmaxGrad - experimental/norm: SyncBatchNormBackwardElemt、SyncBatchNormBackwardReduce、SyncBatchNormGatherStats ## 关联的 Issue Issue #4745 ## 测试 - git diff --check:通过。 - 本次仅修改调用示例的异常处理逻辑,未执行 NPU 运行测试。 ## 文档更新 - 更新上述算子 docs/ 目录下的 aclnn*.md 中的调用示例。 - 同步更新 examples/ 目录下的 test_aclnn_*.cpp 可执行示例源码。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8693 | 1 个月前 | |
fix(foreach): 修复11个SIMT算子arch35 tiling中dtype未拦截问题 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !8750 merge foreach into master fix(foreach): 修复11个SIMT算子arch35 tiling中dtype未拦截问题 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 修复11个Foreach算子arch35 tiling中dtype未拦截问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/5030 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8750 | 1 个月前 | |
fix schedule mode & embeddingHash Doc & groupNormSilu codecheck Co-authored-by: xieshengwei1024<xieshengwei3@huawei.com> # message auto-generated for no-merge-commit merge: !7076 merge master into master fix schedule mode & embeddingHash Doc & groupNormSilu codecheck Created-by: xieshengwei1024 Commit-by: xieshengwei1024 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1.系列SyncAll算子添加scheduleMode 2.embeddingHash算子文档错误修改 3.groupNormSilu修改超大圈复杂度问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联issue3858 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 已进行本地编译测试、ut测试及上板aclnn测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了embeddingHash系列算子的readme文档 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7076 | 2 个月前 | |
fix: 修复 TensorScatterUpdate AICPU 并行分支错误码被吞 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !9125 merge tensor_scatter_update_parallel_error into master fix: 修复 TensorScatterUpdate AICPU 并行分支错误码被吞 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 TensorScatterUpdate AICPU 算子的 UpdateOutput 在 info.updates_nums > kSplitSize(64*1024 个元素)时走 CpuKernelUtils::ParallelFor 多线程分支,该分支存在两个问题。 **1. 错误码必现丢失(功能缺陷)** worker 通过按引用捕获的 ret 上报状态,但随后 ret = CpuKernelUtils::ParallelFor(...) 用其返回值覆盖了 ret。CpuKernelUtils::ParallelFor 在 device/sharder 非空时无条件 return KERNEL_STATUS_OK,且其内部 barrier 保证所有 worker 先于该赋值完成,因此 worker 上报的 PARAM_INVALID / INNER_ERROR **100% 被覆盖为 OK**,与线程交错无关。 由此产生行为不一致:同一份越界 indices 输入,updates 元素数 <= 65536 走串行分支正确返回 PARAM_INVALID;> 65536 则静默返回 OK 并输出错误数据。 **2. 数据竞争** ret 为非原子 uint32_t,被多个 worker 并发读(:196/:201)写(:200)。同文件 InitializeOutput(:131) 以及 scatter_elements_aicpu.cpp:250、scatter_nd_max_aicpu.cpp:79 的同构实现均使用 std::atomic<uint32_t>,此处为遗漏。 ### 修改内容 - ret 改为 std::atomic<uint32_t> work_ret,与同仓同类实现对齐; - 循环内改用局部变量 one_ret 承接单次结果,仅在出错时写 work_ret; - ParallelFor 的返回值不再覆盖 work_ret,仅在派发失败时写入。 ### 顺带的性能收益 原实现每次迭代都写共享的 ret(:200 在内层循环内),所有核在同一 cache line 上反复搬运。改后热路径无共享写。x86 微基准(1M updates,模拟 inner_shape_nums==1): | 线程数 | 修改前 | 修改后 | |---|---|---| | 1 | 13.91 ms | 13.63 ms | | 2 | **21.74 ms** | 7.13 ms | | 4 | 20.24 ms | 3.77 ms | | 8 | 15.10 ms | 3.71 ms | 注意修改前 2 线程反而慢于 1 线程,即该并行分支原本基本没有加速比;修改后恢复线性扩展。该数据来自 x86 开发机,非 NPU 实测,仅用于说明量级与方向。 ## 关联的Issue 关联Issue #5084 ## 测试 **1. 单元测试(tests/ut/op_kernel_aicpu/test_tensor_scatter_update.cpp)** 此前 11 个用例全部为小张量,UpdateOutput 的并行分支零覆盖。本 PR 新增 2 例: - PARALLEL_BRANCH_SUCC:updates_nums = 70000 > 65536,合法 indices(逆序置换,让各 shard 写入交错),验证并行分支结果正确; - FAILED_OUT_OF_BOUNDS_INDEX_PARALLEL:同样规模下含单个越界 index,验证返回 KERNEL_STATUS_PARAM_INVALID。 回归对照(bash build.sh --opkernel_aicpu_test --ops=tensor_scatter_update): | | 修改前 | 修改后 | |---|---|---| | 原有 11 例 | 全通过 | 全通过 | | PARALLEL_BRANCH_SUCC | 通过 | 通过 | | FAILED_OUT_OF_BOUNDS_INDEX_PARALLEL | **失败**(ret=0,期望 1) | 通过 | 修改前 12 通过 1 失败,修改后 13/13 全通过。新增用例确实能捕获该缺陷。 **2. 真机验证(Ascend 910B3 + CANN 9.1.0)** 打自定义算子包(bash build.sh --pkg --soc=ascend910b --ops=tensor_scatter_update,确认 tensor_scatter_update_aicpu.cpp.o 编入 libnn_aicpu_kernels.so)后,用 graph example 对照: | 输入 | CANN 9.1.0 内置算子 | 装入本修复后 | |---|---|---| | 越界 index,updates_nums=70000(并行分支) | Run graph success,输出静默错 10 个元素 | Run graph failed(预期) | | 合法 index,updates_nums=70000(并行分支) | — | SELF_CHECK mismatch=0,success | | 仓内原版 updates_nums=10(串行分支) | success | success,数值不变 | 第一行即本 PR 的核心:错误现在能一路传到 session->RunGraph()。UT 覆盖 HostSharder,真机覆盖 DeviceSharder,两条 sharder 路径均已验证。 注:build.sh --run_example 单独执行时不编译 AICPU kernel,链接的是已安装的 opp 包,需打自定义包安装后才能验证算子改动。 **3. 门禁** pre-commit run 全部通过(trailing-whitespace / end-of-file / clang-format / codespell / OAT 等)。 ## 文档更新 无。本 PR 不改变算子对外接口、语义或约束,仅修复并行分支下错误码未上报的实现缺陷,行为向串行分支对齐。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9125 | 1 个月前 | |
fix:重构runtime2_util.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8841 merge rename_runtime2util into master fix:重构runtime2_util.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将 common/inc/op_api/runtime2_util.h 重命名为 common/inc/op_api/runtime2_util_nn.h,以避免与 CANN 仓内其他模块同名头文件产生命名冲突。 主要改动内容: 1. 重命名头文件 runtime2_util.h 为 runtime2_util_nn.h,并同步更新文件内的 doxygen 注释、头文件保护宏(CANN_OPS_BUILT_IN_OP_TILING_RUNTIME2_UTIL_NN_H_)以及文件末尾换行。 2. 批量更新所有引用该头文件的 26 个源文件(.h/.cpp)中的 #include "op_api/runtime2_util.h" 为 #include "op_api/runtime2_util_nn.h",涉及 activation、index、loss、norm 等 nn 算子目录。 3. 同步更新 common/inc/op_host/cache_runinfo.h 等公共头文件的引用,并更新版权年份至 2025-2026。 该改动为纯重命名重构,不涉及任何功能逻辑变更。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5037 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 由于改动仅涉及头文件重命名及引用路径更新,无功能逻辑变更,主要通过全量编译验证所有受影响算子可正确找到新头文件并编译通过。 - 编译范围覆盖 activation、index、loss、norm 等目录下受影响的 arch35 tiling 与 infershape 模块。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:重构代码 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8841 | 1 个月前 | |
修复baseN 32对齐, 3维bias, 拼写错误, 架构校验, 删除漏删tilingData, 增加使用前判空 Co-authored-by: pan_yao<panyao5@huawei.com> # message auto-generated for no-merge-commit merge: !8062 merge qmmaq_dev_0729_merge into master 修复baseN 32对齐, 3维bias, 拼写错误, 架构校验, 删除漏删tilingData, 增加使用前判空 Created-by: pan_yao Commit-by: pan_yao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Ascend950 上 QuantMatmulActivationQuant 的 AscendC 实现存在以下几个问题: 1. QuantMatmulActivationQuant中quant部分要求实际计算的块n方向大小为32对齐,目前只满足16对齐,导致精度问题; 2. bias 为 3 维时,aclnn 层未对 bias 调用 TensorContiguousProcess 进行连续化处理; 3. aclnn_quant_matmul_activation_quant_weight_nz.cpp中函数名CheckOptioanlAlg()拼写错误; 4. kernel 侧 quant_matmul_activation_quant_tiling_data.h 中存在与 quant_batch_matmul_v3_tiling_data.h 重复的结构体定义(QuantBatchMatmulV3BasicAPIDataParams、BasicAPICubeTiling、SlidingWindowParams、QuantMatmulActivationQuantMMTilingData),实际未被使用; 5. 架构校验缺失,CheckWeightNzParamsDAV3510 在非 DAV_3510 平台上静默返回 ACLNN_SUCCESS,未报错; 6. aclnn 层 SetTensorToNDFormat、TensorContiguousProcess、MxScaleContiguousProcess 返回值未检查,存在空指针解引用风险; 7. CheckDtype 中 FP8 dtype 校验运算符优先级错误,A || B && C 被解析为 A || (B && C),导致 yDtype 为 E4M3FN 时跳过 yScaleDtype 校验; 改动点: - matmul/quant_batch_matmul_v3/op_host/op_tiling/arch35/adaptive_sliding_window_tiling.h - GetTailSplitState、CalculateCurrentPerf、GetOuterNAxisTailCnt 声明改为 virtual,使派生类 override 生效 - matmul/quant_matmul_activation_quant/op_api/aclnn_quant_matmul_activation_quant_weight_nz.cpp - 修复 dtype 校验运算符优先级、函数名拼写、架构校验报错、返回值判空、新增 bias 连续化处理 - matmul/quant_matmul_activation_quant/op_host/op_tiling/quant_matmul_activation_quant_helper.cpp - 截断除法改 CeilDiv,对齐常量改 MX_BASEN_ALIGN(32),CanIncreaseTailSplit 替换为 GetTailSplitState,IsAligned32 加 const - matmul/quant_matmul_activation_quant/op_host/op_tiling/quant_matmul_activation_quant_helper.h - override 声明同步更新,移除 CanIncreaseTailSplit,IsAligned32 加 const 声明 - matmul/quant_matmul_activation_quant/op_host/op_tiling/quant_matmul_activation_quant_mx_tiling.cpp - 对齐校验截断除法改 CeilDiv - matmul/quant_matmul_activation_quant/op_kernel/arch35/quant_matmul_activation_quant_tiling_data.h - 删除未使用的重复结构体定义 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#4891](https://gitcode.com/cann/ops-nn/issues/4891) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 问题1和问题2对应的shape精度验证通过; - 在非 DAV_3510 平台上返回AclNN_Runtime_Error; - 对qbmm代码的改动没有影响qbmm本身的精度和性能; ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8062 | 1 个月前 | |
修复runtime2_util头文件引入问题 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !9115 merge master into master 修复runtime2_util头文件引入问题 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 修复由于runtime2_util.h头文件重命名,新增文件未感知的交叉合入问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9115 | 1 个月前 | |
BNInfer、InplaceApplyRMSProp 算子下一代支持 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !9049 merge master into master BNInfer、InplaceApplyRMSProp 算子下一代支持 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> BNInfer和 InplaceApplyRMSProp 算子下一代支持 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> BNInfer:UT/ST pass ; ops-test-kit 测试1000+ 用例pass InplaceApplyRMSProp:UT/ST pass ; ops-test-kit 测试1000+ 用例pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9049 | 1 个月前 | |
[CANNBot]新增MaxPool3DGradGrad长尾算子950实现 Co-authored-by: surezz<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !8377 merge MaxPool3DGradGrad into master [CANNBot]新增MaxPool3DGradGrad长尾算子950实现 Created-by: surezz Commit-by: surezz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增MaxPool3DGradGrad长尾算子950实现 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/5034 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> david冒烟、二级冒烟,375条用例三方精度通过,平均性能和bad_case性能均达标 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增MaxPool3DGradGrad长尾算子README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8377 | 1 个月前 | |
fix(dequant_swiglu_quant): fix dynamic scale garbage when UbFactorDimy < 64 and Brcb overwriting scaleOut Co-authored-by: zhanglei<george.zhanglei@huawei.com> # message auto-generated for no-merge-commit merge: !9119 merge master into master fix(dequant_swiglu_quant): fix dynamic scale garbage when UbFactorDimy < 64 and Brcb overwriting scaleOut Created-by: east_yang Commit-by: zhanglei Merged-by: cann-robot Description: ## 描述 修复 dequant_swiglu_quant DSK 路径(groupIndexOptional + dynamic)两个精度 bug: 1. WholeReduceMax mask 写死 64:UbFactorDimy < 64(如 H=64)时第二阶段归约跨行读取并越界,行 max 读出 INT_MAX 级垃圾值。修复为 mask = min(UbFactorDimy, 64)。 2. Brcb 广播覆写 scaleOut:Brcb(outLocal, scaleOut, blockCount) 写 outLocal[0, blockCount*64) floats,与 scaleOut 所在偏移 UbSingleOutSize_/4 重叠(如 UbFactorDimx=1, outDimy=160 时 40 < 64),CopyOut 写出被破坏的 scale。修复为用单条 BroadCast 指令直连广播(与官方 dynamic_quant 一致),不再借道 outLocal。 ## 关联的Issue #5083(前置 #5063 已由 9176e2d85 合入) ## 测试 Atlas A2 (910b) ATK 精度验证: - x[15,64] 9 组(UbFactorDimy=32):Failed → Pass - x[1,320] 9 组(scaleOut 偏移 40 < 64):Failed → Pass - 回归 H=192 / 2560 / 6144 用例:Pass ## 文档更新 无 ## 类型标签 See merge request: cann/ops-nn!9119 | 1 个月前 | |
feat: rename op_api_def.h to op_api_def_nn.h Co-authored-by: chenqianyu<chenqianyu1@h-partners.com> # message auto-generated for no-merge-commit merge: !8360 merge rename_opapidef into master feat: rename op_api_def.h to op_api_def_nn.h Created-by: FishPotatoChen Commit-by: chenqianyu Merged-by: cann-robot Description: ## 描述 本次改动将 op_api/op_api_def.h 重命名为 op_api/op_api_def_nn.h,并同步更新了所有引用该头文件的源文件与测试文件中的 #include 路径,共涉及 161 个文件。 改动原因:将 op_api 定义头文件统一命名为 op_api_def_nn.h,以更好地体现其所属模块(NN 算子)的语义,便于后续与其他模块的头文件区分管理。 此外,在提交过程中发现 4 个文件(aclnn_foreach_addcmul_scalar_v2.cpp、aclnn_max_unpool3d.cpp、test_aclnn_addmv.cpp、test_aclnn_fast_batchnorm_backward.cpp)的许可证头使用了非标准的旧格式,导致 OAT 合规检查失败。本次一并将其更新为标准的 CANN 开源许可证头格式,确保通过合规校验。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4954 ## 测试 - 通过 pre-commit 钩子校验:trailing whitespace、end-of-file-fixer、clang-format 均通过 - 通过 OAT 合规检查(161 个文件全部通过) - 本次为头文件重命名改动,不涉及逻辑变更,编译依赖关系保持不变 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:头文件重命名与许可证头修复 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8360 | 1 个月前 | |
kernel编译配置项优化 Co-authored-by: XianyongWang<aaronhkw@163.com> # message auto-generated for no-merge-commit merge: !8811 merge feat/conv-kernel-compile-opt into master kernel编译配置项优化 Created-by: XianyongWang Commit-by: XianyongWang Merged-by: cann-robot Description: ## 描述 在算子的kernel目录下,增加对应的makefile文件,利用add_kernel_sources函数,参考原本的若干个配置文件设置编译参数,同时删除原配置文件/配置项,实现算子编译配置就近管理,符合ops-nn仓的统一规范。 ## 关联的Issue 关联Issue [#4857](https://gitcode.com/cann/ops-nn/issues/4857) ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8811 | 1 个月前 | |
新增fusedmatmul可缩放的add场景 Co-authored-by: szhexin<shangzhexin@huawei.com> # message auto-generated for no-merge-commit merge: !8546 merge fmm_muon into master 新增fusedmatmul可缩放的add场景 Created-by: szhexin Commit-by: szhexin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->在 FusedMatMul 的 Add 融合场景中,当前接口仅支持将矩阵乘结果与 Add 输入直接相加,无法对两路输入分别进行缩放。为满足 alpha、beta 系数参与计算的需求,需要增加 torch.ops.cann_ops_nn.fused_matmul 接口,新增可选的 alpha 和 beta Tensor 输入 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->Issue #4440 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->冒烟通过,本地测试通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> docs/zh/menu_aclnn_api.md docs/zh/menu_torch_api.md docs/zh/op_api_list.md docs/zh/torch_api_list.md matmul/fused_mat_mul/docs/aclnnFusedMatmulV2.md matmul/fused_mat_mul/docs/torchapi_fused_matmul.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8546 | 1 个月前 | |
fix: packedDim stride Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !8865 merge torch into master fix: packedDim stride Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 该 PR 修复了 CANN 算子中 4-bit(FP4)dtype 张量在显式指定打包维度(packedDim)时的 stride 计算问题。改动在 torch_extension/cann_ops_nn/common/aclnn_common.h 中为 TensorWrapper 增加 packedDim 字段,并将其通过 PrepareTensorMeta 透传到 CollectB4ShapeInfo:当显式指定打包维度时,对打包维度的 shape 乘以 FP4_IN_INT8、对非打包维度的 stride 乘以 FP4_IN_INT8,并补充了维度合法性校验;未指定时则沿用原有的按维数处理逻辑。 主要改动 TensorWrapper 新增 packedDim 字段:在结构体中增加 int64_t packedDim = -1,默认 -1 表示未显式指定打包维度,便于上层按需传入。 CollectB4ShapeInfo 增加 packedDim 参数及校验:新增 packedDim = -1 形参;当 nDim == 0 时通过 TORCH_CHECK 报错拒绝空维张量,当 packedDim >= 0 时校验其未越界,并将 wrapperShape[packedDim] 乘以 FP4_IN_INT8、将非打包维度的 wrapperStride[i] 乘以 FP4_IN_INT8 后提前返回。 PrepareTensorMeta 增加 packedDim 参数并透传:签名新增 int64_t packedDim = -1,并在 4-bit dtype 分支中将该参数传给 CollectB4ShapeInfo,使元数据构造能感知显式打包维度。 ConvertType 打通传递链路:调用 PrepareTensorMeta 时传入 tensor_wrapper.packedDim,使 TensorWrapper 中指定的打包维度最终作用于 aclCreateTensor 使用的 shape/stride 元数据。 ## 关联的Issue [#4860](https://gitcode.com/cann/ops-nn/issues/4860) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8865 | 1 个月前 | |
modified md files (aclnnMultiScaleDeformableAttentionGrad.md and aclnnLinalgVectorNorm.md) Co-authored-by: duhuiping<duhuiping@h-partners.com> # message auto-generated for no-merge-commit merge: !8458 merge master into master modified md files (aclnnMultiScaleDeformableAttentionGrad.md and aclnnLinalgVectorNorm.md) Created-by: gitee-duhuiping Commit-by: duhuiping Merged-by: cann-robot Description: ## 描述 - aclnnMultiScaleDeformableAttentionGrad supports A5, updates aclnnMultiScaleDeformableAttentionGrad, the corresponding README.md for the operator, and op_api_list.md. - Updates the return codes in aclnnLinalgVectorNorm.md. ## 关联的Issue [#4474](https://gitcode.com/cann/ops-nn/issues/4474) ## 测试 Only involves updating the MD document description, does not involve testing. ## 文档更新 docs/zh/op_api_list.md vfusion/multi_scale_deformable_attention_grad/README.md vfusion/multi_scale_deformable_attention_grad/docs/aclnnMultiScaleDeformableAttentionGrad.md norm/lp_norm_v2/docs/aclnnLinalgVectorNorm.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8458 | 1 个月前 | |
修改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 个月前 | |
index kernel ut Co-authored-by: chenqi317<chenqi317@huawei.com> # message auto-generated for no-merge-commit merge: !5501 merge master into master index kernel ut Created-by: chenqi317 Commit-by: chenqi317 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Kernel UT 中存在大量分散的测试数据准备代码,使用 system() 调用执行 shell 命令: 重复样板代码多:至少 131 个文件包含 system() 调用 依赖 GNU/Linux 工具:cp、chmod、rm、get_current_dir_name(非跨平台) 错误定位困难:system() 返回码粗糙,无法区分路径错误、权限问题、Python缺失等 维护成本高:同一套逻辑散落在大量算子测试中 修改方案 统一测试数据生命周期管理:拷贝、清理、生成、比对 改善报错体验:使用项目标准日志宏 OP_LOGI/OP_LOGE,区分路径错误、脚本执行失败等 降低贡献门槛:开发者只需声明数据目录和参数 本次修改对index 目录下的部分算子 迁移过程中 代码格式做整改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/2337 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5501 | 3 个月前 | |
aclnnQuantMatmulWeightNz 补充WeightQuantPreProcess接口aclnn资料 Co-authored-by: renzetao<renzetao2@huawei.com> # message auto-generated for no-merge-commit merge: !8866 merge data_revise into master aclnnQuantMatmulWeightNz 补充WeightQuantPreProcess接口aclnn资料 Created-by: renzetao Commit-by: renzetao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> aclnnQuantMatmulWeightNz补充weightQuantPreProcess的调用example ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#4898](https://gitcode.com/cann/ops-nn/issues/4898) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> bash build.sh --run_example 测试通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> aclnnQuantMatmulWeightNz.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!8866 | 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 个月前 | |
refactor: init_cann_project() 移至 dependencies.cmake 之后调用 Co-authored-by: zhaoyingdong<zhaoyingdong@huawei.com> # message auto-generated for no-merge-commit merge: !8702 merge master into master refactor: init_cann_project() 移至 dependencies.cmake 之后调用 Created-by: zhaoyingdong Commit-by: zhaoyingdong Merged-by: cann-robot Description: ## 描述 refactor: init_cann_project() 移至 dependencies.cmake 之后调用 add_cann_third_party()依赖init_cann_project() 中的变量,所以需要放到add_cann_third_party()前面 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x ] AI辅助编写 See merge request: cann/ops-nn!8702 | 1 个月前 | |
产品文档中png文件改为英文名 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !8300 merge master into master 产品文档中png文件改为英文名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 产品文档中的png图片名由中文改为英文 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#4260](https://gitcode.com/cann/ops-nn/issues/4260) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> png和相关的link md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8300 | 1 个月前 | |
init | 11 个月前 | |
add hard_sigmoid for ascend950 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !7874 merge master into master add hard_sigmoid for ascend950 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> add hard_sigmoid for ascend950 hard_sigmoid适配950 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> UT/ST pass ; ops-test-kit 测试900+ 用例pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> activation/hard_sigmoid/README.md activation/hard_sigmoid/docs/aclnnHardsigmoid&aclnnInplaceHardsigmoid.md docs/zh/op_api_list.md docs/zh/op_api_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7874 | 2 个月前 | |
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 | 7 个月前 | |
【描 述】 eigen update to 5.0.0 Co-authored-by: j00427146<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !1152 merge master into master 【描 述】 eigen update to 5.0.0 Created-by: jialimin1 Commit-by: j00427146 Merged-by: cann-robot Description: ## 描述 现开源软件eigen 3.4.0 EOM,Eigen 从3.4.0版本升级到5.0.0,解决生命周期问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-nn/issues/975 https://gitcode.com/cann/ops-nn/issues/389 ## 测试   ## 文档更新 SECURITY.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:Update Eigen to 5.0.0 See merge request: cann/ops-nn!1152 | 7 个月前 | |
修复matmul ut 编译失败的问题 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !8409 merge master into master 修复matmul ut 编译失败的问题 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 1. 删除冗余的测试代码 2. build.sh build ut 增加-k,即使ut失败,任可以继续构建,最后报错 ## 关联的Issue [#4734](https://gitcode.com/cann/ops-nn/issues/4734) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8409 | 1 个月前 | |
细化index下缺失的classify rule Co-authored-by: yue-ma<mayue54@huawei.com> # message auto-generated for no-merge-commit merge: !7059 merge master into master 细化index下缺失的classify rule Created-by: yue-ma Commit-by: yue-ma Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 细化index下缺失的classify rule ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/4233 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!7059 | 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 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 2 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 2 个月前 | |
Remove the dependency asc-tool Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !5220 merge eng into master Remove the dependency asc-tool Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 Remove the dependency asc-tool ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 工程编译验证 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5220 | 4 个月前 |
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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。