| 产品名称修改 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 | 1 month ago |
| refactor(unique): move aclnnUnique APIs to owning operator directory Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !8848 merge codex/move-aclnn-unique into master refactor(unique): move aclnnUnique APIs to owning operator directory Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 aclnnUnique 和 aclnnUnique2 当前位于 scatter_elements/op_api 目录,与接口实际归属不一致。本次调整: - 将 aclnnUnique、aclnnUnique2 及共享实现 unique_common 迁移到 unique_consecutive/op_api。 - 将原有 aclnnUniqueConsecutive 及 UniqueConsecutive L0 接口从 unique_consecutive/op_host/op_api 迁移到根级 op_api,统一符合仓库当前目录规范。 - 950 核心路径由 Sort + UniqueConsecutive 实现;UniqueWithCountsAndSorting 保留为不支持 AI Core 路径时的回退实现。 - 同步迁移接口文档、示例、ST 和 UT。 - 将构建入口调整到算子根 CMakeLists.txt,更新依赖、文档索引和 classify_rule.yaml,并移除 scatter_elements 中不再使用的 Unique 依赖。 ## 关联的Issue [#4918](https://gitcode.com/cann/ops-nn/issues/4918) ## 测试 - git diff --check 通过。 - 目录、引用和依赖结构检查通过,旧路径无残留。 - 未运行单元测试。 ## 文档更新 - 迁移 aclnnUnique.md、aclnnUnique2.md。 - 更新 aclnn API 菜单及接口列表链接。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:目录结构调整 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8848 | 2 months ago |
| format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 4 months ago |
| refactor: 迁移NN公共op_api头文件引用 Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !10879 merge nn_prefix_common_headers_0920 into master refactor: 迁移NN公共op_api头文件引用 Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 本变更属于 NN 公共 op_api 头文件迁移的调用清理阶段: - 将非 experimental 目录中 21 个 op_api/level2_base.h 调用迁移到 op_api/level2_base_nn.h。 - 将非 experimental 目录中 2 个 op_api/level2_base_caculation.h 调用迁移到 op_api/level2_base_caculation_nn.h。 - experimental 目录暂时保留旧转发头:11 处 level2_base.h、3 处 level2_base_caculation.h,避免 CI 将导出同名 ACLNN 接口的实验算子共同链接。 - 保留旧头文件作为兼容转发头;本 MR 不宣称已完成最终包内 basename 去重。 - 不修改 op_api_def_nn.h,不包含功能逻辑变更。 ## 关联的Issue Issue #6008 ## 测试 - git diff --check upstream/master...HEAD:通过。 - pre_commit:全部通过,包括 clang-format、codespell 和 OAT。 - CANN 9.0 容器执行 bash build.sh --opapi -j32:通过,成功生成 libopapi_nn.so。 - 原 experimental CI 同时选择 swish 与 swish_v2 后发生既有同名 ACLNN 符号冲突;本次兼容调整已将两者移出最终 MR diff,等待线上 CI 复验。 ## 文档更新 无文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:公共头文件引用迁移 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10879 | 1 month ago |
| docs: 统一原型注释中的产品名称(master) Co-authored-by: yolic<chenyuning1@huawei.com> # message auto-generated for no-merge-commit merge: !11186 merge 923soc into master docs: 统一原型注释中的产品名称(master) Created-by: yolic Commit-by: yolic Merged-by: cann-robot Description: ## 描述 原型注释里的产品名称仍沿用 Series Product、Ascend 950 AI Processor、Ascend 950PR/Ascend 950DT 等旧表述,与当前产品命名不一致。本次只改注释,不改算子接口和计算逻辑。 合入目标:cann/ops-nn 的 master。 覆盖各算子 op_graph/*_proto.h,以及 common/inc/op_graph/op_nn_proto_extend.h、common/stub/op_graph/math_proto_stub.cpp。 ## 关联的Issue 关联 Issue #6213(Close #6213) https://gitcode.com/cann/ops-nn/issues/6213 ## 测试 仅修改原型注释中的产品名称,不涉及算子 host/kernel 计算逻辑,无需算子泛化。已在本地用仓库 pre-commit 的 end-of-file-fixer 与 clang-format 核对格式,且没有改动算子输入、输出和属性定义。 ## 文档更新 更新了 op_graph 原型注释中的产品名称,无独立 markdown 文档。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11186 | 1 month ago |
| 【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !11169 merge nn_all into master 【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 1. 背景:mc62算子workspace占用相比于1951增大 2. 由于mc62代码和A5是onetrack, 所有workspacesize硬编码为16M, 在mc62上也同样是16M,asc 提供接口,对mc62进行区分,从原来的16M 变成1K,A5和A2大小不变。 3. 修改:算子侧tiling中硬编码为16M大小的workspacesize统一改为用接口获取。 GetLibApiWorkSpaceSize实现如下: const static uint32_t WORK_SPACE_SIZE_910B = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE_950 = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE = 1024; uint32_t PlatformAscendC::GetLibApiWorkSpaceSize(void) const { auto npuArch = GetCurNpuArch(); if (npuArch == NpuArch::DAV_RESV) { PF_LOGE("get platform failed, CurNpuArch is NpuArch::DAV_RESV"); return -1; } else if (npuArch == NpuArch::DAV_2201) { return WORK_SPACE_SIZE_910B; } else if (npuArch == NpuArch::DAV_3510) { return WORK_SPACE_SIZE_950; } return WORK_SPACE_SIZE; } ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6919 ## 测试 1.单算子框架测试通过 2.二级冒烟通过 文档更新 类型标签 - [x] Bug修复 See merge request: cann/ops-nn!11169 | 23 days ago |
| feat(scatter_elements): 支持确定性全局排序 Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !9766 merge codex/migrate-scatter-elements-global-sort into master feat(scatter_elements): 支持确定性全局排序 Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 ScatterElements 在 Ascend 950 确定性模式下新增全局排序路径,复用现有 SortLib,并保留 data -> y 拷贝语义。 主要修改: - Host Tiling 增加全局排序 tiling、workspace 及 2xxxxxx tiling key 路由。 - 新增 copy -> linear index -> SortLib radix sort -> grouped reduction kernel。 - FP16/BF16 分组内使用 FP32 累加;INT8/INT16 使用 INT32 累加,组间按输出 dtype 写回。 - permSize 跟随 countMode,采用 32/64 位同宽设计,不修改 SortLib。 - 新增 ScatterElements Host Tiling UT,覆盖排序路由、fallback、subset 和 64 位 permutation 边界。 本 PR 仅修改 index/scatter_elements,index/sort_lib 与目标基线一致。 ## 关联的Issue Closes #5735 ## 测试 - pre-commit run --from-ref upstream/master --to-ref HEAD:全部通过。 - clang-format、codespell、OAT Compliance Check:全部通过。 - rebase 前后 git range-diff:补丁完全等价。 - git diff --check upstream/master...HEAD:通过。 - ScatterElementsWithSortedTiling:5/5 通过。 - ScatterElementsV2WithSortedTiling:9/9 通过。 - 上游 SortLibTilingTest:10/10 通过。 - ScatterElements Ascend950PR_9599 kernel 配置:20/20 编译通过。 - 完整 Host UT:48/51 通过;其余 3 个失败为本机 CANN 9.1 下既有的 ScatterElementsV2 确定性 tiling 序列化期望差异,与本 PR 无关。 ## 文档更新 无需文档更新。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9766 | 2 months ago |
| feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 30 days ago |
| Revert "fix(index_check): enforce Trap violation semantics and complete tiling input validation" (PR #10445) Co-authored-by: Bright0313<liwenbo84@huawei.com> # message auto-generated for no-merge-commit merge: !11349 merge revert/pr10445-index-check into master Revert "fix(index_check): enforce Trap violation semantics and complete tiling input validation" (PR #10445) Created-by: Bright0313 Commit-by: Bright0313 Merged-by: cann-robot Description: ## 回退原因 PR #10445 合入后 950 构建流水线异常。根因定位为其新增的 index/index_check/op_host/config/ascend950/index_check_binary.json: - bin_filename 声明为 IndexCheck_int32 / IndexCheck_int64(当时照抄 ascend910b 配置); - 但 **950 构建实际产物为哈希命名**(IndexCheck_<md5>_high_performance.o,见源码构建产物),声明与产物不匹配; - 950 与 910b 的二进制命名规则不同:同目录 13 个双芯片算子中 10 个的 950 json 与各自 910b json 不同(950 侧使用哈希名,如 scatter_nd_update 的 ScatterNdUpdate_e1b0109dfcfe48c3210f1a593265d1dc),逐字节照抄 910b 不成立。 ## 回退内容 完整回退 commit 8cab0b3e8c(10 文件,+94/-277,为原 PR 的精确逆操作): - 删除 config/ascend950/index_check_binary.json(问题文件) - kernel:ascendc_assert → Trap() 语义修复回退 - tiling:格式/维度/长度校验回退 - op_api/README/infershape/graph_infer/GEIR 示例同步回退 - scatter_elements UT 用例回退 ## 后续计划 1. 按同目录算子惯例修正 950 binary json 命名(与 950 构建产物对齐)后,重新提交有效修复(含 Trap 语义修复与 tiling 校验加固); 2. 修复 PR 将继续关联 Issue #5888 更新。 ## 关联 - 原 PR:#10445 - 问题追踪:Issue #5888 Co-authored-by: <同事建议回退,按团队决定执行> See merge request: cann/ops-nn!11349 | 1 month ago |
| feat(aicpu): enable constant folding for migrated ops Co-authored-by: hid29204727<wangboyu20@huawei.com> # message auto-generated for no-merge-commit merge: !9280 merge codex/aicpu-const-folding into master feat(aicpu): enable constant folding for migrated ops Created-by: hid29204727 Commit-by: hid29204727 Merged-by: cann-robot Description: ## 描述 补充 ops-nn 仓 AICPU host 常量折叠注册通路,并为当前已标记 OPEN_OPS_FLAG 的 18 个迁移算子统一开启常量折叠支持。 主要改动: - 新增仓级 OPS_NN_REGISTER_CPU_KERNELV2 注册包装宏,host 构建优先注册 V2,device/custom/UT 保持 V1 回退。 - 为 add_modules_sources 和 add_all_modules_sources 增加 HOSTCPU 参数及 host OBJECT 收集逻辑。 - 为 18 个 OPEN_OPS_FLAG 算子补充 HOSTCPU TRUE、注册头文件和 V2 注册。 - host OBJECT 汇入 libopconstant_folding_nn.so。 ## 关联的Issue 无。 ## 测试 已完成以下静态验证: - git diff --check 通过。 - 18 个 OPEN_OPS_FLAG 算子均具备 HOSTCPU TRUE。 - 18 个算子均使用 OPS_NN_REGISTER_CPU_KERNELV2,无直接 V1 注册残留。 - 注册头文件、host 编译宏和仓级 so 收集通路检查通过。 当前 Windows 环境缺少 CANN、NPU、CMake 和远端构建桥,未执行 bash build.sh --pkg -j16;完整打包构建及常量折叠功能验证待 CANN Linux 环境/CI 完成。 ## 文档更新 无仓内文档变更。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9280 | 1 month ago |
| docs(scatter_elements): README 数据类型列表与算子定义对齐&&参数冗余定义删除 Co-authored-by: zzy1205<zhangzhengyi8@huawei.com> # message auto-generated for no-merge-commit merge: !11607 merge master into master docs(scatter_elements): README 数据类型列表与算子定义对齐&&参数冗余定义删除 Created-by: zzy1205 Commit-by: zzy1205 Merged-by: cann-robot Description: ## 变更说明 修复 op_api 头文件注释与函数签名不一致、以及 README dtype 列表与算子注册不一致的问题(头文件与 README 均随包发布:按注释调用会编译失败,按文档 dtype 构造输入会被 def 校验拒绝): 1. index/scatter_elements_v2/op_api/aclnn_scatter.h aclnnInplaceScatterValueGetWorkspaceSize 是原地接口,签名里没有 out,但注释里写了 out 参数(按注释多准备一个 out、按 8 个参数调用会编译失败)。本次删除该段注释(3 行)。 2. index/scatter_elements/README.md scatter_elements 在 ai-npu 与 ai-cpu 各有一份注册,README 的 dtype 列应覆盖两者并集: - **ai-npu**(op_host/scatter_elements_def.cpp,8 类):FLOAT16, BFLOAT16, FLOAT32, INT8, INT16, INT32, INT64, UINT8 - **ai-cpu**(op_kernel_aicpu/scatter_elements_aicpu_def.cpp,15 类):FLOAT16, BFLOAT16, FLOAT32, DOUBLE, INT8, INT16, INT32, INT64, UINT8, UINT16, UINT32, UINT64, BOOL, COMPLEX64, COMPLEX128 - 并集 = 15 类(ai-cpu 已含 ai-npu 全部 8 类) 本次修正两处: - 删除三处列表中未注册的 QINT32, QINT8, QUINT8, COMPLEX32(18 → 14 类); - 补齐原 README 自始即漏标的 BOOL(ai-cpu 已注册,14 → 15 类)。 三处列表最终统一为 15 类:BFLOAT16, BOOL, COMPLEX128, COMPLEX64, DOUBLE, FLOAT16, FLOAT32, INT16, INT32, INT64, INT8, UINT16, UINT32, UINT64, UINT8,与两仓库并集一致。 ## 验证 - aclnnInplaceScatterValueGetWorkspaceSize 修复后 @param 7 条与签名 7 个参数一一对应,无幽灵参; - 用修复后的头文件按注释以 7 参调用,编译通过(g++ + CANN 9.2.0 头文件实测); - 全仓检索确认无调用点依赖该形参(examples/、tests/ut/op_api/、op_api/aclnn_scatter.cpp 均为 7 参形式,实现内 L2_DFX_PHASE_1(..., DFX_OUT(selfRef)) 亦印证出参即 selfRef); - README dtype 列表与 ai-npu + ai-cpu 注册并集逐项一致(15 类,虚标 0、漏标 0); - AICPU 15 类经实机编译验证通过: bash build.sh --opkernel_aicpu_test --soc=ascend910b --ops=scatter_elements -j16 -O3 → EXIT=0, UT [ PASSED ] 4 tests,其中 DATA_TYPE_DT_BOOL_MUL_SUCC、DATA_TYPE_DT_DOUBLE_NONE_SUCC、DATA_TYPE_DT_COMPLEX64_ADD_SUCC 带断言通过; - 仅注释与文档变更,不涉及代码逻辑。 关联 issue:#6399(第 5 条)、#6357(第 3 条) See merge request: cann/ops-nn!11607 | 1 month ago |