Pull Request已成功合入, 合并人@CANN-robot
(感谢 zhangfan_hanq 的贡献)变更摘要
本 PR 对 OM2 模型的对外 API 与每模型内部实现进行拆分:新增固定 API 头文件 om2_model_api.h(inc/framework/om2/model_api/om2_model_api.h)作为代码仓受控的唯一来源,集中定义 GertModel* 结构体、回调类型与 GertModelLoad/GertModelRun 等 C 接口声明;在 ATC 代码生成阶段通过 CMake 构建期生成的资源文件 om2_model_api_resource.cc.in 将固定头内容嵌入动态库并写入 OM2,运行时头文件(model_dump_c_api.h、gert_model_executor_types.h 等)改为引用该固定头,各模型头文件则由 <model>_interface.h 调整为 <model>_internal.h,避免 ATC 运行时依赖安装路径上的头文件。
主要改动
-
新增固定 API 头作为唯一来源:新增
inc/framework/om2/model_api/om2_model_api.h,集中声明全部 OM2 对外接口类型(GertModelTaskDesc、GertModelLoadCallbacks、GertModelRunCallbacks、GertModelLoadConfig等)及GertModelLoad、GertModelRunAsync、GertModelGetStreamNum等函数;om2_model_executor.cc删除本地重复定义的GertModelLoadConfig/GertModelRunConfig等结构体并改为 include 该头。 -
运行时头文件收敛为引用固定头:
model_dump_c_api.h由内联约 190 行类型定义精简为 includeom2_model_api.h(并将参数类型由const struct GertModelTaskDesc *改为const GertModelTaskDesc *);gert_model_executor_types.h退化为兼容 include 并注明 ABI 类型仅定义一次;gert_model_executor_callbacks.h改引om2_model_api.h,gert_model_executor_callbacks.cc补引model_dump_c_api.h。 -
codegen 输出文件拆分:
GeneratedFileIndex新增kModelApiHeaderFile(om2_model_api.h),原 interface 头默认名由<model>_interface.h改为<model>_internal.h;ProgramGenerator新增GenerateModelApiHeader在生成流程中嵌入固定头内容,interface 头 includeom2_model_api.h,_resources.cpp、_args_manager.cpp、_kernel_reg.cpp、_load_and_run.cpp均改 include<model>_internal.h。 -
移除 codegen 内联 API 声明:删除
InterfaceFileCodeGenerator::BuildExternalApiDecls()及其在ExternBlock("C", ...)中的使用,StablePartId::kInterfaceDumpApis更名kInterfaceInternalTypes,stable_part_provider.cc中对应的大段 dump API 类型字符串定义(load/launch/run 回调结构等)改为仅保留GertModelExternalResources。 -
构建期资源嵌入与编译装配改造:新增 CMake 模板
om2_model_api_resource.cc.in,以GetOm2ModelApiHeader()在构建阶段生成资源源文件并嵌入动态库(program_generator.cc声明并调用该函数);om2_utils.cc抽出可复用的ReplaceInclude辅助函数,CompileGeneratedCppToSo改为同时查找om2_model_api.h与<model>_internal.hartifact,通过 memfd 路径替换 include 后再编译。


/lgtm


/approve


Pull Request
描述
将 OM2 模型对外 API 与每模型内部实现拆分:固定 API 头文件
om2_model_api.h作为代码仓受控的唯一来源,在 ATC 代码生成阶段嵌入并写入 OM2;每模型头文件调整为<model>_internal.h。变更类型
关联的Issue
无。
如何测试
ge_common,验证嵌入资源代码可编译。Om2PackageHelperUt.*:51/51 通过。Om2St.*:48/48 通过。om2_model_api.h与resnet50_internal.h。核对清单
其他信息
固定 API 头以 CMake 在构建阶段生成资源源文件并嵌入动态库,避免 ATC 运行时依赖安装路径上的头文件。