已合并
refactor: 隔离 arch5162 ApiMbuf 组件 #4254
zhangpengpeng8创建于 26 天前
refactor: 隔离 arch5162 ApiMbuf 组件 #4254
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zhangpengpeng8 的贡献)26 天前 创建了 pull request,commit 28c089a1
atomgit-bot
26 天前 评论:
26 天前 评论:
变更摘要
本次改动将 ApiMbuf 组件从 arch5162 芯片的构建中隔离,使其成为可选编译组件,从而避免无效实现进入 arch5162 的 libruntime.so。具体做法是:将 NpuDriver 的 Mbuf 实现从 npu_driver_queue.cc 拆分为独立的 npu_driver_mbuf.cc 供其他产品继续编译;在 arch5162 构建中移除 api_c_mbuf.cc 与 api_impl_mbuf.cc,并由轻量 C API 桩统一返回 ACL_ERROR_RT_FEATURE_NOT_SUPPORT;同时保留全部公开 Mbuf 符号以维持对外 ABI 兼容。
主要改动
- 拆分
NpuDriverMbuf 实现: 将NpuDriver中全部 Mbuf 相关方法从npu_driver_queue.cc迁移到新增的npu_driver_mbuf.cc,原有实现逻辑保持不变,并在cmodel.cmake、runtime.cmake、tiny.cmake、v200.cmake中补充该源文件。 - arch5162 构建裁剪: 在
arch5162.cmake中移除api_c_mbuf.cc和api_impl_mbuf.cc,使 arch5162 不再编译 Mbuf 的真实实现。 - 条件化 Mbuf 组件创建: 新增
IsImplMbufSupported()接口,arch5162 版本返回false且CreateImplMbufAndGet()返回nullptr,Runtime::InitApiImplies()据此跳过ApiImplMbuf创建;非 arch5162 版本在api_impl_mbuf.cc中返回true并正常创建。 - 新增轻量 C API 桩: 在
api_c_arch5162.cc中为 17 个 Mbuf 公开接口(如rtMbufInit、rtMbufAlloc、rtMbufFree等)添加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。


不准确?
atomgit-bot
26 天前 评论:
26 天前 评论:
26 天前 添加了label:cann-cla/yes
CANN-robot
26 天前 评论:
26 天前 评论:
此处折叠了221条消息 查看更多
18 天前 添加了label:approved
CANN-robot
18 天前 评论:
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.


18 天前 解决了最后一个问题
18 天前 合入了pull request
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.cc、api_impl_mbuf.cc,并停止编译npu_driver_mbuf.cc。rt_utest_mbuf_stub.cc,覆盖实现生命周期和全部 17 个公开 C API。本次基于最新
master(476e57ff5)整理为单提交。PR4264 和 PR4265 已在基线中,本 PR 当前只保留 arch5162 平台隔离步骤,可独立回退。分步骤上库
ApiImplMbuf,已合入。变更类型
关联的 Issue
无。
如何测试
runtime_utest_arch5162:106/106 通过,其中共享 Mbuf 桩用例 2/2 通过。PRODUCT=ascend5162aRelease 构建runtime通过,最终链接启用-Wl,--no-undefined。api_c_mbuf_stub.cc、api_impl_mbuf_stub.cc,不包含api_c_mbuf.cc、api_impl_mbuf.cc和npu_driver_mbuf.cc。libruntime.so执行ldd -r,无未解析符号或缺失依赖。libruntime.so保留全部 17 个 Mbuf C API 动态符号。clang-format与 OAT 提交检查通过。e4a30573b的线上编译/UT 流水线:27/27 成功;静态检查流水线:11/11 成功。核对清单
其他信息
tiny.cmake、tiny UT 配置或docs。