Pull Request已成功合入, 合并人@CANN-robot
(感谢 ClarkXie 的贡献)变更摘要
本 PR 新增了 deterministic 与 deterministic_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.deterministicLevel和ge.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 库初始化时同样执行一致性校验。


代码审查
审查总结
逐文件审查结果:
| 文件 | 结果 |
|---|---|
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 |
💬 仅评论


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
/approveor/lgtm- Commenting
/approveimplies 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. 👍


Pull Request
描述
变更类型
关联的Issue
无。
如何测试
核对清单
其他信息
本 PR 相对 develop 仅包含一个提交。