已合并
支持确定性计算与一致性开关动态生效 #631
ren-botao创建于 7月9日
支持确定性计算与一致性开关动态生效 #631
已合并
ren-botao创建于 7月9日
ren-botao成员
7月9日

描述

现新增 ACL_OPT_DETERMINISTIC 获取的值的定义,新增 2 和 3, 2表示开启强一致性计算,3表示开启batch一致性计算,值是前向包含的
aclnn 框架支持确定性计算与一致性开关算子级动态生效。

关联的Issue

#259

测试

tests/nnopbase/ut/composite_op/test_op_cache.cpp、test_op_executor.cpp、test_tilingctx_builder.cpp 配合上述 4 个动作更新用例。
tests/nnopbase/common/depends/acl/aclrt_stub.cpp 补齐 ACL_OPT_STRONG_CONSISTENCY 桩。

文档更新

不涉及

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 ren-botao 的贡献)
atomgit-bot
atomgit-bot
7月9日 评论:

变更摘要

此 PR 将确定性计算从简单的开关(0/1)扩展为多级确定性模型(level 0-3),支持 ACL runtime 的 ACL_OPT_DETERMINISTIC 与 ACL_OPT_STRONG_CONSISTENCY 组合语义,并实现一致性开关的动态生效。核心改动包括:在 OpConfigInfo 中新增 deterministicLevel_ 字段替代单一的布尔标记;新增 GetDeterministicLevelFromRt() 函数从 runtime 获取确定性等级并兼容老 runtime 的回退逻辑;将 TilingParseCtxHolder::GetDeterministicLevel() 从静态缓存的 call_once 模式改为懒求值,每次从线程局部上下文中读取最新值,使一致性开关可在运行时动态生效。

主要改动

  • OpConfigInfo 结构体扩展:新增 int32_t deterministicLevel_{0} 字段,移除 uint8_t reserved[6] 填充,拷贝构造和赋值运算符同步更新,使确定性的语义从布尔开关扩展为等级值(0=关闭, 1=确定性, 2=强一致性, 3=batch 一致性)。

  • 新增 GetDeterministicLevelFromRt() 函数:在 op_executor.cpp 中封装从 ACL runtime 获取确定性等级的完整逻辑——通过 ACL_OPT_DETERMINISTIC 获取等级值,当返回值为 1 时二次获取 ACL_OPT_STRONG_CONSISTENCY 判断是否应升级为 level 2,兼容仅支持 0/1 返回的老 runtime。

  • OpCache 哈希键更新:AddOpConfigInfoToBuf() 中将参与哈希计算的内容从 isDeterministicOn_(1 字节 bool)改为 deterministicLevel_(4 字节 int32_t),CheckHashBufCapacity 和 OpCacheAdd4Byte 调用同步调整,这导致缓存的哈希长度从 1029 变为 1032。

  • GetDeterministicLevel() 改为懒求值动态生效:在 tiling_parse_ctx_holder.h 中,GetDeterministicLevel() 不再返回构建时预先计算并存储的值,改为每次调用时从 GetThreadLocalContext().opConfigInfo_.deterministicLevel_ 实时读取并写入 DeterministicLevel_,同时将 DeterministicLevel_ 成员标记为 mutable;BuildTilingParseCtx() 中移除了原有的确定性等级计算逻辑和相关常量定义。

  • 测试桩与用例完善:aclrt_stub.cpp 新增 gStrongConsistencyNew 变量及对 ACL_OPT_STRONG_CONSISTENCY 的设置/获取支持;DeterministicTest 用例重写为 5 个子用例,覆盖 level 0/1/2/3 及老 runtime 回退路径(deterministic=1 + consistency=1 → 升级为 2)。

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

代码审查

最终回顾

边界值、热路径成本及已报位置的独立次要缺陷已检查,未发现新增问题。


审查总结

优先级 数量
P0 0
P1 0
P2 0
P3 1

整体风险判断:低风险。本次变更的核心逻辑正确——将确定性级别从布尔切换为多级(0–3)、支持运行时动态读取、并通过惰性求值将级别注入 tiling 上下文。唯一的发现是 GetDeterministicLevel() 继承了 GetDeterministic() 已有的并发写入竞态模式(P3),在实际运行中因所有线程写入相同值而良性。

各文件审查结论:

  • include/nnopbase/opdev/op_config.h — 无问题(补全了此前缺少的 aicNum_/aivNum_ 拷贝,属正向修复)
  • src/nnopbase/common/utils/op_cache.cpp — 无问题(哈希键格式按预期更新)
  • src/nnopbase/composite_op/aclnn_engine/op_executor.cpp — 无问题(GetDeterministicLevelFromRt 与 InitL2Phase1Context 逻辑正确)
  • src/nnopbase/composite_op/aclnn_engine/tiling_parse_ctx_holder.cpp — 无问题(移除确定性级别的一次性初始化,转由惰性求值接管)
  • src/nnopbase/composite_op/aclnn_engine/tiling_parse_ctx_holder.h — 1 个 P3 发现(GetDeterministicLevel() 引入对 mutable 成员的并发写入竞态)
  • tests/nnopbase/common/depends/acl/aclrt_stub.cpp — 无问题(新增 ACL_OPT_STRONG_CONSISTENCY 桩处理)
  • tests/nnopbase/ut/composite_op/test_op_cache.cpp — 无问题(哈希键长度按预期从 1029 更新为 1032)
  • tests/nnopbase/ut/composite_op/test_op_executor.cpp — 无问题(测试覆盖了 level 0–3 及老 runtime 回退路径)
  • tests/nnopbase/ut/composite_op/test_tilingctx_builder.cpp — 无问题(测试断言适配新的惰性求值语义)

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

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

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
include ✅ wangrui_, 王永光, 宋恺 (3/2) ✅ 王永光 (1/1)
repo-cann/opbase ✅ wangrui_, 宋恺 (2/2) ✅ wangrui_, 宋恺 (2/1)

💡 Tip:

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

CLA Signature Pass

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

likedislike
CANN-robot
CANN-robot成员
7月9日 评论:

CLA Signature Pass

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

likedislike
CANN-robotCANN-robot成员
7月9日 将zhou-qilong,wangrui_,rxtfeng,loov1,jia0liang,songkai111,llimwang,gubaocheng设为评审人
CANN-robotCANN-robot成员
7月9日 将zhou-qilong,wangrui_,rxtfeng,loov1,jia0liang,songkai111,llimwang,gubaocheng设为审查人
ren-botao成员
7月9日 评论:

compile

likedislike
CANN-robotCANN-robot成员
7月9日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月9日 评论:

流水线任务触发成功
任务链接 [c4125761e51c436d97e2741524471017][流水线指导]

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
UT_Test ✅ SUCCESS
Compile_Ascend_ARM_ubuntu24 ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
StaticCheck_codespell_check ✅ SUCCESS
StaticCheck_link_validity_check ✅ SUCCESS
StaticCheck_resource_existence_check ✅ SUCCESS
StaticCheck_tag_closed_check ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS
codecheck_style ✅ SUCCESS >>>>>
precommit ❌ FAILED >>>>> >>>>>
likedislike
CANN-robotCANN-robot成员
7月9日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
7月9日 添加了label:ci-pipeline-failed
CANN-robot
CANN-robot成员
7月9日 评论:
流水线 PR-pipeline_cann_opbase#1442 [ commitID:5f43bf3b ] 运行失败
likedislike
Rren-botao成员
7月9日 强制推送  16 个提交:ce6360dc-15 commits from branch master,0d9b23b5-支持确定性计算与一致性开关动态生效
Rren-botao成员
7月9日 强制推送  1 个提交:8b483a46-支持确定性计算与一致性开关动态生效
Rren-botao成员
7月10日 修改了pull request 的描述
Rren-botao成员
7月10日 修改了pull request 的描述
Rren-botao成员
7月10日 修改了pull request 的描述
ren-botao成员
7月10日 评论:

compile

likedislike
CANN-robotCANN-robot成员
7月10日 删除了label:ci-pipeline-failed
CANN-robotCANN-robot成员
7月10日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月10日 评论:

流水线任务触发成功
任务链接 [fb83f3a8bac4435886b57ad5944cbf78][流水线指导]

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
UT_Test ✅ SUCCESS
Compile_Ascend_ARM_ubuntu24 ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
StaticCheck_codespell_check ✅ SUCCESS
StaticCheck_link_validity_check ✅ SUCCESS
StaticCheck_resource_existence_check ✅ SUCCESS
StaticCheck_tag_closed_check ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS
codecheck_style ✅ SUCCESS >>>>>
precommit ✅ SUCCESS >>>>>
API_Check ✅ SUCCESS >>>>>

[2026-07-10 09:57:55]    CI执行结束

likedislike
CANN-robotCANN-robot成员
7月10日 添加了label:api-check-pass
CANN-robotCANN-robot成员
7月10日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
7月10日 添加了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
7月10日 评论:
流水线 PR-pipeline_cann_opbase#1446 [ commitID:8b483a46 ] 已完成
likedislike
Rren-botao成员
7月10日 推送  1 个提交:48d5f4aa-修改:1. OpConfigInfo兼容性问题;2. 获取deterministic相关值时的多线程问题。
CANN-robotCANN-robot成员
7月10日 添加了label:stat/needs-squash
CANN-robotCANN-robot成员
7月10日 删除了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
7月10日 评论:

Notification

This pull request has been changed(code update) or closed, so removes the following label(s): ci-pipeline-passed.

likedislike
CANN-robotCANN-robot成员
7月10日 将zl_hw设为评审人
CANN-robotCANN-robot成员
7月10日 将zl_hw设为审查人
Rren-botao成员
7月11日 推送  1 个提交:e8815c69-修改updateAttr相关用例,删除没有价值的ut用例
ren-botao成员
7月13日 评论:

compile

likedislike
CANN-robotCANN-robot成员
7月13日 删除了label:api-check-pass
CANN-robotCANN-robot成员
7月13日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月13日 评论:

流水线任务触发成功
任务链接 [685caa3f1dfa488aa79ec90d77cff06e][流水线指导]

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
UT_Test ✅ SUCCESS
Compile_Ascend_ARM_ubuntu24 ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
StaticCheck_codespell ✅ SUCCESS
StaticCheck_link_validity ✅ SUCCESS
StaticCheck_resource_existence ✅ SUCCESS
StaticCheck_tag_closed ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS
codecheck_style ✅ SUCCESS >>>>>
precommit ✅ SUCCESS >>>>>
API_Check ✅ SUCCESS >>>>>

[2026-07-13 09:21:10]    CI执行结束

likedislike
CANN-robotCANN-robot成员
7月13日 添加了label:api-check-pass
CANN-robotCANN-robot成员
7月13日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
7月13日 添加了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
7月13日 评论:
流水线 PR-pipeline_cann_opbase#1450 [ commitID:e8815c69 ] 已完成
likedislike
songkai111成员
7月13日 评论:

/lgtm
/approve

likedislike
wangyongguang成员
7月13日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
7月13日 添加了label:approved
RuiWang_成员
7月13日 评论:

/lgtm
/approve

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