Repository navigation
Description
Summary
为 A5 host_build_graph 接通 URMA 请求提交与原生异步完成路径,复用已有通信域和 URMA 后端能力,并逐步对齐已交付的 tensormap_and_ringbuffer(TMR)功能与验收。
归属 #2722(L3+ 多卡通信与后端能力),总追踪 #2716。本 Issue 维护一个完整交付目标,可分多个 PR 实施;最小通路合入后继续保持开放,完成约定的能力对齐与验收后再关闭。
Motivation / Use Case
A5 HBG 已通过 #2967 支持非阻塞 defer_wait,但目前支持的是 counter 和 SDMA completion,不代表 URMA 已可用。现有 URMA GET/PUT、多 AIV、多 jetty、分块及通信域生命周期测试主要限定在 TMR。
基于主线 0569c7796b86ca3c98ebeb96ab481a6e8bd4695a 的源码核对,当前不是仅放开 runtime 限制并添加用例即可:
Worker._domain_config()明确拒绝 HBG URMA workspace;Host-source 域也限定 TMR。- TMR URMA helper 依赖稳定的
urma_sender_id和有效task_token;HBG resident AsyncCtx 没有该发送者字段,并以 invalid legacy task token 配合 resident writer 工作,现有提交及容量检查不能原样套用。 - HBG
token_valid()只接受 counter/SDMA record;已有单测明确验证 URMA engine 登记失败。 - HBG resident CHECK 没有 URMA CQE 观察、错误处理和 SQ/CQ tail 推进。TMR 的对应实现运行于 AICPU,不能直接视为已经适用于 HBG AICore。
通信域上层及平台资源管理本身是公共能力:建域、窗口/workspace 分配、使用登记、跨 Run 保留和 fence 后释放应复用,不为 HBG 新建另一套通信域或所有权模型。
以上为源码调查结论,本 Issue 创建时没有新增 HBG URMA 上板验证。
Proposed API / Behavior
公共边界
- 保留现有通信域、
workspace_engines、UrmaConfig、Tensor/CommContext 和任务依赖接口;在实际执行链路可用后放开对应 runtime 限制。 - 抽取并复用 TMR 的 URMA 会话、分块、多 jetty、预检及错误处理逻辑,runtime 差异通过明确适配表达,避免复制两套随后独立演进的通信算法。
- 为 HBG 的实际并发 AIV 提供稳定、无冲突的发送者身份及队列归属;不能使用可能重复的逻辑 block 编号或固定队列 0 代替。
- 接入 HBG resident 条件预留/登记、CHECK/FINISH 和依赖退休;明确 CQ 观察、队列回收的所有者与并发规则,验证 AICore 访问、缓存可见性及门铃更新的硬件资格。
- AIV 返回只释放执行资源,不代表通信完成。任务须在普通执行及所有登记的 URMA 条件均完成后释放下游依赖;后继消费者看到正确数据。
- 容量检查、部分提交、登记失败、CQ 错误及超时必须有确定行为;无法确认外部访问已停止时保留相关资源,不能伪造完成或提前释放。
- 通信域已有生命周期机制继续作为唯一基础;补 HBG 使用与回收验收,只有发现具体缺陷才修改公共实现。
阶段一:最小完整通路及测试
先交付同机双卡、Device-source 域、单 AIV/单 jetty 的 URMA GET/PUT:
- 贯通建域/workspace 发布、HBG 请求提交、条件登记、CQ 完成检测、任务退休和正常资源释放。
- 提交前完成必要校验及条件容量预留,保留已提交工作的跟踪。
- 通过真实 pending 观测证明 kernel 返回后通信仍可未完成,独立任务继续推进;消费者只能在实际通信完成后启动。
- 覆盖正常 GET/PUT、完整 payload 与边界校验、重复执行、基本域复用,以及登记/完成失败和安全收尾。
该阶段具备可独立使用的最小闭环,不以同步等待或 legacy runtime 回退冒充 HBG deferred completion。
阶段二:对齐已交付 TMR 能力
在同一 Issue 内扩展实现适配和验收:
- 多 AIV 同 peer/多 peer 并发、MIX 兄弟 AIV、跨任务稳定身份,核对实际队列归属。
- 单 AIV 多 jetty、超过单 WQE 上限的分块、非整块尾部、小请求既有队列分配行为、容量边界、队列回绕及累计完成目标。
- HBG 实际支持的 SPMD、MIX、sync-start 和单层 native Graph 组合,验证所有相关执行/条件完成后才释放依赖及消费者数据可见性。
- 通信域跨 Run 复用、独立域释放、同名域重建、pending close、部分提交/CQ 错误/超时及未知停止状态下的保留。
- Host-source 分片通信域、首次创建 initializer、跨 Run 复用、远端 URMA 读取及消费者;核对 CPU 导出/更新和 backing 的真实最后使用边界。
- 保留现有 TMR、HBG counter/SDMA 回归,防止公共适配改动破坏既有行为。
对齐范围以已有实现和声明的支持组合为准。SHARED_POOL、批量提交及尚未合入的子域扩展仍由原 Issue 推进,不作为本 Issue 默认前置;其后续集成按实际交付再核定。本 Issue 不接管 CCU、独立 SDMA/RDMA 重构、本地/整表 MAP 或未声明的跨机能力。
验收条件
- HBG 最小 URMA GET/PUT 路径真实上板执行,payload、边界和下游计算正确。
- 证明提交 kernel 返回后仍存在 pending 通信、独立任务继续推进,且消费者未提前执行;无同步 fallback。
- HBG 发送者身份、条件登记、CQ 观察与队列回收均有正向和负向测试,不仅放宽白名单。
- 多 AIV/MIX、多 jetty、分块、队列回绕和跨任务复用符合现有 TMR 合同,真实队列计数与完成目标吻合。
- HBG 任务形状与 native Graph 的依赖释放、可见性和资源保活通过适用组合验收。
- 域复用/释放/重建及故障路径通过;未确认停止时不提前释放、重置或复用资源。
- Host-source 域及 initializer 经过 HBG 端到端验收,按实际设备互联声明支持范围。
- 更新/参数化可复用用例并接入合适的回归入口,记录实际执行数和 skip 原因;测试存在或全 skip 不算验收。
- 在同一版本和硬件条件下记录基本吞吐/时延与同步对照,功能正确性与性能结果分别报告,不预设 HBG 与 TMR 性能相同。
- 相关 PR 合入,支持范围和剩余边界清楚;阶段一完成不自动关闭本 Issue。
A5 硬件验证使用隔离 checkout、项目 venv、架构预检与 task-submit 队列,记录 simpler/PTO-ISA/CANN 版本、构件、设备拓扑及用例结果。硬件故障注入与公共接口修改按现有模块职责协同,不因通信归属接管通用调度器。
Alternatives Considered
- 仅删除 runtime 限制、迁移测试: 无法解决 AsyncCtx、完成条件类型和 CQ 观察缺口。
- 复制 TMR runtime 或新建 HBG 通信域: 重复已有公共能力,应复用域管理和请求逻辑,仅补 runtime 接口适配。
- kernel 内阻塞等待 URMA: 无法满足 HBG 非阻塞执行及后继依赖合同,不能作为本目标的交付替代。
- 先拆成“通信域重做”和“补测试”两个 Issue: 当前没有证据需要另建通信域模型;实现与对应测试按同一完整目标分阶段交付。
Additional Context
Related: #2722、#2708、#2988。已有基础与范围:#2775/#2779、#2787/#2835、#2673/#2886、#2674/#2825、#2911/#2929、#2657/#2922/#2938。HBG defer wait 基础:#2967。
源码依据:
Activity
HaoZhang1024 commentedon Nov 11, 2026
建议保留 5 个一级任务,将难度最高的 任务 1「HBG Device URMA 最小完整通路」拆成 1.1、1.2、1.3 三个子任务,其余任务 2–5 保留。共 7 个交付单元,对应 7 个 PR;每个 PR 同时包含实现、对应测试和支持范围说明。1.3 是首个可供用户使用的功能交付点,1.1–1.3 全部完成才算任务 1 完成。
拆分依据为主线
0569c7796b86ca3c98ebeb96ab481a6e8bd4695a。复用已有通信域、窗口、HCCL 子 communicator、URMA workspace 和 fence 后释放机制;HBG resident 完成框架复用已合入的 #2967。以下编号是计划序号,不是已创建的 PR 编号。任务层级与七个 PR
reserve_conditions → commit_condition → finish_reservation,补 URMA token 校验与错误传播。sender 设计包含 MIX 兄弟 AIV 的区分,首期验证可以限定单 AIV。UrmaConfig,对齐 HBG 多队列条件预留、分块请求与累计完成目标,覆盖部分提交。依赖、并行与合入顺序
硬前置表示后续 PR 的实现/启用依赖前项合同;可在依赖分支上提前开发,但按前置顺序合入。组合验收依赖表示基础功能可先交付,完整能力声明还须等相应组合通过。
前置按实际接口和行为判断,不只看文件是否冲突。任务 2、3、5 若同时修改公共 adapter、条件容量或队列完成协议,先确定同一份接口合同和修改归属,再选择串行或依赖分支;本方案不表示自动并行派工。
任务 5 若提前合入,后续组合验收可参数化复用任务 4 的用例并将结果回填本 Issue;发现必须修复的代码再更新相关 PR或追加必要修复,不为了固定七个 PR 而遗漏缺陷。第一轮计划仍按七个交付单元组织。
CQ 所有权、同队列多完成组协调和 AICore 访问资格属于 1.1 接口定型前的设计前置,实际 observer 与完整功能仍由 1.3 交付;这不新增 PR。分析发现依赖硬件判别的未知时,先验证最小假设,再固定公共适配合同。
任务 5 分别记录“基础功能已交付”和“完整组合验收完成”:基础 PR 合入不等于任务 5 完成。最终覆盖本 Issue 约定及实际声明支持的组合,不通过缩小声明省略约定能力。
首期必须闭合的合同
提交前预留,提交后准确跟踪。 完成容量不足时不提交;部分提交失败时保留已提交工作的完成目标。子任务 1.3 明确覆盖容量拒绝、部分提交、登记失败、CQ 错误、超时及未确认停止时的资源保留。任务 4 扩展多任务、多域及复杂任务形状下的故障交互。所有阶段均遵守未确认外部访问停止时,不释放、不重置、不复用相关资源的合同。
稳定 sender 从子任务 1.2 建立。 来源是实际驻留 AIV 映射,跨任务保持一致;不以可能重复的逻辑 block 编号或固定队列 0 代替。
明确队列完成推进权。 TMR CQ poller 具有更新 CQ/SQ tail 和 doorbell 的副作用。HBG 的 condition-group lease 只证明当前 group 的排他访问;同一 sender 跨任务复用队列后,多个未完成 group 可能引用同一队列。子任务 1.3 须明确并验证同一队列的观察/回收协调规则,包含旧完成目标晚于新目标被观察时计数不回退。
先验证 AICore 硬件访问,再验证完整异步闭环。 子任务 1.3 内部依次验证 CQE 读取、缓存可见性与 doorbell 更新,以及 CHECK/FINISH、消费者数据可见性和资源回收。CQ 检查与 tail 更新作为同一个协议交付。
首期开放范围有实际准入边界。 1.3 启用时列明可用配置和任务形状。暂不支持的组合在能够判定的最早入口、提交 URMA 请求前明确拒绝;已有通用实现且准备开放的组合,在该 PR 内完成对应验证。文档说明与实际可进入的路径保持一致。
回归、性能与范围
Refactor: separate A5 URMA requests from TMR completion storage
Refactor: separate A5 URMA requests from TMR completion storage
Add: register A5 HBG URMA requests with resident conditions
Refactor: separate A5 URMA requests from TMR completion storage (#2999)
Add: register A5 HBG URMA requests with resident conditions
Add: complete A5 HBG URMA requests through resident CQ polling
Add: support concurrent AIV senders in A5 HBG URMA
Add: register A5 HBG URMA requests with resident conditions
Add: complete A5 HBG URMA requests through resident CQ polling
Add: support concurrent AIV senders in A5 HBG URMA
Add: register A5 HBG URMA requests with resident conditions
Add: complete A5 HBG URMA requests through resident CQ polling
Add: support concurrent AIV senders in A5 HBG URMA
Add: register A5 HBG URMA requests with resident conditions
Add: complete A5 HBG URMA requests through resident CQ polling
Add: support concurrent AIV senders in A5 HBG URMA