Pull Request已成功合入, 合并人@CANN-robot
(感谢 xionglan2 的贡献)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
/approveor/lgtm- Commenting
/approveimplies 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. 👍


流水线任务触发成功
任务链接 [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执行结束


流水线任务触发成功
任务链接 [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执行结束


流水线任务触发成功
任务链接 [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执行结束


变更摘要
此 PR 引入了一个新的多流加权均衡合并算法(WeightedStreamMerger),作为现有流合并策略的扩展。当 StreamMergeStrategy 配置为 kWeightedLoadBalance 时,ByPathCoverCore 将使用 WeightedStreamMerger 替代原有的 StreamMerger。新算法基于贪心调度框架,综合考虑节点执行时间、AIV/AIC 资源核数、跨流依赖边数目和历史流分布等因素,通过 LiteScore 评分函数评估每个逻辑流分配到物理流的代价,并支持修复移动(repair moves)和重仿真(resimulation)来优化最终排布。配套增加了配置解析对 "WeightedLoadBalance" 策略字符串的支持,以及完整的单元测试、系统测试和白盒测试覆盖。
主要改动
-
新增
WeightedStreamMerger类及其求解器:在dag_weighted_stream_merger.h/cc中定义了WeightedStreamMerger、WeightedStreamMergeOptions及内部的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_limit、window_width、candidate_limit、light_stream_limit、repair_moves、resim_candidate_limit以及多组评分权重参数,均提供合理的默认值,并附带完整的参数校验逻辑。 -
全面测试覆盖:新增 5 个测试文件(
dag_weighted_stream_merger_test.cc、dag_weighted_stream_merger_whitebox_test.cc、dag_weighted_stream_merger_public_st_test.cc等),覆盖正常图(菱形图、跨流依赖图、独立节点图)、异常输入(空路由、重复节点、越界索引、环路、无效参数)、极端资源值、以及白盒级别的内部辅助方法验证。


代码审查
我已经完成了对所有 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 处不可达的错误检查分支,均不影响正确性和运行时行为。
⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。


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


/lgtm


/approve


Pull Request
描述
请清晰准确地描述本次 Pull Request 的意图和变更内容。
变更类型
请选择本次引入的变更类型:
关联的Issue
如何测试
描述测试此变更的步骤和前提条件:
1.
2.
核对清单
其他信息
在此添加任何其他关于本次 PR 的说明。