已合并
feat: add h2d overlapped with compute option #3969
feat: add h2d overlapped with compute option #3969
已合并
GengChao创建于 7月11日
GengChao
GengChao成员
7月11日

20260709评审通过

Pull Request

描述

新增 H2D 与 Compute overlap 的 option 接口部分。

本 PR 只包含第一批上库内容:

  • 新增 GE 编译选项 ge.compile.h2dOverlappedWithCompute
  • 新增 ATC 参数 --h2d_overlapped_with_compute 并传递到 compile options

变更类型

关联的Issue

无

如何测试

  • cmake --build build_ut --target ut_libge_multiparts_utest -j4
  • LSAN_OPTIONS=detect_leaks=0 ./build_ut/tests/ge/ut/ge/ut_libge_multiparts_utest --gtest_filter='AtcRawOptionsUTest.*'

核对清单

其他信息

后续编译期规划、加载执行时实现、example/README 将按批次拆分提交。

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 GengChao 的贡献)
GengChaoGengChao成员
7月11日 创建了 pull request,commit c020c5ee
atomgit-bot
atomgit-bot
7月11日 评论:

变更摘要

此 PR 新增了 H2D 与 Compute 重叠执行的编译选项接口,允许用户通过 ATC 命令行参数 --h2d_overlapped_with_compute 控制在静态 shape 模型上启用输入 H2D 重叠。该选项通过编译期选项 ge.compile.h2dOverlappedWithCompute 传递至 GE 内部,同时明确排除了 OM2 模式及 raw_ge_options 路径的支持,并补充了相应的单元测试覆盖。

主要改动

  • 新增 GE 编译选项常量: 在 ge_common_api_types.h 中定义了 OPTION_H2D_OVERLAPPED_WITH_COMPUTE(值为 "ge.compile.h2dOverlappedWithCompute"),并将其加入 ir_builder_suppported_options 和 global_options 集合,使该选项在 IR 构建和全局选项路径中可被识别。

  • 新增 ATC 命令行参数: 在 atc_flags.cc / atc_flags.h 中定义了 FLAGS_h2d_overlapped_with_compute,支持 0(禁用,默认)、1(启用默认 DP)、边界值和范围值等配置形式。

  • 参数传递与 OM2 限制: 在 main_impl.cc 中,SetAtcJitOptions 函数将 FLAGS_h2d_overlapped_with_compute 写入编译选项 map;同时在 kOm2UnsuppotedFlag 集合中显式排除该参数,确保 OM2 模式下不支持此特性。

  • raw_ge_options 路径不支持: 在 atc_raw_options_unittest.cc 中新增测试用例 H2DOverlappedWithComputeOptionDoesNotUseRawOption,验证 GetRawCliName 对 OPTION_H2D_OVERLAPPED_WITH_COMPUTE 返回空字符串,确认该选项不走 raw_ge_options 路径。

  • 测试环境初始化: 在 atc_utils.h 中声明 FLAGS_h2d_overlapped_with_compute 并在 AtcTest 基类中将其初始化为空字符串,确保测试环境确定性。

likedislike
不准确?
atomgit-bot
atomgit-bot
7月11日 评论:

代码审查

审查总结

审查覆盖的 6 个文件:

文件 结果
api/atc/atc_flags.cc ✅ 无问题
api/atc/atc_flags.h ✅ 无问题
api/atc/main_impl.cc ⚠️ 1 个 P2 问题
inc/graph_metadef/external/ge_common/ge_common_api_types.h ✅ 无问题
tests/framework/ge_running_env/include/ge_running_env/atc_utils.h ✅ 无问题
tests/ge/ut/ge/session/atc_raw_options_unittest.cc ✅ 无问题

按严重度统计:

  • P0: 0
  • P1: 0
  • P2: 1
  • P3: 0

整体风险评估:

低风险。变更范围清晰、模式与现有代码一致:新增了一个 ATC CLI 参数 --h2d_overlapped_with_compute,正确地在 OM2 中禁用、在 raw_ge_options 路径中不支持,并通过 SetAtcJitOptions 传递到 GE 编译选项。ir_option 命名空间中的常量定义、ir_builder_suppported_options 和 global_options 集合的补充均与现有模式一致。测试覆盖了 raw_ge_options 不支持该参数的路径。

唯一需要关注的是:参数值缺少格式校验,仅记录日志而未验证,非法值将静默传递到后续编译管线。建议在后续批次中补充校验逻辑,或至少添加 TODO 注释。

⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。

likedislike
不准确?
CANN-robotCANN-robot成员
7月11日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
7月11日 评论:

CLA Signature Pass

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

likedislike
此处折叠了175条消息 查看更多
zhanj
zhanj成员
7月14日 评论:

/approve

likedislike
王涛成员
7月14日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
7月14日 添加了label:approved
CANN-robotCANN-robot成员
7月14日 关闭了关联的issue
CANN-robotCANN-robot成员
7月14日 合入了pull request