Pull Request已成功合入, 合并人@CANN-robot
(感谢 Jett_Woo 的贡献)变更摘要
本次变更由 develop 同步至 master,主要围绕 IndirectLoad(间接加载)的 SIMT 存储寻址能力与表达式解析能力进行功能增强。核心是引入「非连续 Store 目标寻址」:在 SimtOutputChainMetadata/SimtOutputChain 中新增 target_sizes、target_strides、target_offset 字段,并新增 IndirectLoadStoreKind 分类与 ClassifyIndirectLoadStoreTarget、StoreTargetsFitUint32 等判定,使 SIMT Store 体能够按输出轴逐维折叠坐标(offset + Σ coord×stride)而非仅依赖线性 output_index;同时收紧调度候选门控与评分。此外还修复了 AxesReorder 求解器二分返回前未提交解值的问题,并让 Max/Min/LogicAnd/LogicOr 表达式解析支持变参形式。
主要改动
- SIMT Store 目标寻址扩展: 新增
BuildSimtStoreTargetOffsetExpr与SimtOutputChain的target_sizes/target_strides/target_offset字段,当尾部 Store 目标视图与逻辑输出视图同 rank 同 sizes 但 strides 不同(切片 /cat输出切片)时,改为按轴折叠坐标(offset + Σ coord×stride);仅在目标为 dense 零偏移布局时才保留原有 MTE 快速搬运路径。 - Store 目标布局分类与门控: 在
indirect_load_utils中新增IndirectLoadStoreKind(kDense/kSliceStrided/kUnsupported)与ClassifyIndirectLoadStoreTarget、StoreTargetsFitUint32,并在调度用例生成器中通过ValidateOutputStoreTargets/ClassifyStoreTargetAndGate对候选合法性进行门控,SK 模板对kSliceStrided恒拒绝。 - SIMT/SIMD 候选评分偏好: 新增
LowersToStridedSimdFacade判定与常量kSimtStridedFallbackScore,当 SIMD 候选退化到逐元素 strided facade 时,为同组 SIMT 候选加分(GenerateScoreFunc新增simd_lowers_to_strided参数),embedding 之外的动态 shape 场景下 SIMT 得分将严格高于 SIMD。 - AxesReorder 求解器解值提交修复: 在
BinarySearchWithAlignment与GenBinarySearchEqualPriorityAxesWithDualThreshold生成代码中,二分求解成功后补充vars[i]->SetValue(result),并在GenBinaryLocalBufTilingFinalCheck中按是否启用 equal order 生成不同的LOCAL_BUFFER约束回退分支。 - 表达式解析支持变参:
ExprParser的ParserMaxFunction/ParserMinFunction/ParserLogicalAnd/ParserLogicalOr改为按逗号循环收集任意数量参数(Max/Min从左折叠),并新增expression_variadic_parser_unittest.cc覆盖 N 参与单参情形。
(另配套新增 IL_CASE_STRIDED_STORE、IL_USER_EMBEDDING_SLICE 端到端用例与 scripts/test/run_autofuse_test.sh 中对应的 backend 用例项,以及 ReduceMinExtend RA 复用源场景的 guard 测试与 reduce_common_ra_reuse_align_3510_impl.h 中掩码处理调整。)


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.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| repo-cann/graph-autofusion | ✅ yangyongqiang0606, liyuewei, zhang_shengjie (3/2) | ✅ yangyongqiang0606 (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
Jett_Woo, thanks for your pull request. All authors of the commits have signed the CLA. 👍


| 🚀 CI 流水线已启动 |
|---|
| 📋 执行详情: 点击查看流水线 |


流水线分析报告 — graph-autofusion run#3806
流水线: https://gitcode.com/CANN/graph-autofusion/actions/runs/872ade37011145b79bd15e629d8ad04f | PR#2612 | 2026-10-22 11:48:32 ~ 2026-10-22 12:45:02 | 失败 Job 2 个
定界结论: 环境问题 / Runner机器异常 — UT 编译途中被平台异常终止(CP.COMP1001), 非代码问题
- 失败类型: 环境问题(可重试验证)
- 根因: 两个 UT Job 在编译阶段无任何报错即被异常终止, 平台(CloudPipeline)随后报 CP.COMP1001 内部错误(Unsupported system retry)。整个执行过程无编译错误、无测试失败, 与 PR 代码变更无关。
- 处置建议: ① 直接重新触发流水线(平台侧瞬时异常, 大概率恢复); ② 重试仍失败 → 联系 CloudPipeline 项目组支持人员(CP.COMP1001 属平台内部错误)。
- 排除项: 已逐行核查 UT 步骤日志(两个 Job 各约 5.2 万行), 无 FAILED/error/fatal/断言失败等任何真实构建错误, 日志中仅有 CANN 头文件弃用告警 note(非错误), 排除代码问题与 LLT 编译/测试失败。
失败根因分析
根因 #1: 环境问题 / Runner机器异常 — CP.COMP1001 平台内部错误, Job 执行中异常终止
-
判据: 平台内部错误(CP错误码, runner 调度/资源异常)
-
定位步骤:
0_初始化步骤.log/4_ut.log -
影响 Job: UT, UT(两个 UT Job 同因)
-
证据链(两个 Job 完全同模式, 分别运行于 cce_x86_runner_xlarge 机组的不同 Pod):
- UT 步骤正常启动并编译: pip 依赖安装、gcc-15 环境准备、autofuse 测试代码编译均正常推进;
- 日志无任何报错戛然而止: Job1 止于 12:06:28、Job2 止于 12:09:28, 最后一行均为编译期弃用告警 note(非错误), 此前 5 万余行无一条 error/FAILED;
- 后续步骤(ut_cov 覆盖率 / upload 上传 / 后处理)日志全部为空, 说明 Job 在编译阶段即被强制终止, 未走到产物阶段;
- 平台随后释放 runner 并报 CP.COMP1001 内部错误。
-
根因证据(日志原文):
[2026-10-22 12:13:05.175+08:00] [ERROR] [server] - [CP.COMP1001][Description] 内部错误。[Description_en] Internal error.(addition_en) Unsupported system retry, job_run_id: 18d0e7a2040a491fb031eaa235e9d746_1562795497532297217, business_type: codearts_pipeline[RootCause] 可能由于代码逻辑错误、资源不足、或者其他内部因素导致。[Solution] 联系Cloudpipeline项目组支持人员。
[2026-10-22 12:06:28.714+08:00] /home/jenkins/Ascend/cann-9.3.0/include/exe_graph/runtime/tensor.h:14:111: note: '#pragma message: Warning: tensor.h is deprecated and will be removed after 2027-06. Include "runtime_tensor.h" instead.'
(—— UT 日志最后一行, 此后中断; 该行为编译告警 note, 非错误)
结构化定界摘要
[{"repo": "graph-autofusion", "run_number": 3806, "Failed_Type": "环境问题",
"Failed_Sub_Type": "Runner机器异常",
"Failed_Reason": "两个 UT Job 在编译阶段被平台异常终止: UT 步骤日志(约5.2万行)无任何编译/测试错误即戛然而止, 覆盖率/上传/后处理步骤全部为空, 平台随后报 CP.COMP1001 内部错误(Unsupported system retry)。与 PR 代码变更无关。",
"evidence": "[2026-10-22 12:13:05.175+08:00] [ERROR] [server] - [CP.COMP1001][Description] 内部错误。[Description_en] Internal error.(addition_en) Unsupported system retry, job_run_id: 18d0e7a2040a491fb031eaa235e9d746_1562795497532297217, business_type: codearts_pipeline",
"suggestion": "平台/Runner侧异常, 直接重新触发流水线验证; 重试仍失败则联系 CloudPipeline 项目组支持人员。",
"jobs": "UT, UT"}]
由门禁失败定界分析自动生成 | repo: graph-autofusion | run: 872ade37011145b79bd15e629d8ad04f | PR#2612


| 🚀 CI 流水线已启动 |
|---|
| 📋 执行详情: 点击查看流水线 |


流水线分析报告 — graph-autofusion run#3810
流水线: https://gitcode.com/cann/graph-autofusion/actions/runs/1ac0417eb80f4aec8e70e1783aee8a8e | PR#2612 | 2026-10-22 12:52:10 ~ 13:46:34 | 失败 Job 2 个
定界结论: 环境问题 ×2(与 PR 代码无关, 可重试)
- 失败类型: 环境问题(两个失败 Job 均为 runner/资源侧异常, 日志中无任何代码级编译错误或测试断言失败)
- 根因 #1
UT/JOB_ST_TEST_autofuse_framework_0:make -j并行编译期间 8 个 cc1plus 编译进程接连被 SIGKILL 强杀(内存耗尽特征)→ 环境问题/内存不足 - 根因 #2
UT/JOB_UT_TEST_autofuse_ascendc_api_0: 构建日志零报错于编译中途静默截断, job 回收时平台报 CP.COMP1001 内部错误(Unsupported system retry)→ 环境问题/Runner机器异常 - 处置建议: ① 直接重新触发流水线(平台资源类异常, 大概率恢复); ② 若重试后 OOM 仍复现, 转 CI 维护者——
cce_x86_runner_xlarge弹性 pod 内存规格对 UT/ST 并行编译吃紧, 需增大内存限额或降低编译并行度 - 排除项: 被杀编译单元(
autofuse/v35/optimize/*)均非本 PR 变更文件; 下游UT_report/ST_report/PreSmoke_A2为级联未启动(INIT), 不算独立失败; 其余 32 个 Job(含全部 Compile/CodeCheck/SCA)全部通过
失败根因分析
根因 #1: 环境问题 / 内存不足 — cc1plus 编译进程被 SIGKILL(OOM)
- 影响 Job: UT(identifier:
JOB_ST_TEST_autofuse_framework_0, 耗时 22min) - 判据: 编译器进程被强杀(判据库 环境问题/内存不足; SIGKILL 杀 cc1plus 为内核 OOM killer 典型指纹)
- 定位:
4_ut.logL52210~L52401(13:16:58 ~ 13:17:06, 8 个编译单元接连被杀) - 根因证据(日志原文):
[2026-10-22 13:16:58.982+08:00] g++: fatal error: Killed signal terminated program cc1plus
[2026-10-22 13:16:58.982+08:00] compilation terminated.
[2026-10-22 13:16:58.982+08:00] make[3]: *** [autofuse/tests/CMakeFiles/optimize.dir/build.make:944: autofuse/tests/CMakeFiles/optimize.dir/__/v35/optimize/platformv2.cpp.o] Error 1
[2026-10-22 13:17:00.366+08:00] g++: fatal error: Killed signal terminated program cc1plus
[2026-10-22 13:17:00.366+08:00] make[3]: *** [autofuse/tests/CMakeFiles/optimize.dir/build.make:930: autofuse/tests/CMakeFiles/optimize.dir/__/v35/optimize/partition/vector_func_partitioner.cpp.o] Error 1
...(共 8 组, 另涉及 v35/optimize 分区/平台相关编译单元)
[2026-10-22 13:17:31.268+08:00] execute command: make -j autofuse pyautofuse failed.
[2026-10-22 13:17:31.268+08:00] Run autofuse_framework all_st failed.
[2026-10-22 13:17:31.326+08:00] ::error::Process exited with code 1
- 论证: 全日志(5.3 万行)中不存在任何语法/头文件/链接级代码错误; 唯一失败信号是并行编译下编译器进程被系统强杀后 make 汇总报错——
compilation terminated.只是果, 前一行Killed signal terminated program cc1plus才是因。被杀目标均为存量框架源(autofuse/v35/optimize/), 与 PR#2612 变更文件(att 生成器/indirect_load/expr_parser 等 20 个文件)无交集。
根因 #2: 环境问题 / Runner机器异常 — CP.COMP1001 平台内部错误, 日志静默截断
- 影响 Job: UT(identifier:
JOB_UT_TEST_autofuse_ascendc_api_0, 耗时 24min) - 判据: 平台内部错误 CP.COMP1001(判据库 环境问题/Runner机器异常; 同指纹先例: "UT 任务被平台资源错误中途杀死: CP.COMP1001 内部错误(不支持系统重试)")
- 定位:
4_ut.log末行(13:16:24)+0_初始化步骤.log末行(13:19:05) - 根因证据(日志原文):
[2026-10-22 13:16:24.015+08:00] /home/jenkins/Ascend/cann-9.3.0/include/exe_graph/runtime/tensor.h:14:111: note: '#pragma message: Warning: tensor.h is deprecated ...'
(↑ 4_ut.log 最后一行: 正在编译 optimize/task_generator/simt_boundary_sync.cpp, 此后日志戛然而止, 全日志 0 条错误行; 5_ut_cov/6_upload/7_后处理 步骤全部为空)
[2026-10-22 13:19:05.185+08:00] [ERROR] [server] - [CP.COMP1001][Description] 内部错误。[Description_en] Internal error.(addition_en) Unsupported system retry, job_run_id: a510911a602c4e9a8ba5a0173e033e19_1562811027576197121, business_type: codearts_pipeline
- 论证: 构建进行中被平台侧异常终止——末条日志(13:16:24)到 job 回收(13:19:04)间约 2.5 分钟 runner 无任何输出, 随后平台报 CP.COMP1001 并释放弹性资源。日志中无真实构建错误, 平台内部错误兜底定界。与根因 #1 同时间窗口(13:16~13:19)、同 runner 集群(
cce_x86_runner_xlarge), 不排除同节点资源压力连带。
结构化定界摘要
[
{
"repo": "graph-autofusion",
"run_number": 3810,
"Failed_Type": "环境问题",
"Failed_Sub_Type": "内存不足",
"Failed_Reason": "[内存不足]: ST autofuse_framework 测试 make -j 并行编译时 8 个 cc1plus 编译进程被 SIGKILL 强杀(内存耗尽), 全日志无任何代码级编译错误",
"evidence": "[2026-10-22 13:16:58.982+08:00] g++: fatal error: Killed signal terminated program cc1plus",
"suggestion": "环境问题: 平台资源类可重试——直接重新触发流水线; 若 OOM 复现转 CI 维护者(增大 runner 内存限额或降低编译并行度)",
"jobs": "UT(JOB_ST_TEST_autofuse_framework_0)"
},
{
"repo": "graph-autofusion",
"run_number": 3810,
"Failed_Type": "环境问题",
"Failed_Sub_Type": "Runner机器异常",
"Failed_Reason": "[Runner机器异常]: UT autofuse_ascendc_api 日志零报错于编译中途静默截断, job 回收时平台报 CP.COMP1001 内部错误(Unsupported system retry), runner 被平台侧异常终止",
"evidence": "[2026-10-22 13:19:05.185+08:00] [ERROR] [server] - [CP.COMP1001][Description] 内部错误。...(addition_en) Unsupported system retry, job_run_id: a510911a602c4e9a8ba5a0173e033e19_1562811027576197121",
"suggestion": "环境问题: 平台内部错误可重试——直接重新触发流水线; 持续复现则联系 CloudPipeline/CI 维护者排查 cce_x86_runner_xlarge 弹性资源",
"jobs": "UT(JOB_UT_TEST_autofuse_ascendc_api_0)"
}
]
由门禁失败定界分析自动生成 | repo: graph-autofusion | run: 1ac0417eb80f4aec8e70e1783aee8a8e | PR#2612


| 🚀 CI 流水线已启动 |
|---|
| 📋 执行详情: 点击查看流水线 |


/lgtm


/lgtm


/approve


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