已合并
feat: 校验 deterministic 与 level 一致性 #4247
feat: 校验 deterministic 与 level 一致性 #4247
已合并
ClarkXie创建于 8月3日
ClarkXie成员
8月3日

Pull Request

描述

  • ATC 仅在用户通过命令行或 raw options 显式传入 deterministic_level 时校验一致性。
  • IR 构图仅在 aclgrphBuildInitialize 的全局 options 包含 ge.deterministicLevel 时校验一致性。
  • 显式传入 level=0 时仍执行校验,并保留取值范围检查。

变更类型

关联的Issue

无。

如何测试

核对清单

其他信息

本 PR 相对 develop 仅包含一个提交。

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 ClarkXie 的贡献)
CClarkXie成员
8月3日 创建了 pull request,commit 700695bc
atomgit-bot
atomgit-bot
8月3日 评论:

变更摘要

本 PR 新增了 deterministicdeterministic_level 两个配置项之间的一致性校验逻辑。当用户显式传入 deterministic_level 时(通过命令行、raw options 或 IR 构图的全局 options),系统会校验两者的取值范围以及必须同为 0 或同为非零的约束条件。校验在 ATC 编译(CheckGlobalOptionsBeforeRun)、IR 构图初始化(aclgrphBuildInitialize)以及 GELib::Initialize 三个入口点生效,并补充了对应的单元测试。

主要改动

  • 新增 CheckDeterministicConfigValid 函数option_utils.cc / .h):实现核心校验逻辑——检查 deterministic 取值在 {0, kMaxDeterministic} 范围内、deterministic_level 取值在 {0, kMaxDeterministicLevel} 范围内,且两者必须同时为 0 或同时为非 0,否则返回 PARAM_INVALID 并上报错误。

  • 新增 CheckDeterministicOptionsValid 函数option_utils.cc / .h):从全局 options map 中读取 ge.deterministicLevelge.deterministic 的值,转换为 int32_t 后调用 CheckDeterministicConfigValid 执行校验。仅当 options 中包含 ge.deterministicLevel 时才触发检查。

  • ATC 入口校验main_impl.cc):提取 IsDeterministicLevelExplicitlySet() 函数用于判断用户是否显式设置了 deterministic_level;新增 CheckDeterministicLevelOption() 在 ATC 的 CheckGlobalOptionsBeforeRun() 中被调用,仅当显式设置时才执行一致性校验。

  • IR 构图入口校验ge_ir_build.cc):在 CheckGlobalOptions 中新增对 CheckDeterministicOptionsValid(global_options) 的调用,使得 aclgrphBuildInitialize 时自动执行一致性检查。

  • GELib 初始化入口校验gelib.cc):在 GELib::Initialize 中引入 option_utils.h 头文件,并在 InnerInitialize 前调用 CheckDeterministicOptionsValid(new_options),确保 GE 库初始化时同样执行一致性校验。

likedislike
atomgit-bot
atomgit-bot
8月3日 评论:

代码审查

审查总结

逐文件审查结果:

文件 结果
api/atc/main_impl.cc 无问题
compiler/api/aclgrph/ge_ir_build.cc 无问题
compiler/api/aclgrph/option_utils.cc 无问题
compiler/api/aclgrph/option_utils.h 无问题
compiler/api/gelib/gelib.cc 无问题
tests/ge/ut/ge/graph_ir/ge_ir_build_unittest.cc 无问题
tests/ge/ut/ge/session/atc_raw_options_unittest.cc 1 个 P3 问题

按优先级统计:P3: 1(无 P0/P1/P2 问题)。

整体风险评估:该变更逻辑正确,三条校验路径(ATC CheckDeterministicLevelOption、IR 构图 CheckDeterministicOptionsValid、GELib 初始化 CheckDeterministicOptionsValid)的实现一致且语义清晰。CheckDeterministicConfigValid 的范围检查和一致性检查覆盖了边界条件。测试覆盖了合法/非法输入、范围超限和不一致场景。唯一的轻微瑕疵是 atc_raw_options_unittest.cc 中的一个测试未显式设置 FLAGS_deterministic_level,依赖 TearDown 的全局状态重置,存在跨测试污染的潜在风险——属于低严重度、低置信度的测试健壮性问题,不影响生产代码的正确性。本 PR 可安全合入。

类型 数量
🔴 阻塞 0
🟡 建议 2

💬 仅评论

likedislike
CANN-robotCANN-robot成员
8月3日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
8月3日 评论:

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


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, Mexyy (3/2) 张德鹏 (1/1)

💡 Tip:

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

CLA Signature Pass

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

likedislike
此处折叠了61条消息 查看更多
CClarkXie成员
29 天前 修改了pull request 的描述
CClarkXie成员
29 天前 修改了pull request 的描述
张德鹏成员
28 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
28 天前 添加了label:approved
CANN-robotCANN-robot成员
28 天前 合入了pull request