已合并
refactor: 隔离 arch5162 ApiMbuf 组件 #4254
refactor: 隔离 arch5162 ApiMbuf 组件 #4254
已合并
zhangpengpeng8创建于 26 天前
zhangpengpeng8成员
26 天前

Pull Request

描述

arch5162 不支持 ApiMbuf 功能。本次仅将 arch5162 构建目标切换到共享轻量桩,避免完整 Mbuf 实现进入对应 Runtime 产物:

  • 新增 api_c_mbuf_stub.cc,保留 17 个公开 Mbuf C API 符号并统一返回 ACL_ERROR_RT_FEATURE_NOT_SUPPORT
  • 新增 api_impl_mbuf_stub.cc,提供不支持场景的实现生命周期:IsImplMbufSupported() 返回 false、创建返回空、销毁保持空指针。
  • arch5162.cmake 以轻量桩替换 api_c_mbuf.ccapi_impl_mbuf.cc,并停止编译 npu_driver_mbuf.cc
  • arch5162 UT 使用 rt_utest_mbuf_stub.cc,覆盖实现生命周期和全部 17 个公开 C API。
  • 普通 Runtime 和 tiny 构建配置不变,继续编译完整 ApiMbuf 实现。

本次基于最新 master476e57ff5)整理为单提交。PR4264 和 PR4265 已在基线中,本 PR 当前只保留 arch5162 平台隔离步骤,可独立回退。

分步骤上库

  1. PR4264:拆分 NpuDriver Mbuf 源文件,已合入。
  2. PR4265:解耦 Runtime 与具体 ApiImplMbuf,已合入。
  3. PR4254:仅对 arch5162 启用 Mbuf 编译隔离、ABI 桩和 UT。

变更类型

关联的 Issue

无。

如何测试

  1. runtime_utest_arch5162:106/106 通过,其中共享 Mbuf 桩用例 2/2 通过。
  2. PRODUCT=ascend5162a Release 构建 runtime 通过,最终链接启用 -Wl,--no-undefined
  3. arch5162 构建对象仅包含 api_c_mbuf_stub.ccapi_impl_mbuf_stub.cc,不包含 api_c_mbuf.ccapi_impl_mbuf.ccnpu_driver_mbuf.cc
  4. arch5162 的 libruntime.so 执行 ldd -r,无未解析符号或缺失依赖。
  5. arch5162 的 libruntime.so 保留全部 17 个 Mbuf C API 动态符号。
  6. clang-format 与 OAT 提交检查通过。
  7. 最终提交 e4a30573b 的线上编译/UT 流水线:27/27 成功;静态检查流水线:11/11 成功。

核对清单

其他信息

  • 本 PR 不修改 tiny.cmake、tiny UT 配置或 docs
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zhangpengpeng8 的贡献)
Zzhangpengpeng8成员
26 天前 创建了 pull request,commit 28c089a1
atomgit-bot
atomgit-bot
26 天前 评论:

变更摘要

本次改动将 ApiMbuf 组件从 arch5162 芯片的构建中隔离,使其成为可选编译组件,从而避免无效实现进入 arch5162 的 libruntime.so。具体做法是:将 NpuDriver 的 Mbuf 实现从 npu_driver_queue.cc 拆分为独立的 npu_driver_mbuf.cc 供其他产品继续编译;在 arch5162 构建中移除 api_c_mbuf.ccapi_impl_mbuf.cc,并由轻量 C API 桩统一返回 ACL_ERROR_RT_FEATURE_NOT_SUPPORT;同时保留全部公开 Mbuf 符号以维持对外 ABI 兼容。

主要改动

  • 拆分 NpuDriver Mbuf 实现: 将 NpuDriver 中全部 Mbuf 相关方法从 npu_driver_queue.cc 迁移到新增的 npu_driver_mbuf.cc,原有实现逻辑保持不变,并在 cmodel.cmakeruntime.cmaketiny.cmakev200.cmake 中补充该源文件。
  • arch5162 构建裁剪: 在 arch5162.cmake 中移除 api_c_mbuf.ccapi_impl_mbuf.cc,使 arch5162 不再编译 Mbuf 的真实实现。
  • 条件化 Mbuf 组件创建: 新增 IsImplMbufSupported() 接口,arch5162 版本返回 falseCreateImplMbufAndGet() 返回 nullptrRuntime::InitApiImplies() 据此跳过 ApiImplMbuf 创建;非 arch5162 版本在 api_impl_mbuf.cc 中返回 true 并正常创建。
  • 新增轻量 C API 桩: 在 api_c_arch5162.cc 中为 17 个 Mbuf 公开接口(如 rtMbufInitrtMbufAllocrtMbufFree 等)添加 ACL_ERROR_RT_FEATURE_NOT_SUPPORT 桩实现,同时将 ApiMbuf::Instance()api.cc 移至 api_impl_mbuf.cc
  • 新增 arch5162 单测: 新增 rt_utest_mbuf_arch5162.cc,覆盖 17 个 Mbuf 不支持桩,验证其均返回 ACL_ERROR_RT_FEATURE_NOT_SUPPORT
likedislike
不准确?
atomgit-bot
atomgit-bot
26 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
26 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
26 天前 评论:

CLA Signature Pass

zhangpengpeng8, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了221条消息 查看更多
wda1991成员
18 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
18 天前 添加了label:approved
CANN-robot
CANN-robot成员
18 天前 评论:

The MR can not be merged, because of CodeReview discussion not resolved

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

likedislike
Zzhangpengpeng8成员
18 天前 解决了最后一个问题
CANN-robotCANN-robot成员
18 天前 合入了pull request