本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
close 950 st Co-authored-by: he_kan<hekan4@huawei.com> # message auto-generated for no-merge-commit merge: !11432 merge ci into master close 950 st Created-by: he_kan Commit-by: he_kan 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!11432 | 21 天前 | |
fix(selu_grad): 修复example及文档头文件包含路径错误,并删除重复的原型 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !11066 merge fix_selu_grad_example into master fix(selu_grad): 修复example及文档头文件包含路径错误,并删除重复的原型 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 修复 selu_grad 算子 example 及文档中的头文件包含路径错误。头文件 aclnn_selu_backward.h 实际位于 aclnnop/ 目录下,example 代码与文档示例中缺少该目录前缀,导致用户参照编译时报"找不到头文件"错误。 变更内容: - activation/selu_grad/examples/arch35/test_aclnn_selu_grad.cpp:#include "aclnn_selu_backward.h" 修改为 #include "aclnnop/aclnn_selu_backward.h" - activation/selu_grad/docs/aclnnSeluBackward.md:同步修正示例代码中的头文件包含路径 与 activation/selu_grad/examples/test_aclnn_selu_grad.cpp(已使用正确路径)保持一致。 ## 关联的Issue 关联Issue #6145:[Bug-Report|缺陷反馈]: selu_grad算子example及文档中头文件包含路径错误(https://gitcode.com/cann/ops-nn/issues/6145) ## 测试 仅修正头文件包含路径字符串,与仓库内其他算子 example 的标准写法一致(如 activation/selu_grad/examples/test_aclnn_selu_grad.cpp),无逻辑变更。 ## 文档更新 更新 activation/selu_grad/docs/aclnnSeluBackward.md 示例代码中的头文件包含路径。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11066 | 13 天前 | |
feat: add qbmm swiglu mx quant fusion Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !11230 merge master into master feat: add qbmm swiglu mx quant fusion Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 为 quant_matmul_activation_quant 算子增加 SwiGLU 与 MX 动态量化融合能力,并重构相关校验、推导和 Tiling 流程。 - 支持 SwiGLU:Matmul + Bias 后按 [gate | linear] 切分,计算 SiLU(gate) * linear,输出维度为输入的 1/2。 - 支持 Ascend 950、FP8 E4M3/E5M2、FP4 E2M1,以及 ND/WeightNZ 输入布局。 - 根据 scaleAlg 支持 OCP/BLAS 量化路径,并补充 FP4 对应量化算法。 - 新增 batch/without-batch kernel 路径,完善 WeightNZ、转置、MX Scale Shape 等参数校验。 - 保留并整理 GELU 现有路径,更新 Torch/ACLNN 接口、InferShape、Tiling、文档、示例和测试用例。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5902 ## 测试 - 已补充和更新 op_api、op_host、op_kernel UT 及 ST CSV。 - 已补充 GELU/SwiGLU、ND/WeightNZ、FP8/FP4、batch/without-batch 等主要场景用例。 ## 文档更新 - 已更新算子 README、接口说明、示例及测试相关文档。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11230 | 22 天前 | |
fix(selu_grad): 修复example及文档头文件包含路径错误,并删除重复的原型 Co-authored-by: lianjieyu<yulianjie@huawei.com> # message auto-generated for no-merge-commit merge: !11066 merge fix_selu_grad_example into master fix(selu_grad): 修复example及文档头文件包含路径错误,并删除重复的原型 Created-by: lianjieyu Commit-by: lianjieyu Merged-by: cann-robot Description: ## 描述 修复 selu_grad 算子 example 及文档中的头文件包含路径错误。头文件 aclnn_selu_backward.h 实际位于 aclnnop/ 目录下,example 代码与文档示例中缺少该目录前缀,导致用户参照编译时报"找不到头文件"错误。 变更内容: - activation/selu_grad/examples/arch35/test_aclnn_selu_grad.cpp:#include "aclnn_selu_backward.h" 修改为 #include "aclnnop/aclnn_selu_backward.h" - activation/selu_grad/docs/aclnnSeluBackward.md:同步修正示例代码中的头文件包含路径 与 activation/selu_grad/examples/test_aclnn_selu_grad.cpp(已使用正确路径)保持一致。 ## 关联的Issue 关联Issue #6145:[Bug-Report|缺陷反馈]: selu_grad算子example及文档中头文件包含路径错误(https://gitcode.com/cann/ops-nn/issues/6145) ## 测试 仅修正头文件包含路径字符串,与仓库内其他算子 example 的标准写法一致(如 activation/selu_grad/examples/test_aclnn_selu_grad.cpp),无逻辑变更。 ## 文档更新 更新 activation/selu_grad/docs/aclnnSeluBackward.md 示例代码中的头文件包含路径。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11066 | 13 天前 | |
aidd问题修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11509 merge master into master aidd问题修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 aidd问题修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 文档更新不涉及测试 ## 文档更新 修改md文档在扫描出来的aidd问题 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11509 | 13 天前 | |
aidd问题修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11509 merge master into master aidd问题修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 aidd问题修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 文档更新不涉及测试 ## 文档更新 修改md文档在扫描出来的aidd问题 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11509 | 13 天前 | |
Conv:开源Conv2D的算子原型、算子信息库和InferShape Co-authored-by: weijian317<gaoweijian1@huawei.com> # message auto-generated for no-merge-commit merge: !10468 merge iter into master Conv:开源Conv2D的算子原型、算子信息库和InferShape Created-by: weijian317 Commit-by: weijian317 Merged-by: cann-robot Description: ## 描述 开源Conv2D的算子原型、算子信息库和InferShape,并补充算子资料和图模式example <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6314](https://gitcode.com/cann/ops-nn/issues/6314) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本次改动涉及的场景均已覆盖验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10468 | 21 天前 | |
修改产品名 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11348 merge master into master 修改产品名 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 修改产品名 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 仅涉及md文档更新,不涉及测试 ## 文档更新 修改所有md文件的产品名称 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11348 | 22 天前 | |
aidd问题修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11509 merge master into master aidd问题修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 aidd问题修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 文档更新不涉及测试 ## 文档更新 修改md文档在扫描出来的aidd问题 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11509 | 13 天前 | |
fix: 修复 MSELossV2/MultilabelMarginLoss arch35 规约精度, 规范化 4 算子 golden Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !11252 merge fix/arch35-4ops-round2 into master fix: 修复 MSELossV2/MultilabelMarginLoss arch35 规约精度, 规范化 4 算子 golden Created-by: zl_hw Commit-by: tangpingchuan 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!11252 | 23 天前 | |
fix: Remove unnecessary workspace for init_embedding_hash_table/sigmoid_cross_entropy_with_logits_v2/group_norm/group_norm_silu Co-authored-by: yifangao<gaoyifan20@huawei.com> # message auto-generated for no-merge-commit merge: !9867 merge workspace-remove-3 into master fix: Remove unnecessary workspace for init_embedding_hash_table/sigmoid_cross_entropy_with_logits_v2/group_norm/group_norm_silu Created-by: yifangao Commit-by: yifangao Merged-by: cann-robot Description: ## 描述 Ascend 950(arch35)路径下, init_embedding_hash_table、sigmoid_cross_entropy_with_logits_v2、group_norm 和 group_norm_silu 算子未实际使用 workspace,但原实现仍申请或保留了 workspace 相关处理。 本次修改: - 将上述 4 个算子的 workspace 大小设置为 0,避免不必要的内存申请。 - 删除 group_norm 和 group_norm_silu kernel 中未使用的 workspace 判空、用户 workspace 获取及参数传递。 - 统一 workspace 常量命名,并补充相关文件末尾换行。 - 修改仅作用于 Ascend 950(arch35)实现,不影响其他芯片路径。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6122 ## 测试 David冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260928_144411817 obp冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260929_083012442 ## 文档更新 无文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9867 | 22 天前 | |
fix(index_check): re-land red-line and admission fixes with minimal scope (without 950 binary json) Co-authored-by: Bright0313<liwenbo84@huawei.com> # message auto-generated for no-merge-commit merge: !11381 merge reland/indexcheck-fixes-v2 into master fix(index_check): re-land red-line and admission fixes with minimal scope (without 950 binary json) Created-by: Bright0313 Commit-by: Bright0313 Merged-by: cann-robot Description: ## 描述 按**最小必要范围**重新提交 PR #10445 的缺陷修复(8 文件,+137/-90)。每处修改均可追溯至有编号的检视(ascendc-code-review)或准入扫描(ops-admission-scan)发现;**不含** config/ascend950/index_check_binary.json,并按导师对兼容性交付算子的整改指引撤除了无 finding 支撑的改动。 ## 逐文件改动与目的 | 文件 | 改动 | 解决的问题(发现编号/依据) | |---|---|---| | op_kernel/index_check.h | ① 4 处 ascendc_assert→Trap() ② bounds 经 DataCopyPad 搬入 UB 后 LocalTensor 读取(新增 boundsTableBuf_,构造顺序 InitParams→InitBuffers→InitBounds)③ TensorList 地址表改裸指针模式 ④ int64 实例 5 个向量队列 if constexpr 条件化(不分配) | ① **编码红线 P1(检视 FAIL 80%)**:ascendc_assert 在 NDEBUG 下展开为空,Release 编译越界检测退化为 no-op,算子唯一功能失效 ② **红线 API-1(FAIL 80%)**:生产代码 3 处 GlobalTensor::GetValue(API 黑名单,GM 逐元素访问性能极差)③ 同 API-1 ④ **红线 TIL-3(FAIL 80%)**:int64 实例向量队列分配后零读写,占 UB 预算 71.4%,maxBatchSize 被压至 1/3.5 | | op_kernel/index_check.cpp | TILING_KEY_IS(0)/(1) 宏分发简化为模板直分 | TIL-3 配套:int64 恒走标量路径后宏分支不可达(死分支) | | op_host/index_check_tiling.cpp | ① TilingIndexCheck/TilingPrepareForIndexCheck 入口 context 判空前移 ② bounds 一维/长度校验(GetDimNum()!=1 \|\| GetDim(0)!=tensorId_ 拒绝)③ int64 预算 28B→8B/元素(indicesDtype_)④ SetBlockDim 返回值检查 ⑤ ubSize 无符号下溢修复(原 ubSizePlatform - SCALE_SPACE 在平台 UB<20480 时下溢为极大值,使下限检查失效)⑥ Arch35 硬编码日志去除 ⑦ 未用 include 清理 | ① **红线 RL-6/GEN-1.1(FAIL 70%)**:OP_LOGD(context->GetNodeName()) 在判空前解引用 ② **共性问题 11 维度+15.4(扫描 FAIL)**:spec 声明 rank_range:[1,1] 代码未实现,2-D bounds 元素数巧合时边界语义错位 ③ TIL-3 配套(maxBatchSize 8336→29184)④ **红线 TOPK-1(FAIL 85%)**:SetBlockDim 失败后 tiling 仍返 SUCCESS,kernel 按错误核数启动→部分索引静默漏检 ⑤ 基线真实缺陷 ⑥ SEC-8.4 ⑦ GEN-2.3 | | op_host/index_check_tiling.h | 魔鬼数字 8 → MAX_TENSOR_NUM 常量 | GEN-4.2(检视发现) | | op_api/index_check.cpp | ① 入口判空补 executor;IsAiCoreSupport 逐张量判空 ② bounds->Size() 传 %zu 加 static_cast<size_t>(2 处)③ 超限日志补上限值 ④ MAX_DIM_LEN→MAX_TENSOR_NUM(名实一致)、常量小驼峰 ⑤ 删 2 个未用 include | ① GEN-1.1(SUSP 70%):空指针 UB ② SEC-1.3:C 标准 varargs UB ③ SEC-8.4:排障日志缺关键值 ④ GEN-4.3/style1.4 ⑤ GEN-2.3 | | README.md | ① 950PR/950DT 行 ×→√ ② 补 4 条约束声明(rank≤8、列表非空、空张量跳过、空列表双路径行为) | ① **共性问题 15.1 双向核查**:def.cpp AddConfig("ascend950") 存在而文档标 ×(真实失配)② **共性问题 15.4(扫描 FAIL)**:4 个代码约束资料未声明 | | op_host/index_check_infershape.cpp<br>op_graph/index_check_graph_infer.cpp | 块注释 /* */ → //(各 1 行) | style 2.3(检视发现) | ## 明确不做的项及理由 | 项 | 理由 | |---|---| | 950 binary json(#10445 曾引入,#11349 已回退) | 手写 json 的 bin_filename 与 950 构建产物(哈希命名)不符且覆盖自动生成机制;无源 json 时构建自动生成正确配置(已验证) | | 运行时 format 校验(CheckFormat) | 共性问题 10 格式为 **REVIEW** 项:约束由 OpDef 注册 + binary json 元数据在框架层强制(同仓 80+ 算子同惯例),书面确认即可,不改码 | | tiling 逐张量 dtype 一致性/format 校验 | DType 驱动类,兼容性交付算子按整改指引不整改;op_api 层已有同校验 | | dim<0/溢出/bound<=0 防御校验、既有日志语法润色、scatter_elements UT | 无 finding 支撑(防御性自加)或不属本算子范围,按最小范围原则撤除 | | 共性问题 15.1 A2/A3 部分 | **误报豁免**:扫描规则对旧芯片仅查 canndev ini,本算子 A2/A3 支持声明于 def.cpp AddConfig(新轨注册),证据链见 Issue #5888 | | 共性问题 15.3 | **误报豁免**:L0-only 算子无公开 aclnn API,仓内 11 个同类 L0 算子同惯例无 aclnn 文档 | ## 验证 | 项 | 结果 | |---|---| | build.sh --ops=index_check --soc=ascend910_93 --pkg | ✅ 通过 | | build.sh --ops=index_check --soc=ascend950 --pkg(无源 json) | ✅ 通过,kernel/config/ascend950/index_check.json 自动生成、binInfo 指向真实产物 | | pre-commit(clang-format/codespell/OAT) | ✅ 全绿 | | 原始修复的精度回归(TTK 207 条 × 5+ 轮、Release 真机 VEC_ERROR) | 见 #10445 / Issue #5888(本次保留项代码未变) | ## 关联 - 原 PR:#10445 回退 PR:#11349 问题追踪:Issue #5888 See merge request: cann/ops-nn!11381 | 13 天前 | |
aidd问题修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11509 merge master into master aidd问题修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 aidd问题修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 文档更新不涉及测试 ## 文档更新 修改md文档在扫描出来的aidd问题 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11509 | 13 天前 | |
fix qbmm golden | 5 天前 | |
aidd问题修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11509 merge master into master aidd问题修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 aidd问题修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 文档更新不涉及测试 ## 文档更新 修改md文档在扫描出来的aidd问题 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11509 | 13 天前 | |
[agent] [Requirement|需求建议]: 补齐 ApplyMomentum 的 TTK golden 与测试接入 Co-authored-by: huang-qiang<huangqiang3@huawei.com> # message auto-generated for no-merge-commit merge: !11316 merge agent/issue-102 into master [agent] [Requirement|需求建议]: 补齐 ApplyMomentum 的 TTK golden 与测试接入 Created-by: huang-qiang Commit-by: huang-qiang Merged-by: cann-robot Description: 由 agent 自动创建。 阶段四已人工确认。四个阶段(需求分析 → 方案设计 → 编码实现 → 测试验证)全部完成并逐阶段通过人工确认。 交付摘要: - 新增 optim/apply_momentum/tests/assets/golden.py:基于 TensorFlow tf.raw_ops.ResourceApplyMomentum 的 TTK golden 插件,覆盖 use_nesterov False/True 两分支,返回 [var_out, accum_out] 同时校验参数更新与 accum 回写;FP16/BF16 提升 FP32,use_locking 按并发保护处理(非计算属性)。 - CSV 追加 12 条 accum 验证用例(声明 2 输出 + inplace 索引 (0,1) 使 accum 被回读比对),覆盖两分支 × fp32/fp16/bf16 + 零梯度/mom=0/mom=0.999/lr=0/负梯度/标量等边界。 - 验证:TTK 真实 loader 发现+绑定+实调 golden(TTK_BIND_OK)、ttk list 103 用例、CPU 自测 ALL_PASS、pre-commit 全 Passed。 - 已 commit 到 agent/issue-102(9926440a9),未 push/未建 PR。真实 NPU 端到端精度已如实标注为"未验证(无 NPU)"。 - 未改动任何生产代码。 TASK_COMPLETE See merge request: cann/ops-nn!11316 | 16 天前 | |
fix(pooling): 消除 VF scope 内结构体参数访问,修复 Ascend950 VF stack 波动 Co-authored-by: qq_52056150<wangshuo179@huawei.com> # message auto-generated for no-merge-commit merge: !11396 merge fix/pooling-vf-scope-param-struct into master fix(pooling): 消除 VF scope 内结构体参数访问,修复 Ascend950 VF stack 波动 Created-by: qq_52056150 Commit-by: qq_52056150 Merged-by: cann-robot Description: ## 描述 - 回退“收编 Ascend950/arch35 Kernel 重复实现”在 pooling 侧引入的结构体参数访问,恢复局部变量推导,消除 -Wcce-compat 告警与 VF stack 上涨; - MaxPoolGradWithArgmaxV3 NCHW int64 索引路径:索引装载细化 + 主循环拆分 VF scope,修复VF stack 爆栈问题(6944B/6176B > 6144B)导致的编译失败。 ## 关联的Issue [#6326](https://gitcode.com/cann/ops-nn/issues/6326) ## 测试 本地复跑不同的数据类型用例组合均通过,-d模式下无爆栈问题,精度均通过,David冒烟无异常 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11396 | 21 天前 | |
aclnnDynamicQuantV2参数校验修改 Co-authored-by: liujie12345678<liujie81@huawei.com> # message auto-generated for no-merge-commit merge: !11389 merge master into master aclnnDynamicQuantV2参数校验修改 Created-by: liujie12345678 Commit-by: liujie12345678 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复 issue [#6271](https://gitcode.com/CANN/ops-nn/issues/6271):MoE 场景(groupIndexOptional 提供)下专家数为 0 时, aclnnDynamicQuantV2 第一段接口未拦截非法 shape,错误被推迟到 tiling/构图阶段并以 561103(ACLNN_ERR_INNER_NULLPTR)报出,与文档约定的 161002(ACLNN_ERR_PARAM_INVALID)不符。 具体改动: 1. 第一段接口(quant/dynamic_quant/op_host/op_api/aclnn_dynamic_quant.cpp):group_index 提供时补齐对 smooth_scales 的关联校验——smooth_scales 必须非空、必须为 2 维(专家数, x 最后一维)、第一维与 group_index 长度一致、专家数不超过 1024、x 非空时专家数不小于 1,均返回 ACLNN_ERR_PARAM_INVALID。 2. Tiling(quant/dynamic_quant/op_host/dynamic_quant_tiling.cpp):group_index 提供且专家数为 0 时直接校验失败;MoE 分支判断由 groupNum >= 1 调整为按 group_index 是否提供,避免专家数为 0 的 MoE 输入落入非 MoE 分支报出误导性错误信息。 说明:该校验为 aclnnDynamicQuant / V2 / V3 / V4 共用,本改动对四个入口同时生效。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6271](https://gitcode.com/CANN/ops-nn/issues/6271) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 1. 新增 L2 UT(quant/dynamic_quant_v2/tests/ut/op_host/test_aclnn_dynamic_quant_v2.cpp): - x 非空 + smoothScales(0,8) + groupIndex(0,):第一段返回 ACLNN_ERR_PARAM_INVALID(issue 复现用例); - x 为空 Tensor + 专家数为 0:走空 Tensor 提前返回,返回 ACLNN_SUCCESS; - group_index 提供时 smooth_scales 缺省 / 为 1 维 / 专家数与 group_index 长度不一致:均返回 ACLNN_ERR_PARAM_INVALID; - 存量 3 个 MoE 用例的 smooth_scales 形状由 1 维修正为 (8, 32)。 2. 新增 tiling UT(quant/dynamic_quant/tests/ut/op_host/test_dynamic_quant_tiling.cpp):group_index(0,) 提供时 tiling 返回 GRAPH_FAILED。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 本 PR 未包含文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11389 | 13 天前 | |
docs: 修正 aclnnThnnFusedLstmCellBackward 文档格式与示例注释问题 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !11406 merge thnn-fix-main into master docs: 修正 aclnnThnnFusedLstmCellBackward 文档格式与示例注释问题 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修正 thnn_fused_lstm_cell_grad 算子文档(aclnnThnnFusedLstmCellBackward.md)与示例代码(test_aclnn_thnn_fused_lstm_cell_grad.cpp)中的资料与注释问题: 1. 文档:将参数表格中张量 shape 描述的全角逗号修正为半角,例如 [batch,hidden_size] → [batch, hidden_size]、[batch,4 * hidden_size] → [batch, 4 * hidden_size],涉及 dhy/dc/cx/cy/dgates 等张量。 2. 示例代码: - 修正主机侧数据初始化注释中的尺寸说明(如 1*8 = 8个、1*8*4 = 32个)。 - 将输入张量变量 gates 统一重命名为 storage,与算子接口参数命名一致。 - 将输出拷贝变量 resultDwhData 重命名为 resultDbData,与对应输出张量 db 一致。 - 补充 dhy aclTensor 的创建注释,移除多余的 ; 及文件末尾缺失的换行符。 - 更新文件头 License 版权声明格式(2025-2026)。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> - #6321 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本次改动仅涉及文档与示例代码注释,未修改算子实现逻辑;示例代码变量重命名后保持编译可用。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了 rnn/thnn_fused_lstm_cell_grad/docs/aclnnThnnFusedLstmCellBackward.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11406 | 21 天前 | |
[feat] support ascend960 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !11506 merge pkg into master [feat] support ascend960 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 ops-nn新增支持soc:ASCEND960PR、ASCEND960DT ## 关联的Issue [#6396](https://gitcode.com/cann/ops-nn/issues/6396) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11506 | 13 天前 | |
修复使用asan执行ut的报错 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !10930 merge master into master 修复使用asan执行ut的报错 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 背景:当前ut使用asan工具执行ut报错,需要修复 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10930 | 23 天前 | |
fix(add_rms_norm_dynamic_quant): 顶层入口对非int标量做原始类型校验,修复dispatcher归一化绕过 Co-authored-by: wangqi<wangqi195@hisilicon.com> # message auto-generated for no-merge-commit merge: !10891 merge fix/add-rms-norm-quant-public-entry-validation into master fix(add_rms_norm_dynamic_quant): 顶层入口对非int标量做原始类型校验,修复dispatcher归一化绕过 Created-by: wangqi_ai Commit-by: wangqi Merged-by: cann-robot Description: ## 关联 issue fixes #6055 ## 问题 顶层入口 cann_ops_nn.add_rms_norm_dynamic_quant(文档单算子示例路径)解析为 dispatcher OpOverloadPacket,标量参数在进入算子代码前被 schema 静默归一化(torch.int4 -> 40、torch.uint7 -> 36、np.int64(36) -> 36 等)。torch.uint6/uint7/int4/int5 四个 dtype 的序号恰好完整覆盖合法 dst_type 值域 {35,36,40,41},导致传入非 int 类型完全不报错、静默按"碰巧"的量化类型执行,与约束说明承诺的入口 TypeError 不符。详见 #6055。 ## 修改内容 1. torch_extension/cann_ops_nn/ops/norm/add_rms_norm_dynamic_quant/add_rms_norm_dynamic_quant.py 拆分 PrivateUse1 kernel(原逻辑逐字保留)与公开入口 add_rms_norm_dynamic_quant:先 _validate_arg_types 校验**原始**参数,再委托 torch.ops.cann_ops_nn.add_rms_norm_dynamic_quant 分发;公开入口携带 _cann_ops_nn_public_entry_ 标记。 2. torch_extension/cann_ops_nn/__init__.py __getattr__ 优先导出带标记的公开入口(而非 dispatcher 句柄);未携带标记的算子保持原行为——opt-in 机制,对其余算子零影响。 3. norm/add_rms_norm_dynamic_mx_quant/tests/ut/torch_extension/test_torch_extension_param_validation.py 入口结构锁定用例更新为断言"公开入口 + 与 raw 入口同一函数对象"(标量拦截覆盖经同一性断言传递至既有用例);删除与 test_scalar_type_interception 完全重复(同函数×同 7 个坏值×同断言)的参数化用例。 4. norm/add_rms_norm_dynamic_mx_quant/docs/torchapi_add_rms_norm_dynamic_quant.md 约束说明修正严格校验适用入口(补充顶层入口;dispatcher 归一化说明限定为直接经 torch.ops 调用场景);两个调用示例改为打印 shape/dtype,避免大 shape 输出刷屏。 ## 为什么委托 torch.ops 而非直调 C++ 模块 保证图模式行为不变:torch.compile 下 Dynamo 将公开入口内联后,torch.ops 调用仍作为 FX 图节点(实测 node.target 与修复前同为 OpOverloadPacket、逐节点一致),graph_convert 注册的 torchair GE 转换不受影响;若直调 C++ 模块则会在 builder.load() 处 graph break,图模式静默退化为 eager(mxscale dtype 等文档承诺行为改变)。 ## 验证(Ascend 950PR 实测) - 参数校验 UT:**42 passed**(meta/CPU,设备无关) - NPU UT test_torch_extension.py:**113 passed** - 文档 eager 示例路径实测:torch.int4/uint6/uint7/int5、torch.float8_e5m2/e4m3fn、np.int64/np.int32、36.0、"36"、True 全部抛指名 TypeError(如 dst_type must be a Python int (35=FP8_E5M2, 36=FP8_E4M3FN, 40=FP4_E2M1, 41=FP4_E1M2), but got torch.dtype: torch.int4);dst_type=36 正常输出 float8_e4m3fn (4,64),示例新打印语句输出与返回值说明表一致 - 图模式:FX 图与修复前逐节点一致;graph(trace) 与 eager 数值 torch.equal 为 True;torch.compile 下传 torch.int4 在 trace 阶段即 TypeError - pre-commit run(ruff check / ruff format / codespell / OAT 等)全部通过,零自动改动 ## 兼容性 - eager 合法调用(Python 原生 int/str/bool/float、IntEnum)行为不变 - torch.ops.cann_ops_nn.* 直调路径行为不变(框架归一化 + 值域兜底,文档已说明) - 其余算子顶层入口解析行为不变(仅带标记的公开入口生效) See merge request: cann/ops-nn!10891 | 30 天前 | |
fix(msda): 加固 multi_scale_deformable_attn 910b/950 输入校验,封堵 GM 越界读 Co-authored-by: cuijie25<cuijie24@h-partners.com> # message auto-generated for no-merge-commit merge: !11303 merge msda-gm-oob-guard into master fix(msda): 加固 multi_scale_deformable_attn 910b/950 输入校验,封堵 GM 越界读 Created-by: cuijie25 Commit-by: cuijie25 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> multi_scale_deformable_attn 算子的 kernel 信任 GM 中 spatialShapes(H/W) 与 levelStartIndex 的数值计算 valueGm 读偏移,op_api 仅校验 shape 不校验数值,非法输入会导致 GM 越界读。 本 PR 在 910b generic/high_perf 与 950 simt/generic 各分支的既有读取点前增加数值校验(950 的 generic 路径存在 arch35/ms_deform_attn_generic.h 与 op_kernel/ms_deform_attn_generic.h 两份副本,均已覆盖):levelStart < 0 或 levelStart + H*W > numKeys 时 Trap 终止(h/w 非正时角落 guard 恒假、零读取,无需正负性校验);arch35 tiling 增加 numLevels 一致性校验。校验不使用 ascendc_assert(避免热路径性能影响),仅裸 Trap。 其中 arch35/ms_deform_attn_generic.h 副本的守卫系按检视意见在 c5986fae8 补齐,tiling 日志文案同步修正(levelStartIndex[0]=%lu 实际打印 dim0 尺寸,改为 levelStartIndex.numLevels=%lu)。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> - 910b(Atlas A2):ATK 30 例精度通过(fp32≈1e-6/fp16≈5e-4/bf16≈4e-3);atk performance_device 30 例三轮 + msprof op case 级单核测量,前后性能对比零劣化;非法注入(BAD_HW/BAD_LAST)确定性 Trap 拦截,静默越界场景(轻微越界落入已映射内存)由校验拦截而内置版静默产出污染结果。 - 950(Ascend 950PR):四用例(SIMT/SIMD 回归 + 触发)通过;atk 30 例前后对比(各 28 例可比)开销约 1%。 - 说明:删除新增的 ascendc_assert 诊断打印以规避热路径性能影响,非法输入仍 Trap(507035)。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11303 | 21 天前 | |
修改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 | 3 个月前 | |
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 | 1 个月前 | |
动态库解耦 Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !8927 merge master into master 动态库解耦 Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 本 PR 旨在将算子侧代码与 legacy 动态库(libophost_comm_legacy.so)解耦:LegacyCommonMgr 新增 isSupported_ 支持位与 IsSupport() 接口,依据编译宏 ASCEND_COMPUTE_UNIT 判断当前 SoC 版本是否属于受支持集合 SUPPORTED_VERS(ascend910b、ascend910_93、ascend310p、ascend310b、ascend910),仅受支持时才 dlopen 加载 legacy 库;各 legacy 封装接口在不受支持时提前短路返回,matmul 系列算子的 tiling 流程同步改为容忍 legacy 能力缺失而不再硬失败,并配套调整 CMake 编译宏与 UT 测试。 ## 关联的Issue [5093](https://gitcode.com/cann/ops-nn/issues/5093) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8927 | 1 个月前 | |
einsum_pass图融合开源 Co-authored-by: linzehui2058<2602241040@qq.com> # message auto-generated for no-merge-commit merge: !9312 merge einsum_pass into master einsum_pass图融合开源 Created-by: linzehui2058 Commit-by: linzehui2058 Merged-by: cann-robot Description: ## 描述 einsum_pass图融合开源+资料开源,资料涉及公式label,会误判为拼写错误,同步添加检查白名单 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6241 ## 测试 门槛用例验证 ## 文档更新 matmul/batch_mat_mul_v3/docs/EinsumPass.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:融合算子开源 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!9312 | 22 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 2 个月前 | |
[feat] support ascend960 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !11506 merge pkg into master [feat] support ascend960 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 ops-nn新增支持soc:ASCEND960PR、ASCEND960DT ## 关联的Issue [#6396](https://gitcode.com/cann/ops-nn/issues/6396) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11506 | 13 天前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 22 天前 | |
init | 1 年前 | |
docs: add LayerNormRemoveBroadcastFusionPass doc Co-authored-by: rk<wangpengbo26@huawei.com> # message auto-generated for no-merge-commit merge: !9631 merge ln_pass_doc into master docs: add LayerNormRemoveBroadcastFusionPass doc Created-by: wangpengbo26 Commit-by: rk Merged-by: cann-robot Description: ## 描述 为现有LayerNormRemoveBroadcastFusionPass融合规则补充独立资料页。该规则在Ascend 950PR/Ascend 950DT场景下,将LayerNorm算子gamma和beta输入前的BroadcastTo从图中删除,使gamma和beta直接作为LayerNorm算子的输入,并将begin_norm_axis和begin_params_axis统一设置为归一化维度的起始轴。 资料同步说明规则的使用约束: - LayerNorm算子的gamma和beta输入前均为BroadcastTo,且两个BroadcastTo的shape输入相同。 - 输入x、gamma和beta均为静态shape。 - gamma和beta不为标量,二者的shape和数据类型相同。 - gamma的维数不大于x的维数,且gamma的shape与x从归一化轴开始的后缀shape相同。 - LayerNorm算子的begin_norm_axis换算为非负轴后,指向归一化维度的起始轴。 同时新增融合前后拓扑对比图,展示两个BroadcastTo节点被移除前后的图结构。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5430 ## 测试 - 本次仅新增文档和配图,不涉及代码逻辑变更,未执行代码测试。 - 已检查Markdown格式、图片文件格式及图片引用路径。 ## 文档更新 - 新增 norm/layer_norm/docs/LayerNormRemoveBroadcastFusionPass.md,说明融合模式和使用约束。 - 新增docs/zh/figures/LayerNormRemoveBroadcastFusionPass_1.png,展示融合前后的图结构。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9631 | 1 个月前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 22 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 2 个月前 | |
fix Third_Party_Open_Source_Software_List.yaml Co-authored-by: liuyufan0725<liuyufan9@huawei.com> # message auto-generated for no-merge-commit merge: !1879 merge fix_yaml into master fix Third_Party_Open_Source_Software_List.yaml Created-by: liuyufan0725 Commit-by: liuyufan0725 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新三方依赖清单Third_Party_Open_Source_Software_List.yaml 1、增加protobuf 2、将nlohmann/json修改为json ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#1042](https://gitcode.com/cann/ops-nn/issues/1042) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了Third_Party_Open_Source_Software_List.yaml ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1879 | 8 个月前 | |
【描 述】 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 | 8 个月前 | |
[feat] support ascend960 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !11506 merge pkg into master [feat] support ascend960 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 ops-nn新增支持soc:ASCEND960PR、ASCEND960DT ## 关联的Issue [#6396](https://gitcode.com/cann/ops-nn/issues/6396) ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11506 | 13 天前 | |
feat: add qbmm swiglu mx quant fusion Co-authored-by: smdbha<panzhijie2@huawei.com> # message auto-generated for no-merge-commit merge: !11230 merge master into master feat: add qbmm swiglu mx quant fusion Created-by: smdbha Commit-by: smdbha Merged-by: cann-robot Description: ## 描述 为 quant_matmul_activation_quant 算子增加 SwiGLU 与 MX 动态量化融合能力,并重构相关校验、推导和 Tiling 流程。 - 支持 SwiGLU:Matmul + Bias 后按 [gate | linear] 切分,计算 SiLU(gate) * linear,输出维度为输入的 1/2。 - 支持 Ascend 950、FP8 E4M3/E5M2、FP4 E2M1,以及 ND/WeightNZ 输入布局。 - 根据 scaleAlg 支持 OCP/BLAS 量化路径,并补充 FP4 对应量化算法。 - 新增 batch/without-batch kernel 路径,完善 WeightNZ、转置、MX Scale Shape 等参数校验。 - 保留并整理 GELU 现有路径,更新 Torch/ACLNN 接口、InferShape、Tiling、文档、示例和测试用例。 ## 关联的Issue - https://gitcode.com/cann/ops-nn/issues/5902 ## 测试 - 已补充和更新 op_api、op_host、op_kernel UT 及 ST CSV。 - 已补充 GELU/SwiGLU、ND/WeightNZ、FP8/FP4、batch/without-batch 等主要场景用例。 ## 文档更新 - 已更新算子 README、接口说明、示例及测试相关文档。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11230 | 22 天前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !8149 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 修改AIDD扫描的核心资料问题 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#3939](https://gitcode.com/cann/ops-nn/issues/3939) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8149 | 2 个月前 | |
调整nn仓第三方依赖 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !7845 merge pr_6933 into master 调整nn仓第三方依赖 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 1. 文档声称 install_deps.sh 可一键安装所有列出的基础依赖("上述依赖可通过项目脚本一键安装"),但实际脚本仅安装了 GCC、CMake、pigz、dos2unix、patch,未安装 googletest(文档明确列为基础依赖项之一),开发者需手动下载源码、编译并安装 googletest,与文档"一键安装"的描述不符 2. python requirements多两个不需要的依赖 ### 主要修改 为install_deps.sh 增加了安装gtest的功能 删除requirements中多余的两个依赖 ## 关联的Issue [#4256](https://gitcode.com/cann/ops-nn/issues/4256) [#4154](https://gitcode.com/cann/ops-nn/issues/4154) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!7845 | 2 个月前 | |
revert//fix(opgraph): 支持旧版本 CANN 运行时加载融合 pass 库 Co-authored-by: cann-robot<cann@cann.team> # message auto-generated for no-merge-commit merge: !11095 merge revert-mr-9924-1790130631176-auto into master revert//fix(opgraph): 支持旧版本 CANN 运行时加载融合 pass 库 Created-by: cann-robot Commit-by: cann-robot 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!11095 | 28 天前 | |
upgrade version 9.2.0 Co-authored-by: cong-jiyu<congjiyu@h-partners.com> # message auto-generated for no-merge-commit merge: !9513 merge master into master upgrade version 9.2.0 Created-by: cong-jiyu Commit-by: cong-jiyu Merged-by: cann-robot Description: ## 描述 upgrade version 9.2.0 ## 关联的Issue [#5362](https://gitcode.com/cann/ops-nn/issues/5362) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 版本更新 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9513 | 1 个月前 |
🔥Latest News
- [2026/05] 优化kernel编译配置项,减少simplified_key和ascendc_config配置文件(!3330)。
- [2026/05] 引入ops-tensor,基于分层结构优化Cube类算子,减少偏移量计算和简化指令参数(!5036)。
- [2026/05] 发布生态算子的精度验收标准(!4572)。
- [2026/03] 开源算子支持下一代芯片:Ascend950PR(!450)。
- [2026/03] 新增<<<>>>的算子开发样例(!620)。
- [2026/03] 低bit类算子和融合算子支持更多数据类型:fp8/mxfp8/hifp8/mxfp4等,并支持pertensor/perchannel/pertoken/pergroup/perblock等不同量化和组合方式:全量化融合算子:quant_batch_matmul_v4,伪量化融合算子:weight_quant_batch_matmul_v2。
- [2026/03] 支持SIMD/SIMT新同构编程算子实现:[MapIndex](#660),[ScatterSub](#710)。
- [2026/01] 新增QuickStart,指导新手零基础入门算子项目部署(支持Docker环境)、算子开发和贡献流程。
- [2025/12] 开源算子支持Ascend 950PR&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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。