已合并
【PR】: 合入多流加权均衡算法 #3812
xionglan2创建于 7月1日
【PR】: 合入多流加权均衡算法 #3812
已合并
xionglan2创建于 7月1日
xionglan2成员
7月1日

Pull Request

描述

请清晰准确地描述本次 Pull Request 的意图和变更内容。

变更类型

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

关联的Issue

如何测试

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

核对清单

其他信息

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

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 xionglan2 的贡献)
Xxionglan2成员
7月1日 添加了label:enhancement
Xxionglan2成员
7月1日 创建了 pull request,commit 0ea6f9a1
CANN-robotCANN-robot成员
7月1日 添加了label:stat/needs-squash
CANN-robotCANN-robot成员
7月1日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
7月1日 评论:

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 zhanj, Mexyy (2/2) zhanj (1/1)

💡 Tip:

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

CLA Signature Pass

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

likedislike
xionglan2成员
7月1日 评论:

compile

likedislike
Xxionglan2成员
7月1日 update merge request[project id: 8824148, iid: 3812, commit_id: 0e33e709480eebfa4e7bb3b41cfdcc2cfa721363] virtual merging success
CANN-robotCANN-robot成员
7月1日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月1日 评论:

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

任务名称状态日志下载链接
pre_comment ✅ SUCCESS >>>>>
Compile_X86_compiler ✅ SUCCESS >>>>> >>>>>
Compile_X86_executor ✅ SUCCESS >>>>> >>>>>
Compile_X86_dflow ✅ SUCCESS >>>>> >>>>>
UT_Test_dflow ✅ SUCCESS
UT_Test_ge_common ✅ SUCCESS
UT_Test_parser ✅ SUCCESS
UT_Test_python ✅ SUCCESS >>>>>
UT_Test_rt ✅ SUCCESS
UT_Test_acl ✅ SUCCESS
UT_Test_autofuse ✅ SUCCESS
UT_Test_executor ✅ SUCCESS
UT_Test_autofuse_ascendc_api ✅ SUCCESS
ST_Test_dflow ✅ SUCCESS
ST_Test_ge_common ✅ SUCCESS
ST_Test_parser ✅ SUCCESS
ST_Test_python ✅ SUCCESS >>>>>
ST_Test_rt ✅ SUCCESS
ST_Test_autofuse ✅ SUCCESS
ST_Test_executor ✅ SUCCESS
ST_Test_hetero ✅ SUCCESS
ST_Test_autofuse_ascendc_api ✅ SUCCESS
ST_Test_autofuse_e2e ✅ SUCCESS
UT_Test_fe ✅ SUCCESS
UT_Test_tefusion ✅ SUCCESS
ST_Test_fe ✅ SUCCESS
ST_Test_tefusion ✅ SUCCESS
ST_Test_ge_common_atc ✅ SUCCESS
UT_Test_Report_graphengine ✅ SUCCESS >>>>>
UT_Test_Report_ge_executor_c ✅ SUCCESS >>>>>
UT_Test_Report_ge_autofuse ✅ SUCCESS >>>>>
ST_Test_Report_graphengine ✅ SUCCESS >>>>>
ST_Test_Report_ge_executor_c ✅ SUCCESS >>>>>
ST_Test_Report_ge_autofuse ✅ SUCCESS >>>>>
UT_Test_Report_fe ✅ SUCCESS >>>>>
ST_Test_Report_fe ✅ SUCCESS >>>>>

[2026-07-01 16:42:18]    CI执行结束

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

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

任务名称状态日志下载链接
pre_comment ✅ SUCCESS >>>>>
Compile_ARM_compiler ✅ SUCCESS >>>>> >>>>>
Compile_ARM_executor ✅ SUCCESS >>>>> >>>>>
Compile_ARM_dflow ✅ SUCCESS >>>>> >>>>>
API_Check ✅ SUCCESS >>>>>
PreSmoke_A900_npupool ✅ SUCCESS >>>>>

[2026-07-01 16:36:20]    CI执行结束

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

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

任务名称状态日志下载链接
codecheck_Pr ✅ SUCCESS
codecheck ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
codecheck_dt ✅ SUCCESS >>>>>
codecheck_precommit ✅ SUCCESS >>>>>
StaticCheck_codespell_check ✅ SUCCESS
StaticCheck_link_validity_check ✅ SUCCESS
StaticCheck_resource_existence_check ✅ SUCCESS
StaticCheck_tag_closed_check ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS

[2026-07-01 16:35:04]    CI执行结束

likedislike
atomgit-bot
atomgit-bot
7月1日 评论:

变更摘要

此 PR 引入了一个新的多流加权均衡合并算法(WeightedStreamMerger),作为现有流合并策略的扩展。当 StreamMergeStrategy 配置为 kWeightedLoadBalance 时,ByPathCoverCore 将使用 WeightedStreamMerger 替代原有的 StreamMerger。新算法基于贪心调度框架,综合考虑节点执行时间、AIV/AIC 资源核数、跨流依赖边数目和历史流分布等因素,通过 LiteScore 评分函数评估每个逻辑流分配到物理流的代价,并支持修复移动(repair moves)和重仿真(resimulation)来优化最终排布。配套增加了配置解析对 "WeightedLoadBalance" 策略字符串的支持,以及完整的单元测试、系统测试和白盒测试覆盖。

主要改动

  • 新增 WeightedStreamMerger 类及其求解器:在 dag_weighted_stream_merger.h/cc 中定义了 WeightedStreamMergerWeightedStreamMergeOptions 及内部的 WeightedStreamMergeSolver 类,实现了按层级贪心分配、LiteScore 多维评分(事件局部性、时间冲突、时间负载、新流惩罚)、修复移动和基于仿真的候选择优等核心算法逻辑。

  • dag_stream_allocator.cc 中引入策略分支ByPathCoverCore 函数在 config.merge_strategy == kWeightedLoadBalance 时构造 WeightedStreamMergeOptions 并调用 WeightedStreamMerger::Merge,原有 StreamMerger 路径保持不变,实现了新算法与现有策略的无缝切换。

  • dag_stream_allocator_pass.cc 增加 "WeightedLoadBalance" 解析ParseStreamConfig 函数中新增对 "WeightedLoadBalance" 字符串的识别,将其映射为 StreamMergeStrategy::kWeightedLoadBalance,使该策略可通过 ge.autoMultistreamParallelMode 配置项启用。

  • 新增 WeightedStreamMergeOptions 配置结构:定义了 physical_stream_limitwindow_widthcandidate_limitlight_stream_limitrepair_movesresim_candidate_limit 以及多组评分权重参数,均提供合理的默认值,并附带完整的参数校验逻辑。

  • 全面测试覆盖:新增 5 个测试文件(dag_weighted_stream_merger_test.ccdag_weighted_stream_merger_whitebox_test.ccdag_weighted_stream_merger_public_st_test.cc 等),覆盖正常图(菱形图、跨流依赖图、独立节点图)、异常输入(空路由、重复节点、越界索引、环路、无效参数)、极端资源值、以及白盒级别的内部辅助方法验证。

likedislike
不准确?
CANN-robotCANN-robot成员
7月1日 添加了label:api-check-pass
CANN-robotCANN-robot成员
7月1日 删除了label:api-check-pass
CANN-robotCANN-robot成员
7月1日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
7月1日 添加了label:ci-pipeline-passed
atomgit-bot
atomgit-bot
7月1日 评论:

代码审查

我已经完成了对所有 13 个变更文件的逐一审查。下面是我的总结:


审查总结

变更文件审查结果

文件 审查结果
compiler/CMakeLists.txt 无问题
compiler/graph/build/dag/dag_stream_allocator.cc 无问题
compiler/graph/build/dag/dag_weighted_stream_merger.cc P3 × 1(不可达代码)
compiler/graph/build/dag/dag_weighted_stream_merger.h P3 × 1(未使用字段)
compiler/graph/build/stream/dag_stream_allocator_pass.cc 无问题
tests/ge/st/testcase/CMakeLists.txt 无问题
tests/ge/st/testcase/graph/build/dag/dag_stream_allocator_pass_test.cc 无问题
tests/ge/st/testcase/graph/build/dag/dag_weighted_stream_merger_public_st_test.cc 无问题
tests/ge/ut/ge/CMakeLists.txt 无问题
tests/ge/ut/ge/graph/build/dag/dag_stream_allocator_pass_ut_test.cc 无问题
tests/ge/ut/ge/graph/build/dag/dag_stream_allocator_test.cc 无问题
tests/ge/ut/ge/graph/build/dag/dag_weighted_stream_merger_test.cc 无问题
tests/ge/ut/ge/graph/build/dag/dag_weighted_stream_merger_whitebox_test.cc 无问题

按优先级统计

  • P0: 0
  • P1: 0
  • P2: 0
  • P3: 2

整体风险评估

低风险。 此次变更新增了多流加权均衡算法(WeightedLoadBalance),整体实现质量较好。核心算法逻辑(WeightedStreamMergeSolver)设计合理,包含了完整的图构建、拓扑排序、贪心分配、修复移动和模拟评估等环节。边界条件处理较为周全(如空路由、环检测、外部节点、极端 cost 值等)。测试覆盖也较为全面,包含公开接口测试、白盒单元测试和集成测试。

发现的 2 个 P3 问题均为代码整洁性/可维护性相关:5 个未使用的权重字段和 1 处不可达的错误检查分支,均不影响正确性和运行时行为。

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

likedislike
不准确?
夏国正成员
7月3日 评论:

【MR评价】评价分数:3.3,
评价意见:
编码规范遵守度:无编码规范问题;
代码设计:新增加权均衡流分配算法、代码设计良好;
DT质量:基本逻辑DT测试覆盖充足;

likedislike
夏国正成员
7月3日 评论:

/lgtm

likedislike
zhanj
zhanj成员
7月3日 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
7月3日 添加了label:lgtm
zhanj
zhanj成员
7月4日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
7月4日 添加了label:approved
CANN-robotCANN-robot成员
7月4日 合入了pull request
夏国正成员
7月6日 关联了issue:[RFC]: GE框架静态shape多流新增加权算法和自动择优能力;动态shape接入DAG多流算法