Pull Request已成功合入, 合并人@CANN-robot
(感谢 Ding_Jing 的贡献)变更摘要
本次 PR 将 pkg_inc/op_common/aicpu_common/context 下的 35 个头文件按对外可见性物理拆分到两处目录,实现源码层面 opbase 私有实现与对外公开 API 的隔离。所有头文件内容零改动,均为 git mv 重命名:17 个 opbase 私有头移至 aicpu_common/context/{common,cpu_proto}/ 与对应 .cc 同级,18 个公开头移至 include/op_common/aicpu_common/context/{common,cpu_proto,cust_op,utils}/。配套调整了 CMakeLists.txt 的 include 路径(4→8 条)与 cmake/package.cmake 的 install 源路径,确保装包产物与下游四仓完全零感知。
主要改动
-
头文件目录按可见性物理拆分:17 个 opbase 私有头(如
async_cpu_kernel.h、device.h、node_def_impl.h等)移至aicpu_common/context/{common,cpu_proto}/内部目录,18 个对外公开头(如cpu_context.h、cpu_kernel.h、log.h、bcast.h等)移至include/op_common/aicpu_common/context/{common,cpu_proto,cust_op,utils}/,依赖方向单向为私有→公开,无公开头 include 私有头。 -
aicpu_common/context/CMakeLists.txtinclude 路径扩展:aicpu_context_headers的 include 目录从 4 条增加到 8 条,确保.cc源文件中的裸文件名#include能跨新目录正确解析。 -
cmake/package.cmake装包源路径适配:pkg_inc/aicpu_common装包拆为公开侧整目录install(DIRECTORY ...)与私有侧 17 个头文件的install(FILES ... PERMISSIONS)逐个安装,合并回同一目的地,避免私有目录下的.cc/.cpp/.proto及原本不打入交付集的cust_dlog_record.h被误打包。 -
include/op_common整目录 install 新增排除规则:新增PATTERN "aicpu_common" EXCLUDE,防止 18 个公开头被扫入$(TARGET_ENV)/include/op_common/aicpu_common/**产生冗余副本,同时避免<copy_all>true</copy_all>的opbase.xml将它们带入.run包。


描述
将
pkg_inc/op_common/aicpu_common/context下 35 个头文件按「谁在用」拆分到两处,使对外契约面与 opbase 内部实现在源码目录上物理隔离。头文件内容零改动,全部为git mv重命名。aicpu_common/context/{common,cpu_proto}/(与对应.cc同级)include/op_common/aicpu_common/context/{common,cpu_proto,cust_op,utils}/公开集 18 = 15 个被 ops-cv/ops-math/ops-nn/ops-transformer 直接 include + 3 个传递依赖(
cpu_kernel_register.h、device_cpu_kernel.h经node_def_builder.h;log_weak.h经log.h)。已验证该集合闭合:没有任何公开头 include 私有头,依赖方向单向为 私有 → 公开。硬约束:装包产物零变化。 装包目的地路径一律不动,
cmake/package.cmake只改 install 的源路径;opbase.xml/AicpuCommonInc.xml无需改动,下游四仓零感知。配套构建改动(2 个文件):
aicpu_common/context/CMakeLists.txt:aicpu_context_headers的 include 目录 4 → 8。必需——.cc里的 include 全是裸文件名,跨目录必须显式在 path 上。cmake/package.cmake三处:pkg_inc/aicpu_common装包拆为「公开侧整目录 install + 私有 17 头install(FILES ... PERMISSIONS)」,合并回同一目的地。私有侧不能整目录装——该目录下还有.cc/.cpp/.proto/CMakeLists.txt,以及不属于交付集、原本就不打包的cust_op/cust_dlog_record.h。aicpu_headers_src那 8 个路径前缀改为include/op_common/aicpu_common/context/。include/op_common整目录 install 新增PATTERN "aicpu_common" EXCLUDE。必需——否则 18 个公开头会被扫进$(TARGET_ENV)/include/op_common/aicpu_common/**产生冗余副本,且opbase.xml里<copy_all>true</copy_all>会让它们进.run包。关联的Issue
#298
测试
验证环境:远端 aarch64 + CANN 9.2.0(
V100R001C11B134),gcc 13.3.0。1. 完整
.run编包双向比对(核心验收)先编改动后版本,再
git reset --hard回基线提交重编,比对两次 CPackmakeself_staging(即打进.run的完整文件树):211 个文件中 208 个逐字节一致,其余 3 个全部是构建时间戳产物(
.run自解压包自身、opp/version.info与share/info/opbase/version.info的timestamp=行)。权限位 0 差异。四项重点核对(在真实
.run内容上):pkg_inc/aicpu_common/**头文件数include/aicpu/头文件数include/op_common/下无aicpu_commonlog op_graph op_host op_kernel✅cust_op/未混入cust_dlog_record.hcust_cpu_utils.h✅2. opbase aicpu 编译
aicpu_context_host+aicpu_nodedef_hostaicpu_context+aicpu_nodedef+aicpu_cust_log(首次 make 报 "Built target" 未真正重编会使验证失效,已
touch全部.cc/.cpp强制重编,上表为强制重编后结果——84 个源文件真实走过新的 8 条 include 路径。)3. 下游四仓编包,全部通过
cann-910b-ops-math_9.1.0_linux-aarch64.runcann-910b-ops-nn_9.1.0_linux-aarch64.runcann-910b-ops-cv_9.1.0_linux-aarch64.runcann-910b-ops-transformer_9.1.0_linux-aarch64.run(全量--pkg,574 MB)未覆盖项(如实说明):改动后的 opbase 包未安装进远端 CANN(本包版本
9.0.0、远端 CANN9.2.0,覆盖安装有降级风险),因此下游四仓构建并未真正消费本次改动的 opbase——但由上述产物零变化的结论,功能上等价。UT / example 未执行;CANN 内部 XML 装包链路未在内部构建上实测。文档更新
无。本次仅调整源码目录结构与 install 源路径,未涉及对外文档。
类型标签