已合并
feat(aicpu): AICPU built-in整包准入manifest机制 #11655
feat(aicpu): AICPU built-in整包准入manifest机制 #11655
已合并
liu-wei创建于 24 天前
liu-wei
liu-wei成员
24 天前

描述

为 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
  • 🔧 配置变更
  • 📝 文档更新
  • ⬆️ 依赖升级
  • 🔒 安全修复
  • 🧹 代码清理
  • ❓ 其他,请描述:
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 liu-wei 的贡献)
liu-weiliu-wei成员
24 天前 创建了 pull request,commit 362ed6e8
liu-weiliu-wei成员
24 天前 关联了issue:[Bug-Report|缺陷反馈]: aclnnAddmv在fp32输入且cubeMathType=0、K∈[2048,16384]大维度累加下均方根误差比超阈(本次样本8/9例),另有降精度模式、整型/fp64/bool路径、极值域等多族大比例精度分歧(共417/961例,多属标杆口径或未定义语义分歧待维护者裁定)
atomgit-bot
atomgit-bot
24 天前 评论:

变更摘要

本 PR 参考 cann/ops-math#5693,为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制,通过白名单将原本"隐式排除"的方式显式化:默认全部 OFF,算子准入由后续按需登记 xxx=ON。核心改动包括新增准入清单配置文件、在 cmake/func.cmake 中提供准入判断 helper,并在 cmake/symbol.cmake 的 gen_norm_symbol() 中补齐 built-in 产物接线;其余为 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的门控接入与少量版权头规范化(无对应内嵌 patch,此处不展开实现细节)。不改动 ENABLE_CUSTOM custom 直通、UT 与 host 常量折叠链路,空 manifest 下整包产物与 master 保持一致。

主要改动

  • 新增准入清单配置: 新增 cmake/config/aicpu_builtin_package_manifest.cmake,定义 AICPU_BUILTIN_PACKAGE_FORCE_ALL(默认 OFF)与空的 AICPU_BUILTIN_PACKAGE_MANIFEST 列表,键为算子名(如 elu、scatter_nd_min),需按需登记 新算子=ON。
  • 新增准入判断 helper: 在 cmake/func.cmake 中新增 check_aicpu_builtin_pkg_allowed(op_name),当 AICPU_BUILTIN_PACKAGE_FORCE_ALL 为真或清单中存在匹配项时判定准入,并通过 PARENT_SCOPE 向调用方返回 _AICPU_BUILTIN_PKG_ALLOWED。
  • 补齐 built-in 产物接线: 在 cmake/symbol.cmake 的 gen_norm_symbol() 中新增条件分支,当 NOT NO_AICPU AND ENABLE_PACKAGE 时调用 gen_aicpu_json_symbol(TRUE) 与 gen_aicpu_kernel_symbol(TRUE),生成 built-in 整包所需的 aicpu_nn.json 与 libnn_aicpu_kernels.so。

🧩 本次 Review 已使用自定义 Skill:

likedislike
不准确?
atomgit-bot
atomgit-bot
24 天前 评论:

代码审查

✅ 未发现问题


🧩 本次 Review 已使用自定义 Skill:

likedislike
不准确?
CANN-robotCANN-robot成员
24 天前 添加了label:cann-cla/yes
此处折叠了75条消息 查看更多
CANN-robotCANN-robot成员
20 天前 添加了label:lgtm
CANN-robotCANN-robot成员
20 天前 关闭了关联的issue
CANN-robotCANN-robot成员
20 天前 合入了pull request
CANN-robot
CANN-robot成员
20 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike
zhajianqing123成员
20 天前 评论:

/approve

likedislike