已合并
【feat】: OM2兼容性修改struct重命名和类型调整、OM2 的pbody 内部申请workspace内存、om2 executor支持资源申请 #4647
lidaoming1创建于 8月31日
【feat】: OM2兼容性修改struct重命名和类型调整、OM2 的pbody 内部申请workspace内存、om2 executor支持资源申请 #4647
已合并
lidaoming1创建于 8月31日
lidaoming1成员
8月31日

Pull Request

描述

feat: OM2兼容性修改struct重命名和类型调整
feat: OM2 的pbody 内部申请workspace内存
feat: OM2 支持外部查询资源配置及申请

变更类型

请选择本次引入的变更类型:

关联的Issue

如何测试

描述测试此变更的步骤和前提条件:
1.
2.

核对清单

其他信息

在此添加任何其他关于本次 PR 的说明。

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 lidaoming1 的贡献)
Llidaoming1成员
8月31日 添加了label:enhancement
Llidaoming1成员
8月31日 创建了 pull request,commit 351c3d97
atomgit-bot
atomgit-bot
8月31日 评论:

变更摘要

本 PR 为 OM2 executor 增加「资源申请」能力:模型加载时允许由外部传入 rt_model、stream、event、label、notify 等资源(通过新增的 GertModelExternalResources 结构体与 GertModelLoadConfig 扩展字段下发),并将工作内存的分配从 executor 侧下沉到 codegen 生成的 pbody 中(支持 reuse_zero_copy 零拷贝复用);同时将 dump/profiling 相关的公共数据结构由 Om2Task* 全面更名为 GertModel*(如 GertModelTaskDesc、GertModelArgKind),并新增一组资源查询 API(GertModelGetStreamNum 等)。此外还修复了 C++ 发射器对 switch/case 语句体的缩进处理。

主要改动

  • 外部资源注入支持: 在 GertModelLoadConfig 中新增 external_rt_model、external_streams、external_events、external_labels、external_notifies 及各自数量字段,Om2Model::InitResources 签名扩展为接收 reuse_zero_copy 与 const GertModelExternalResources &;codegen 的 BuildInitStreamResources/BuildInitNotifyResources/BuildInitEventResources/BuildInitLabelResources 在外部资源数量非 0 时改用外部资源(并校验数量一致),ReleaseResources 通过新增的 is_external_rt_model_、is_external_streams_、is_external_notifies_、is_external_events_、is_external_labels_ 标志跳过对外部资源的销毁,避免重复释放。
  • 工作内存分配下沉至 codegen: 移除 executor 侧的 PrepareWorkPtr,GertModelLoadConfig.work_ptr 直接透传(可为空);codegen 在 InitResources 中新增 kModelWorkSize/kModelZeroCopySize 常量,按 reuse_zero_copy 计算 required_work_size,在 work_ptr 为空时自行调用 AclrtMallocHelper 分配,并用 owns_total_dev_mem_ 记录归属以便在 ReleaseResources 中释放;om2_codegen_model_builder.cc 读取 ATTR_MODEL_ZERO_COPY_MEMORY_SIZE 到 RuntimeResourceSemantic.zero_copy_size,并校验其不超过 total_mem_size。
  • 公共结构体更名与接口收敛: Om2TaskInfo→GertModelTaskDesc、Om2TaskIoEntry→GertModelTaskIoEntry、Om2L0TaskRawInfo→GertModelTaskRawInfo、Om2L0ArgSlotInfo→GertModelArgSlotInfo、Om2L0ArgKind→GertModelArgKind(改为 uint64_t 枚举并新增 GERT_MODEL_ARG_INVALID_KIND),GertModelCallbacks→GertModelLoadCallbacks,字段 l0_exception_dump_info→task_raw_info;同时移除接口头中的弱符号 ReportDfxTaskPreprocess/ReportDfxTaskPostprocess 声明及 codegen 侧的 ReportOm2TaskPreprocess/ReportLaunchedOm2Task 辅助函数,GertModelLoad/GertModelRun/GertModelRunAsync/GertModelUnload 返回类型统一由 int 改为 int32_t。
  • 新增资源查询 API: 在 LoadAndRunFileCodeGenerator 中新增 BuildQueryResourceApis,以 extern "C" 导出 GertModelGetStreamNum、GertModelGetStreamDesc、GertModelGetEventNum、GertModelGetEventDesc、GertModelGetLabelNum、GertModelGetNotifyNum、GertModelGetNotifyDesc,按 codegen 模型运行时语义返回各资源数量与 flag 描述;AclrtMalloc 辅助函数由 load/run 文件生成器移至 InterfaceFileCodeGenerator 并改为 inline。
  • C++ 发射器 switch/case 缩进修复: cpp_emitter.cc 的 Emit(BlockStmt) 增加 in_case_body 状态,对 CaseStmt 所在的语句块按 case 层级增减缩进,保证 switch(含嵌套 switch)生成代码的缩进正确。
likedislike
不准确?
atomgit-bot
atomgit-bot
8月31日 评论:

🤖 AI Code Review

⚠️ 审查未能完成

本次代码审查未能完成,可能是临时性故障。

你可以在评论区输入 /ai review 重新发起审查。若多次失败,请联系管理员并附上下方追踪 ID。

追踪 ID: task-238581-run-226088

likedislike
不准确?
CANN-robotCANN-robot成员
8月31日 添加了label:cann-cla/yes
CANN-robotCANN-robot成员
8月31日 添加了label:stat/needs-squash
CANN-robot
CANN-robot成员
8月31日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

✅ Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-cann/ge ✅ yangyongqiang0606, ClarkXie (2/2) ✅ yangyongqiang0606 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

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

likedislike
CANN-robotCANN-robot成员
8月31日 将yangyongqiang0606,kobemini,ClarkXie,tangqunzhang,xchu42,hugo111,lining23666,fu-jun2,depeng1994,wqtshg_wt,peiyang,shengnan666,zhangfan_hanq,zhanj,zhujingjing,Mexyy,wangxiaotian995,stevenaw0,yuht9设为评审人
CANN-robotCANN-robot成员
8月31日 将yangyongqiang0606,kobemini,ClarkXie,tangqunzhang,xchu42,hugo111,lining23666,fu-jun2,depeng1994,wqtshg_wt,peiyang,shengnan666,zhangfan_hanq,zhanj,zhujingjing,Mexyy,wangxiaotian995,stevenaw0,yuht9设为审查人
lidaoming1成员
8月31日 评论:

compile

likedislike
Llidaoming1成员
8月31日 预合并成功(commit_id: 696484dd133fa65e52abb5e8400debc2f854be43)
CANN-robotCANN-robot成员
8月31日 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
8月31日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
8月31日 添加了label:ci-pipeline-failed
lidaoming1成员
8月31日 评论:

compile

likedislike
CANN-robotCANN-robot成员
8月31日 删除了label:ci-pipeline-failed
此处折叠了7条事件消息 查看更多
CANN-robotCANN-robot成员
8月31日 添加了label:cann-cla/yes
lidaoming1成员
8月31日 评论:

compile

likedislike
Llidaoming1成员
8月31日 预合并成功(commit_id: acb1e172cf0c421a96cb3c00628b00454d2c1d7e)
CANN-robotCANN-robot成员
8月31日 删除了label:ci-pipeline-failed
CANN-robotCANN-robot成员
8月31日 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
8月31日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
8月31日 添加了label:ci-pipeline-passed
ClarkXie
ClarkXie成员
8月31日 评论:

/lgtm

likedislike
Llidaoming1成员
8月31日 修改了pull request 的描述
Llidaoming1成员
8月31日 修改标题为 “【feat】: OM2兼容性修改struct重命名和类型调整、om2 executor支持资源申请”,原标题为“【feat】: om2 executor支持资源申请”
Llidaoming1成员
8月31日 修改标题为 “【feat】: OM2兼容性修改struct重命名和类型调整、OM2 的pbody 内部申请workspace内存、om2 executor支持资源申请”,原标题为“【feat】: OM2兼容性修改struct重命名和类型调整、om2 executor支持资源申请”
yangyongqiang
yangyongqiang成员
8月31日 评论:

/lgtm

likedislike
yangyongqiang
yangyongqiang成员
8月31日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
8月31日 添加了label:lgtm
CANN-robotCANN-robot成员
8月31日 添加了label:approved
CANN-robotCANN-robot成员
8月31日 合入了pull request