Repository navigation
Description
最新进展(2026-11-11)
状态:功能已完成,保持 CLOSED / completed。 原生 Graph 由 #2864 交付;本次补记后续 main 增量,原验收和历史测量仍归原版本。
- Add: support explicit predecessors on HBG Graph invocations #2869(
355ce3015):Graph invocation 支持显式前驱,前驱归 outer task,不进入 Definition 身份;覆盖冷录制、在途复用、缓存命中及自依赖拒绝。 - Fix: count admitted HBG Graph definition keys once #2930(
612ada381):按 distinct key 计算已发布与 inflight Definition 的准入容量,修复重复计数;PR 记录八个相关 CPU 目标通过,无新增硬件/模型性能测量。 - Add: support nonblocking defer_wait in A5 HBG #2967(
d24e9990c):已交付单层 native Graph 内的 COUNTER/默认单队列 SDMA deferred completion,具体任务形状和后端限制见 [Feature] A5 HBG AICore 调度:支持异步任务 deferred completion #2832。 - Refactor: simplify A5 HBG scheduling and compact shared state #2989(
143050346):Host 静态 DAG CSR/Device remaining 依赖传播、共享状态压缩和当前 v10/v11 诊断合同已合入,普通/Graph/异步完成继续共用完成协议。
当前边界: 多 block/MIX predicate 仍由 #2831 跟踪,resident early dispatch 由 #2867 跟踪;本项完成不等于全部组合或 legacy 清理完成。#2869/#2930/#2967/#2989 均已核实包含于 main 0569c7796b86。本次只核对已有交付与证据,未新跑产品测试。
以下保留 #2864 当时的交付范围与测量;其中显式前驱、异步等旧限制以本节后续交付为准。
Summary
为 A5 host_build_graph 的 AICore resident Scheduler 补齐 Graph body 原生调度能力,使含 Graph 调用的任务图能够在 AICore 调度路径上执行并完成依赖释放,无需因 Graph body 整轮回退 legacy AICPU Scheduler。
父 Issue:#2667。沿用该工作线负责人 @poursoul;已有实现与在途 PR 应复用并在本项汇总,不另建竞争实现。
功能完成结论(2026-11-04)
Graph body 原生执行已合入 main,约定支持范围内的功能验收完成,按 #2667 的功能交付口径关闭本项。 负责人继续为 @poursoul。性能验证与退化披露属于功能开发的质量保障;后续性能优化继续跟进,不以性能优化全部收口作为本功能 Issue 的关闭条件。
- 实现 PR:Add: support native A5 HBG Graph tasks with shared ready queues #2864;合入提交
bd131362e79b。PR 最终 head 为517ca981c,其开发集成基线为313499d61。 - 最终 PR CI 已成功,20 项检查通过;PR 部署与 CodeRabbit 自动检查跳过。此前 4 条 CodeRabbit 检视意见均已修复、回复并 resolved,另补齐 2 条测试断言建议。
- Host 将 Graph invocation 规划为 ENTER / child / EXIT;AICore resident Scheduler 执行 body、推进内部依赖,并在必要 body 工作真实完成后释放 shell 和外部消费者。AICPU 保留生命周期监督职责。
- ready work 改为同类型核可共享的队列,默认 T/H8,限制普通任务预取额度;保留 T/G、T/H4、L/G、C/W1、C/W4 等对比配置。
已交付范围与支持边界
| 范围 | 合入实现的状态 |
|---|---|
| 普通 AIC/AIV、DUMMY、SPMD、MIX、sync-start | 在既有容量与资源准入约束内支持 native Graph,沿用 block 所有权与最后完成语义 |
| 同一 Definition 多实例、重复执行、普通任务与 Graph 交错 | 各 invocation 的参数、heap、任务身份和完成状态独立;复用现有 Graph API 与 kernel ABI |
| predicate | 本项支持单 lane、单 block;不将多成员 predicate 组合记为已交付 |
| 参数与失败处理 | 包含 PARAM 视图完整范围、溢出与非法 dtype 检查,以及错误传播和失败时禁止提前释放 EXIT 的验证 |
| 不在本次新增支持范围 | 嵌套 Graph、动态 topology、Graph boundary 显式依赖、任意异步完成;合法但 resident 不支持的形状在执行前整 run 选择 legacy,非法输入失败,执行开始后不 fallback |
支持矩阵与契约见设计入口、调度协议和实现与验证索引。归档文档中的开发阶段状态不代替上述实际合入记录。
功能与路径证据
- 本地审查修复后:473 项 Python 单测、8 个 C++ 测试目标通过;19 项性能清单经过真实 pytest collection 的 case/params/config 一致性检查。该 19 项检查是清单校验,不是重新跑性能。
- A5 onboard:Graph topology/execution 4 个目标、caller-stream 3 项、native Graph 故障隔离 2 项通过;覆盖 root/fanin 汇合、DUMMY、同 Definition 多实例、MIX/SPMD 及失败后恢复等路径。
- Graph 用例校验 resident 调度模式,Qwen 共 108 次 fresh native 执行并通过完整 out/K/V 校验;不能用 legacy 数值通过替代这份路径证据。A5/A2A3 的 sim、onboard、UT 及 network1 的完整 CI 结果分别见上述 CI 链接。
性能保障记录与后续优化(不阻塞本功能关闭)
PR 内最后一轮 Qwen 实测来自 fe4801013,运行时代码与 PR 最终 head 一致;配置为 A5 设备 6 独占、40 层、B16、seq_len=3500、seed=1234,5 轮预热后采集 100 个稳态轮。
| 指标 | 中位数 | p95 |
|---|---|---|
| Device | 38.744 ms | 38.985 ms |
| Host | 43.208 ms | 44.174 ms |
| bind | 1.302 ms | 1.673 ms |
相对此前同卡 H8 的 38.433 ms,Device 高约 0.81%;该比较包含主线更新,不能把差值单独归因于 PARAM 检查。详见Qwen 测量记录。
此前 dbf39563c 已完成 7 项固定 benchmark + 11 项筛选 ST + CSA,共 19 项无 Graph 的 golden 和三批各 100 稳态轮;完整对照保留历史基线 8f42cef9、采样条件和退化。其中 7 项 Device 中位数比历史基线高出 5% 以上,不能据此宣称无性能回退。
这些均为有明确版本身份的合入前证据,本次更新没有新跑测试,也没有在合入提交 bd131362e79b 上重新采样。 后续由 @poursoul 继续作为性能质量事项跟进:
- 在统一的最终集成版本上补齐完整无 Graph 性能对照,并分开记录调度开销、kernel 计算、完整 Device 与端到端时间。
- 继续归因和优化已披露的性能退化;Qwen 相对历史主线 29.478 ms 仍有差距。本项关闭表示约定功能完成,不表示已消除退化或达到全部性能优化目标。
- predicate 扩展、异步完成和 early dispatch 分别在 [Feature] A5 HBG AICore 调度:补齐多 block 与 MIX predicate 支持 #2831、[Feature] A5 HBG AICore 调度:支持异步任务 deferred completion #2832、[Feature] A5 HBG AICore 调度:支持 early dispatch #2867 协同验收;本 PR 不代表这些组合完成,也不单独满足 [Code Health] A5 HBG AICore 调度:全部功能实现后删除 legacy 回退路径 #2861 删除 legacy 的前置条件。
Motivation / Use Case
#2768 在本项立项时记录的能力边界是 Graph body 整轮回退 legacy;#2785 已将 A5 HBG AICore 分布式调度、普通 SPMD 和 sync-start 集成到 main。Graph 原生执行是该调度工作线待补齐的功能之一。
仅验证输出正确无法证明 Graph body 使用了 AICore Scheduler,因为 legacy 回退也可能得到正确结果。本项需要同时交付 Graph 执行语义、resident 路径证据和最终集成验收。
Proposed API / Behavior
- 支持 Graph shell 与 body 的调度衔接:外部依赖满足并且相应 body 元数据/参数可见后才能启动 roots;内部依赖按真实完成释放;所有必要 body 工作完成后才发布 shell 完成并释放外部消费者。
- 保持每次 Graph invocation 的参数、存储、任务身份和完成状态独立,覆盖同一 Definition 的重复及并发调用,防止跨 invocation 或跨 run 的陈旧状态污染。
- 明确 body 中普通 AIC/AIV、MIX、SPMD 和 sync-start 的支持矩阵,并保留相应 block 所有权、资源准入和完成合同。嵌套 Graph、predicate、异步完成等组合逐项声明支持范围,未支持组合给出明确诊断。
- 保留 Graph 实例化、执行、异常和退出期间的资源生命周期;复用现有 Host 构图及实例化接口。AICore resident Scheduler 负责本项的任务调度与完成语义。
Acceptance criteria
以下功能验收项对应 #2864 声明的支持范围及 PR 验证版本,均已完成。按 2026-11-04 确认的口径,本项以功能交付与正确性验收为关闭依据;统一基线的性能补测和后续优化保留在上面的性能质量跟进中,不据此延迟本项关闭。
- 给出最终实现 PR、支持矩阵和明确的集成基线;已有候选实现沿用原 PR。
- 验证外部依赖、body 内依赖、root/sink 汇合、重复调用、并发 invocation,以及声明支持的任务形状。
- 验证失败传播、安全关闭和资源复用;不会遗漏、重复执行任务或提前发布 Graph 完成。
- A5 onboard 验收包含结果校验及
scheduler_producer=aicore或等价的 resident 路径证据,不能以 legacy 回退作为通过;sim 与协议测试分别记录。
Alternatives Considered
继续整轮回退 legacy 可以作为兼容路径,但不满足本项的 AICore 原生调度交付目标。将 Graph 手工展开成普通任务不能替代 Graph invocation 的语义验收。
Additional Context
父工作线:#2667。
现有交付与边界:#2768、#2785;仓库设计入口:tests/fdwic/pa_hbg/a5-hbg-spmd-design.md。
本项按 2026-11-02 的功能拆分建立;最新进展见正文开头,2026-11-04 记录保留原 #2864 验收身份。与同父项的 predicate、异步任务子项分别交付,组合支持按实际依赖协调。
Activity