Skip to content

Fdwic swimlane deps - #4

Open
nalinaly wants to merge 1368 commits into
poursoul:fdwic-swimlane-depsfrom
nalinaly:fdwic-swimlane-deps
Open

Fdwic swimlane deps#4
nalinaly wants to merge 1368 commits into
poursoul:fdwic-swimlane-depsfrom
nalinaly:fdwic-swimlane-deps

Conversation

@nalinaly

Copy link
Copy Markdown

做了一堆 atomic 与 icache 相关的能力建设,在做shared版本时可以参考参考

@nalinaly
nalinaly force-pushed the fdwic-swimlane-deps branch 2 times, most recently from eb4b5fa to caa7007 Compare July 22, 2026 03:14
@nalinaly
nalinaly force-pushed the fdwic-swimlane-deps branch 2 times, most recently from 4e8794f to b0f846f Compare July 28, 2026 11:49
qinchuanyu and others added 26 commits July 29, 2026 17:29
正式 FinishSharedWinnerSubmitBody 已在入口检查 fatal,后续 materialize、writer delta、output publish 和 turn wait 失败也都会立即退出并发布 fatal。为 PublishSharedTaskWriterMetadata 增加编译期 CheckFatal 开关,仅在具备上述前置条件的正式路径关闭重复检查;通用入口默认仍保留原检查,参数、delta 与 writer intent 校验也全部保留。

A5 B256 full-swimlane 中,UP register.publish_writer_metadata 的 mean 从 4.330 us 降至 3.993 us,median 从 4.321 us 降至 3.972 us,p95 从 4.735 us 降至 4.320 us;每个 UP 精确减少一次 return-ready fatal atomic load。Submit 单次样本从 2736.331 us 降至 2467.129 us。

无观察 perf-clock 各运行 10 次,median 从 2501.246 us 降至 2326.027 us,改善 175.219 us(7.005%),两组范围完全分离。CPU shared 全套测试、A5 B256 full-swimlane、mixed context G0/G1/G2/G4 及全部 perf-clock 运行均通过。文档同时记录基线、撤销的本地 history 数组实验、正确性依据与完整性能证据。
producer descriptor 经 DCCI+DSB 和 published Exchange 发布后,只有 outputs、writer metadata 与 deps_prepared handoff 全部成功才会推进逐 task 插入链。正式 Finish 取得 task N insert turn 时,所有 P<N 的 publication 已由该链传递,因此不再为三个 UP INOUT symbol 重读 published 控制字。

为 prepared symbol commit 增加编译期 CheckOutputPublished,仅正式可信路径关闭;公共入口仍默认检查并保留未发布立即失败。ref/task-id、last_writer 范围、history DCCI+DSB、expected-old CAS 和 Build 前 descriptor invalidate 均保持不变。CPU 定向测试同时锁定公共检查与可信零读取两条合同。

A5 B256 raw 中 metadata published load 从 768 条精确降为 0,last_writer load/CAS 仍各 768 条。UP metadata mean 3.993→3.087 us,median 3.972→3.081 us;full-swimlane Submit 2467.129→2452.175 us。perf-clock 10 次中位数 2326.027→2315.601 us,改善 10.426 us(0.448%)。

CPU shared 全套测试、A5 B256 full-swimlane、mixed context G0/G1/G2/G4 和 10 次候选 perf-clock 全部通过。文档补充顺序证明、保留边界、泳道路径和完整测量结果。
PA 三个 accumulator symbol 共用确定的 writer 链:首组 UP 的 previous writer 是本 batch Alloc,后续组是前一 UP(task_id-4)。正式 Finish 在进入 Materialize/Register 前由 batch_start/group_index 推导 expected_previous,写 history 时不再执行三次 last-writer Load。

三个 last-writer CAS 仍以推导值作为 expected-old 并消费返回值,实际共享状态不一致时保持控制字不变、返回失败且不发布 task handoff。通用 helper 继续默认读取共享 previous;只有正式 PA 路径启用推导实例。新增 CPU 正向、零 Load 与错误 expected-old CAS 拒绝门槛。

A5 B256 raw 中 metadata last-writer Load 从 768 条降为 0,commit CAS 仍为 768 条。UP metadata mean 3.087→2.440 us,median 3.081→2.436 us。mixed G0/G1/G2/G4 验证首组 Alloc 与后续 task-4 history 全部正确。

perf-clock 10 次 mean 2314.235→2304.898 us,median 2315.601→2305.632 us,改善约 0.4%;CPU shared 全套、A5 B256 full-swimlane、mixed context 和 10 次 B256 perf-clock 全部通过。文档记录拓扑依据、失败闭合和完整数据。
在 shared 正式 winner 且存在 symbol writer 时,于 output 发布完成后、等待 predecessor insert turn 前,对本 task 独占的 writer_history 目标发出一次 dc_preload。等待区间为预取提供 lead,原 history 普通写、DCCI clean-out、DSB、三次 expected-old CAS 与完成字发布顺序全部保留。

为 CCEC Ops 增加仅作为性能 hint 的 DataCache 预取接口,CPU 与定向测试提供 no-op 对等入口;接口名不假定公开契约未承诺的固定预取范围。同步记录微基准与真实业务模型的差异、正确性边界及 A5 实测。

A5 B256 full-swimlane 中,UP register.publish_writer_metadata 均值由 2.440 us 降至 2.201 us(-9.8%),中位数由 2.436 us 降至 2.210 us;DCCI 与三次 CAS 数量不变。perf-clock 10 次中位数 2311.288 us,相对上一阶段 +0.245%,端到端判为中性,不宣称整体收益。CPU shared 全套、CCEC 编译、B256、mixed G0/G1/G2/G4 及 10 次 perf-clock 全部通过。
正式 PA 已在 history clean-out 前完成三个 symbol key 校验,并持有由 task plan 推导、随后仍由 expected-old CAS 核验的 previous writer。本次仅在 UseExpectedPrevious 编译期实例中复用 symbol_keys 与 expected_previous,不再从刚写回的 GM history 逐项读回同一记录。

通用 helper 继续按原合同读取 GM history;正式路径仍完整写入跨核 history,保留 40 B DCCI clean-out、DSB、StoreBarrier、三次 return-ready CAS、返回值比较、部分 CAS 失败语义与 task handoff 顺序。

A5 B256 中 UP metadata 均值由 2.201 us 降至 2.055 us(-6.6%),中位数由 2.210 us 降至 2.065 us;Atomic/DCCI 次数不变。perf-clock 10 次中位数 2307.247 us,较上一阶段改善 0.175%,判为端到端中性偏好。CPU shared 全套、CCEC 双入口编译、B256、mixed G0/G1/G2/G4 与 10 次 perf-clock 全部通过。
正式 PA 的 UP writer 集合固定为同一 Alloc producer 的三个 accumulator symbol。本提交在首次 GM 写入前校验 producer、slot 0/1/2 覆盖和 expected-previous 范围,以 owner-local packed slot 复用验证结果,DCCI 后不再重复解码 key;同时跳过 PA 中恒为空的 ordinary writer preflight/append。

保留完整 writer history、40B DCCI+DSB、三次 return-ready CAS 和部分 CAS 前缀语义。使用 expected_previous 区分合法非 UP 空集合与异常 UP 丢失 writer,补充 Publisher/Commit 层空集合、数量、重复 slot、错误 producer、乱序和中途 CAS 冲突门槛。通用 history/CAS 循环不施加 PA 专用 nounroll。

A5 B256 full-swimlane 全量通过:UP metadata mean 2.055us 降至 1.983us,median 2.065us 降至 1.970us;AIV Finish .text 缩小 3920B(6.4%)。10 次 perf-clock median 2311.131us,相对上一提交 2307.247us 变化 +0.168%,判定端到端中性。CPU 全套、CCEC AIC/AIV、mixed G0/G1/G2/G4 与 atomic/DCCI closure 均通过。
根据正式 PA 参数链收紧 UP writer 合同:Alloc 输出固定为 slot 0/1/2,orchestration 按 output/sum/max 保存,UP callback 按 max/sum/output 构造 INOUT,因此 writer key 精确为同一 producer 的 slot 2/1/0。Commit 在首次 history 写入前直接校验三个有序 key,CAS target 使用 2-index,删除除法、取模、去重位图和 packed-slot 搬运。

同步加强 CPU builder/delta/Commit 门槛和 host B256/mixed oracle:不仅检查 0/1/2 集合,还逐 index 校验 2/1/0;乱序、缺项、重复、错误 producer 与部分 CAS 前缀语义继续覆盖。

A5 B256 full-swimlane 全量通过:UP metadata mean 1.983us 降至 1.714us(-13.6%),median 1.970us 降至 1.701us(-13.7%);三次 CAS 与 history DCCI 数量不变,AIV Finish .text 再缩小 1296B。10 次 perf-clock median 2307.458us,较上一提交改善 0.159%。CPU 全套、CCEC AIC/AIV 与 mixed G0/G1/G2/G4 均通过。
正式PA在Materialize尾部完整校验writer delta的task、ordinary/symbol数量、writer标志以及UP 2/1/0精确key,使Register有序段能够通过编译期专路复用已验证的owner-local const对象。通用helper默认仍保留原防御校验,异常形状在任何output/history GM发布前设置fatal并退出,不改变共享结构、trace ABI、atomic或DCCI次数。

补充正确UP、乱序UP、UP冒充非UP和合法空SF的CPU门槛;CPU shared全套、CCEC AIC/AIV构建、A5 B256及G0/G1/G2-partial/G4 mixed全部通过。B256中metadata起点到history DCCI由0.427降至0.329us,父区间1.714降至1.706us;10次perf-clock中位数2311.466us,相对上一阶段+0.174%,判为端到端中性。
正式PA-UP仍在原位置逐条执行history DCCI和三个return-ready writer CAS,并保存各自真实起止时间;待deps_prepared handoff与Register业务终点封口后,再按原顺序写入一条DCCI和三条atomic raw。CAS失败保留已执行前缀,非UP不读未初始化端点,无trace storage时仍执行真实协议操作。

不修改raw ABI、site/op/flags、事件数量或converter,trace-free分支保持原直接DCCI/CAS源码。A5 B256中UP metadata均值1.706降至1.547us,DCCI结束到首CAS由0.415降至0.128us;DCCI仍256条、writer CAS仍768条。CPU全套、CCEC构建、B256与G0/G1/G2-partial/G4 mixed全部通过;AIC/AIV、两份Finish及最终mixed kernel的perf-clock .text与上一提交逐字节相同。
利用writer_history按task独占且只有last_writer CAS才能使其可达的协议事实,在Materialize尾部提前写入UP的header与2/1/0三条immutable record并执行原单行DCCI;取得前序insert turn后只保留三次return-ready CAS,全部成功后才发布deps_prepared。generic helper、非UP、共享布局、DSB数量和raw ABI均不变。

新增CPU阶段门槛,验证预发布history不可达、取得turn后才可达,以及第二次CAS冲突保留terminal前缀;补齐正式路径CAS失败设置fatal。CPU全套、CCEC AIC/AIV、A5 B256与G0/G1/G2-partial/G4 mixed全部PASS。UP metadata均值1.547降至0.948us,full-swimlane Submit下降1.26%;10次perf-clock中位数2312.574us,相对上一阶段+0.048%,端到端中性。
full-swimlane正式PA专路继续使用NOUNROLL三次循环,但直接按固定index保存CAS起止端点,删除每轮deferred/stats/count判定与成功路径逐项计数;全成功后一次写3,失败时才保存实际执行前缀。未显式展开CAS,不改变raw、端点、atomic操作或部分失败语义。

CPU shared全套、CCEC swimlane/perf-clock构建和三次A5 B256全部PASS。UP metadata均值由0.948降至约0.848us,两段CAS间隙由0.141降至0.039us;AIV Finish .text缩小240B。三次full-swimlane Submit中位数2452.023us,与候选前2451.922us基本相同;五个trace-free关键.text逐字节不变。
基于正式PA三个accumulator由同一Alloc产生、按slot 2/1/0同步推进且previous writer一致的拓扑门槛,将latest writer物理发布收敛到Alloc slot0的一次return-ready CAS。三条slot-specific writer history、三个逻辑INOUT提交和generic shared逐槽协议保持不变;fanin专路只把PA accumulator的latest读取映射到group word。

同步升级shared ABI generation到12,并补齐host最终态、normalized signature、物理CAS与逻辑提交闭环;CPU门槛覆盖单CAS地址、三槽history回退、generic隔离、CAS失败无部分发布及ordered-submit并发语义。CCEC generic/split/mixed ELF、shared protocol litmus及A5 mixed G0/G1/G2/G4均通过。

A5 B256中UP metadata mean由0.851 us降至0.269 us,site27由768次降至256次;相对用户指定原始泳道4.347 us累计下降93.8%。10次perf-clock mean/median为2307.679/2306.211 us,对上一阶段变化-0.169%/-0.275%,端到端无可辨识回退。
正式PA-UP在writer history完成DCCI+DSB后、进入predecessor wait前,预取本batch Alloc last_writer[0]。等待区间为hint提供提前量;后续expected-old return-ready CAS及其返回值校验完全保留,preload不承担可见性或顺序语义,也不影响generic shared路径。

同一时段B256五轮配对中,group CAS均值由248.166 ns降至223.636 ns,下降24.530 ns(9.885%);正式泳道UP metadata mean由0.269 us降至0.238 us。mixed G0/G1/G2/G4、CPU shared和CCEC构建全部通过,物理CAS/逻辑commit仍为每组1/3。

full-swimlane五轮mean/median变化+0.211%/+0.407%;perf-clock十个独立进程mean/median为2309.848/2306.394 us,相对无hint仅+0.094%/+0.008%,均低于1%撤回线。同步记录窄特例边界、代码体积和UP metadata剩余上限。
shared 模式继续保留 Alloc/Cube/Vector 的跨 task 高水位游标与 FetchMax winner 语义,只允许映射到同一游标 shard 的 worker 参与竞争。Alloc、QK/PV、SF/UP 的每 task 候选数分别由 96/32/64 收敛到 24/8/8;96 个 worker 仍完整回放 Submit、执行 EfDrain,且每个 shard 内仍由多个 worker 动态竞争,不退化为固定 owner。

同步更新 compact raw 的 attempted 重建和 host 权威计数:从最终 task plan 独立计算总 Claim 与逐 worker Claim 次数,避免不同 shard 的多发少发在总数上抵消。CPU 门槛补齐 QK→PV、SF→UP、Alloc→Alloc 的同 shard 高水位推进,以及 AIC/AIV role 合法但 shard 不匹配的 raw 正反例。

A5 B256/G1 的实际 Claim 从 73,728 降到 14,336。修改前冻结 ELF 与候选按 6 组 ABBA/BAAB 共跑 12+12 次,perf-clock mean 2306.135 us 降至 1575.844 us,改善 31.67%;median 改善 31.81%,6 组均同向。最新精确源码单次为 1577.627 us。

泳道归因显示 loser Claim core-time 从 62.394 ms 降到 13.902 ms(-77.72%),true-loser ClaimMax 从 72,448 条降到 13,056 条,均值从 737.8 ns 降到 274.0 ns;剔除 Kernel 后 loser 控制时间净降 27.79%。fanin load 约增加 72%、EfDrain 与 task 切换有所回涨,已如实写入 shared_tensormap_record.md,留待下一阶段候选宽度扫描。

验证:CPU shared 全套与 private 编译门槛通过;CCEC shared perf-clock 完整构建通过;A5 B256 的逐核 Claim、唯一 winner、fanin、依赖签名、TensorMap/history、heap、completion 和真实计算结果全部 PASS;Python converter/analyzer 135 项回归通过。
复用 shared 模式闲置的四路 legacy vector cursor,与四路 alloc cursor 组成八路逻辑 Alloc 高水位,将动态候选从 24/8/8 收敛到 12/8/8。全部 96 核仍回放完整 Submit,QK/PV 与 SF/UP 的八候选合同保持不变,private 路径不受影响。

同步 host 逐核 Claim oracle、八路终态重建和 ordered-submit 地址识别;CPU 门槛分别覆盖 Alloc 高低两半路由。字段布局不变但 cursor 语义变化,因此 shared ABI generation 升至 13,并同步 CCEC 协议常量和使用指南。

B256 Claim 从 14,336 降至 11,264,true loser 从 13,056 降至 9,984。完整泳道中 loser Claim core-time 下降 10.38%,loser 控制总量下降 1.35%;12+12 轮交错 perf-clock 平均由 1571.361 us 变为 1577.919 us,回退 0.417%,低于本轮 2% 保留上限,不将其表述为端到端加速。

验证:CPU shared/private 全套门槛通过;CCEC AIC/AIV probe 与 mixed ELF 构建通过;A5 B256 正确性、依赖、TensorMap、heap、真实计算和泳道闭合全部 PASS、drop 0;Python 分析器回归 160 项通过。
撤销 f7e2ee9 对 shared Alloc Claim 的八路高水位改造,恢复四路 alloc cursor 与 24/8/8 候选宽度。该过程态虽然使 B256 loser Claim 下降 10.38%、loser 控制总量下降 1.35%,但 12+12 轮 perf-clock mean/median 分别回退 0.417%/0.561%,同时把 Alloc 的跨 task 推进从 task_id%4 政策改成 task_id%8,收益不足以覆盖调度合同变化。

同步恢复 shared ABI generation、CCEC litmus 常量、host 逐核 Claim oracle、ordered-submit 地址识别和 cursor 单测。保留过程态性能数据及撤回原因,并修正文档和代码注释:24/8/8 本身也是明确引入的候选资格策略,被筛掉的 worker 在原 96/32/64 合同下并非必输,不能把策略变化描述为透明 atomic 消减。

验证:系统 GCC 13 下 CPU shared/private 全套门槛通过,包括 shared cursor Claim、ordered-submit、TensorMap/history、heap、稀疏泳道编码和 private ring。恢复目标与已验证的 5d34768 代码协议一致;未把 GCC15/binutils 汇编兼容问题或基线 trace-free 告警混入本次修改。
撤销 shared standalone 的 cursor-shard 候选过滤,恢复原始 winner 资格:Alloc 由全部 96 个 worker、QK/PV 由全部 32 个 AIC、SF/UP 由全部 64 个 AIV 参与 FetchMax Claim。保留四路 Alloc、四路 Cube、八路 shared Vector 高水位结构,不改变 private 路径、物理布局或 trace ABI。

同步恢复 host Claim 总量、compact raw attempted 重建和 CPU 期望;B256 Claim 回到 73,728。保留 QK→PV、SF→UP、Alloc→Alloc 同 cursor 跨 task 推进覆盖,并把 24/8/8、12/8/8 的性能数据归档为改变 winner 资格后的已撤回实验,明确后续 loser 优化不得靠取消原有候选资格获得收益。

验证:系统 GCC 13 下 CPU shared/private 全套通过;CCEC shared perf-clock 构建通过;Python converter/analyzer 160 项通过。A5 B256/G1 先完成完整语义闭合,再跑 10 个独立 perf-clock 进程,Claim 均为 73,728、三类状态均 PASS;Submit mean/median=2305.596/2304.520 us,范围 2291.816~2319.741 us,作为后续等价优化的新权威基线。
在恢复后的96/32/64 Claim合同上归档单槽EfDrain隔次轮询实验。候选复用WorkerState padding实现poll、skip、poll,不改变winner资格、状态布局或ABI;CPU shared/private、CCEC构建和A5 B256完整语义均闭合。

8+8个独立perf-clock进程显示Submit mean/median分别改善0.445%/0.578%,fanin load减少37.04%,但同时段完整泳道证明目标指标回退:true-loser EfDrain下降23.23%,Claim却增加41.76%,其中Alloc Claim增加69.62%,true-loser控制总量最终增加14.89%。更早的独立泳道具有相同方向,说明隔次轮询会让96核更集中到达Alloc Claim。

候选实现、测试和使用说明均已撤回,仅在shared_tensormap_record.md保留设计边界、正确性门槛、perf-clock数据、true-loser/not-attempted拆分、逐task Claim归因和撤销判据,防止后续只按轮询次数重复该反例。
保存 shared PA B256 中收窄 Claim winner 候选资格所得的最快完整泳道,并与修改前原始 Claim 合同下的历史最优泳道并列归档。12/8/8 样本 Submit 为 1750.044 us,ClaimMax 11264 次、true loser 9984 个;原始 96/32/64 样本为 2421.040 us,ClaimMax 73728 次、true loser 72448 个。两份采集均为 PASS、drop 0。

文档明确把 670.996 us / 27.71% 的差异定义为非等价负面实验:收益来自取消原有 worker 的 Claim 资格、扩大 not_attempted,而不是降低同一 true-loser 的等价控制开销,不能作为正式优化基线。归档只保存可直接查看的 merged 泳道和 exclusive 分析,避免重复提交大体积 raw。
shared callback 的 16B CallbackSubmitTicket 只被 winner 跨 TU finish 消费。将 ticket 的 lifetime 与五个字段写入移到 claim.won 分支;true loser 和 not-attempted 继续在 caller 内使用既有 task_id、function_id、meta 与 submit_begin 标量完成全部协议校验、split replay 计数和 Submit 闭合。winner ABI、五个 finish 调用点、finish 机器码、private 路径及状态布局保持不变。

原始 96/32/64 Claim 合同完整保留:B256 仍为 73728 次 Claim、1280 个 winner、72448 个 true loser 和 49152 个 not-attempted。完整泳道中 true-loser post-claim tail 累计由 16.066299 ms 降至 13.559775 ms(-15.601%),中位数由 213 ns 降至 165 ns(-22.535%);not-attempted 累计下降 17.763%。UP 单图 mean 回涨 5.821% 已在文档中单列,不宣称所有 task 同向。

8+8 个独立 A5 B256 perf-clock 对照由 2302.605 us 变为 2308.991 us,回退 0.277%,低于用户预设 2% 保留上限。CPU shared/private 全套及 B1/B256 回放、CCEC perf-clock/full-swimlane、A5 依赖/TensorMap/heap/completion/真实计算和后处理全部 PASS。IR 核对确认 loser 不再初始化 ticket,AIC/AIV caller text 均缩小且栈无回退。
验证将 context_lens descriptor 地址恢复收敛为 backing pointer 直读。候选在12+12次perf-clock中平均改善0.49%,并稳定削减UP后的Submit transition,但三组完整泳道均显示worker到达下一批Alloc Claim更加集中。

三组对照保持96/32/64资格、73728次Claim、72448个true loser和49152个not-attempted不变,均PASS且drop为0;AIV UP true-loser transition下降约55%,但true-loser Claim增加30%至37%,最终true-loser control连续回退8.72%至11.90%。

按loser控制时间门槛撤回生产代码和定向测试,仅在shared_tensormap_record.md保留候选语义、机器码尺寸、perf-clock、三组泳道路径、分项数据和后续可重试条件。
围绕shared PA的72,448个true loser,依次验证block-local predictor、无状态前任公式、eligibility内移和attempted-only noinline四种CAS+FetchMax回退实现。

记录CPU动态G0/G1/G2/G4语义闭合、CCEC反汇编与代码尺寸、73,728次CAS/零fallback计数,以及各版完整泳道的atomic bracket、Claim外层、true-loser control、not-attempted和端到端结果。

四种形态均未降低完整loser control,最终完整撤回临时atomic site、converter、计数、测试和生产代码,继续保留原ClaimMax,避免后续重复恢复无收益过程态。
修正 loser 优化的候选保留口径:perf-clock 端到端结果作为首要依据,完整泳道只用于解释收益迁移;端到端有稳定收益的候选不能仅因观察构建中的局部指标回退而丢弃。

记录 shared Claim 先 atomicAdd(0) 预读、再按需 FetchMax 的等价协议、CPU 正确性证据和 A5 B256 交替 8+8 数据。候选中位数由 2303.827 us 回退到 2371.005 us,回退 2.916%,超过纯 loser 候选约 2% 的门槛。

生产代码、临时 atomic site、converter 映射及定向计数改动均已撤回,本提交只保留可复核的失败实验记录,避免后续再次以原子次数减少代替端到端性能判断。
重新实现每worker、每物理cursor的CAS预测主路,并以原FetchMax保留动态fallback,验证96/32/64候选人口、唯一winner和依赖协议均保持不变。

记录A5 perf-clock 8+8交错结果:候选中位数回退0.500%;继续用固定72448个true-loser做完整泳道对照,确认atomic bracket下降3.238%,但Claim外层增加74.959%,true-loser control最终增加4.048%。

撤回全部实验源码、临时atomic site、ABI和测试映射,仅保留正确性证据、产物尺寸、泳道路径和撤回理由;后续停止替换Claim原子种类,转向等价消减Claim路由及loser返回路径。
shared模式复用backend保存的连续Int32 GM backing pointer,避免每批每核重复读取descriptor字段并恢复同一地址;private路径和每批一次volatile GM load语义保持不变。

增加descriptor alias定向门槛,锁定shared路径读取后端地址,并核对0/8192/8193/32768四组sequence及派生block数。记录CPU/CCEC/A5正确性、8+8 perf-clock对照和固定72448个true-loser的泳道迁移。

A5端到端mean/median分别改善0.720%/0.649%,四个对称区组中三个改善。完整泳道同时披露Claim竞争增加与transition缩短,按perf-clock优先口径保留该等价消减。
Document the two-round group/global claim scheme, pseudocode,
and why task_id sharding remains necessary alongside it.

Co-authored-by: Cursor <cursoragent@cursor.com>
qinchuanyu added 30 commits August 6, 2026 14:27
删除按task_id模5重建Alloc/QK/SF/PV/UP依赖的一次性离线脚本,避免将PA固定任务布局误当成可供其他算子复用的调度工具。

保留S6.82已经验证的Build释放上界、Execute理想调度和AIC工作量结论,并在设计与过程文档中明确这些数据来自PA专项取证。

本提交不修改设备运行时、TensorMap协议、泳道格式或构建产物,因此无需重新执行上板性能测试。
依据A5实测的128B原子冲突粒度,为shared PA增加独立布局类型,将8路heap shard cursor和逐task插入完成字按128B有效步长隔离。插入完成状态迁移到shared-only尾表,保留DistTaskCell生产前缀和private TensorMap布局不变。

严格TensorMap插入合同保持不变:task N仍等待N-1完成,发布writer metadata后才提交本task完成字;同步提升shared ABI/layout版本到7,防止host、AICPU和AICore新旧产物混用。

补充布局、初始化、lifecycle和96 worker B256完整回放断言。8组聚焦CPU回归全部通过,A5 shared runtime重编译成功,5次Case1均闭合96核和每核1280 Submit;完整Submit中位数由1484.467 us降至1456.340 us,改善28.127 us(1.895%)。性能口径和验证边界已写入perf_opt_record.md。
背景与目标:
- 正确通用基线为B6/W4、B256二十一轮中位1.233ms
- 原writer合同把不同symbol串入同一全局前驱链,并为256个writer额外执行768次last_writer原子读取
- 保持调度层与算子无关,不恢复已淘汰的PA单代表地址快捷路径

协议实现:
- 由tensor access与SharedOutputRef生成稳定symbol key,prepare阶段一次计算并记录精确同symbol前驱
- commit只等待真实同symbol前驱并去重,history完整后继续以expected writer执行768次校验CAS
- 删除设备热路中的768次last_writer atomic add 0,当前PA的255个跨symbol假等待归零
- CPU语义模型和独立host oracle同步重建精确history、最终last-writer与builder报告
- GM/U2构建门槛禁止metadata commit识别TaskKind,并禁止重新引入last-writer load

并行范围与性能:
- 将通用builder范围由1..8扩到1..16,同步调整CPU、host、report、泳道容量和命令行
- B16/W4使用16个builder AIV和64个lane0 builder,仍保留48个AIV executor
- 真实A5 B256最终21/21通过,min 480.000us、median 494.528us、avg 524.730us
- 相比1.233ms基线中位降低约59.9%,达到0.8ms目标

验证与记录:
- GM CPU optimized、ASan/UBSan、TSan覆盖builder 1..16及B1/B256同地址复用
- AIC/AIV CCEC、bitcode、mixed ELF、GCC15 host与定向pre-commit全部通过
- 新增不覆盖旧文件的B16/W4泳道图:768次metadata CAS、0次last-writer load、0次metadata predecessor poll
- U2仅完成共享协议CPU/CCEC/A5 B1回归;记录后续停止UBUF性能优化,只保留功能验证
将Direct-GM的builder软件搜索上限从16统一扩展到32,联动CPU模型、device/host校验、命令行、构建门槛和泳道writer容量;仍保持每个warp仅lane0构建、builder与executor角色互斥以及通用按symbol精确前驱协议。

在每个builder AIV的VF调用前后增加两次get_sys_cnt采样,由host汇总最早启动到最晚结束的1ns trace-off构建墙钟,并校验builder采样递增、非builder字段保持为零。B32/W4真实A5三轮总kernel中位436.673us、构建包络中位348.332us,明确记录0.3ms构建目标尚未达到;W8对照性能更差且B32不稳定,予以否决。

新增B32/W4 atomic/DCCI泳道图和2026-8-6配置性能索引;在设计文档中补充fully-distributed、same-core、Scalar cross-core与SIMT cross-core的关系、按symbol解链的语义边界及region/view回退要求;在实现过程文档中记录完整扫描、失败样本、验证口径和停止结论。

验证包括W4/W8 builder=1..32的CPU optimized、ASan+UBSan、TSan,AIC/AIV CCEC bitcode、mixed ELF和GCC15 host;真实A5 B32/W4生产3/3、泳道1/1完整oracle通过;共享计时代码另通过U2 CPU三套、CCEC/ELF/host及真实A5 B1 1/1回归。
重构SIMT调度设计第2.5章,完整比较private TensorMap、shared same-core、Scalar cross-core与SIMT cross-core。

区分原始fully-distributed四支柱、历史shared推演和当前A5实现边界;更新Scalar cross-core为256个真实metadata writer全局链,并说明SIMT按symbol解链的关系。

补充偏差矩阵、合理性分析、不可接受的语义变化,以及ordinary region/view/alias的泛化边界和回退要求。
功能与展示:

- 将PA真实计算负载固定为QK/SF/PV/UP=6/28/4/1,并在模型、host与CPU校验中统一口径。

- 将泳道图原始trace ABI升级到v6,在64字节Executor记录内补齐workload精确起止、owner、task kind与阶段位。

- 按物理block重构1C2V布局:未参与SIMT的AIC/AIV保持Scalar在上、kernel在下;builder单独展示Scalar host与各SIMT warp。

- 将task.execute严格裁剪为真实engine workload区间,并与kernel投影逐task保持完全一致。

- 在单物理Scalar轨上补齐atomic、DCCI、poll等待对象和具名控制阶段;连续poll合并并保留精确次数与160ns单次参考,移除scalar.control兜底。

- 增加完整ACL kernel端到端参考轨,明确其与device时钟仅作duration对照,不伪造绝对时间对齐。

测试与记录:

- 完成B=1/2/4/8/16/32的W候选扫描和11轮入围复测,当前扫描范围内B8/W5中位数最优为926.038us。

- 对18组Top-3配置各生成两份真实A5候选,36/36通过;每组保留端到端更短的一份。

- 18份结果均验证96条Scalar连续无重叠、1024对task/kernel精确匹配、E2E唯一、poll计数闭合且scalar.control为0。

- 更新SIMT调度实现过程与2026-8-7结果说明,记录配置、性能、稳定性淘汰和复现方法。

按要求,本提交不包含18份泳道图JSON文件。
- 冻结96个Main Scalar动态领取Build、AIC/AIV双Execute cursor和每核四token的调度边界
- 明确Build时由TensorAccess与SharedOutputRef动态反向推导per-symbol前驱,不由host预计算DAG
- 定义同symbol严格串行、异symbol解链及ordinary region保守回退合同
- 固化Scalar普通GM写的DCCI发布/取得、task-indexed execution cell与FinalDrain不变量
- 约定独立perf/swimlane产物、CPU/CCEC/A5分阶段门槛和10轮端到端裁决口径
- 记录三轮需求对齐、SIMT源码查证以及heap/output语义复核结果
从现有Scalar cross_core复制出独立的cross_core_DAG源码、构建脚本与CPU/CCEC测试,不依赖same_core、cross_core或simt_cross_core目录中的实现文件。

统一切换到pa_scheduler::cross_core_dag命名空间,并为CPU与CCEC建立独立构建入口、输出目录和atomic/DCCI源码覆盖检查,避免后续DAG协议试验污染既有实现。

CPU perf-clock基线已覆盖1280任务动态Build、1024次Execute、共享heap/output、TensorMap ring、writer intent、双Execute cursor及fatal收敛等测试并全部通过;提交前header、clang-tidy、cpplint、Markdown、Ruff与Pyright检查全部通过。

本阶段仅证明机械迁移后的旧全局插入链行为等价,尚未启用动态per-symbol DAG,也未进行CCEC或A5上板性能声明。

本机GCC 15.0.1与GNU as 2.42因.base64伪指令不兼容,CPU模型沿用仓库可用的GCC 13.3;该环境事实已记录到实现过程文档。
新增与PA TaskKind解耦的SharedMetadataDag模型及BuildSharedMetadataDag模板,公共算法只消费adapter提供的TensorAccess、TensorRefKind、symbol key与manual-dependency信息。

对每个whole-object引用按逻辑task id反向扫描同symbol最近writer,不读取设备last_writer物理状态;纯reader同样得到精确依赖,同symbol保持严格顺序,异symbol不再进入同一假串行链。

ordinary Gm/LocalTensor保留独立的全局ordinary-writer保守链,symbol-only task不会成为ordinary predecessor;重复writer、future producer、非法CreateInfo依赖和容量越界均在共享状态修改前失败。

新增定向CPU门槛覆盖乱序Build、同异symbol、纯reader、ordinary回退及损坏schema;先验证旧代码编译失败,再完成实现。完整build-perf-clock cpu回归全部通过。

本提交尚未把新DAG接入生产Build/Register,旧host writer plan和全局writer链仍存在,因此不包含CCEC/A5性能结论。
将cross_core_DAG生产Build/Register从host全局metadata writer前缀切换为Build期动态推导的per-symbol DAG。PA adapter只负责把TaskArgs形状翻译为通用TensorAccess与SharedOutputRef,公共DAG、等待和commit逻辑不识别PA TaskKind。

Register按去重后的精确逻辑前驱等待,并为三个accumulator分别保存history及执行expected CAS;全部symbol提交成功后才发布一次task insert_completion。不同batch不再沿伪全局writer链互相等待,CAS冲突保留故障前缀但不会误发completion。

同步修正host逐slot last_writer与normalized signature oracle,新增动态previous数组及第二条CAS冲突门槛,更新ordered-submit跨batch依赖断言和实现过程记录。完整CPU build-perf-clock与B256回归PASS;CCEC和A5尚未运行。
从SharedBuildDispatchState移除metadata writer总数、ordinary/symbol分类计数和逐task bitset,同时删除DecodeSharedMetadataWriterPlan与ValidateSharedMetadataWriterSummary。Build/Register的前驱来源现在只剩Build期schema动态推导,host不再发布或验证writer DAG。

保留task identity和AIC/AIV Execute route作为随机访问构参与engine路由计划;它们不授予writer资格,也不提供前驱。删除69个uint64 bitset word及对齐后,cross-core execution tail减少576B。

将host-plan、random-access、96-thread dispatch和ordered-submit门槛改为直接验证动态DAG与独立workload oracle;G1四个batch确认无跨batch假依赖。新增源码禁止标识符门槛,阻止旧count/bitset接口回流。完整CPU build-perf-clock与B256回归PASS;CCEC和A5尚未运行。
使用CANN 9.1.0 weekly 20260708与固定PTO-ISA ddafa8da,分别构建cross_core_DAG的perf-clock和swimlane CCEC产物。

AIC/AIV generic protocol实例化、dav-c310 cube/vector入口、block-local runtime、noinline finish、1:2 mixed ELF、角色专属real-compute helper、无重定位链接、host runner及SHA256 manifest全部通过。

过程文档记录固定工具链、两类kernel大小及验证边界;本提交只形成设备可编译证据,A5 B1/B256、端到端性能与泳道仍未运行。
使用CCEC perf-clock独立产物在A5 device 0运行默认real-compute/6,28,4,1。B1闭合5个Build、4个kernel、descriptor/history/fanin/heap/golden与FinalDrain,端到端173.918us。

B256完成10次独立ACL launch,1280个Build、1024个kernel、2048个output、1280条fanin、256个writer completion及206569472B heap每轮均通过execution/semantic/postprocess。

startup到FinalDrain十轮范围2.311389-2.347033ms,中位数2.326268ms、均值2.329620ms。文档同时如实记录本机无npu-smi/task-submit而使用直接ACL同步launch;swimlane尚未运行。
DAG泳道raw显式声明per_symbol_dag,并删除host逐task metadata prefix列表;保留writer task集合只用于闭合真实completion数量,避免host重新成为动态DAG前驱权威。

converter按global_writer_chain与per_symbol_dag分别校验:旧协议继续严格匹配host前缀,新协议只接受每个Register前段至多一条设备聚合PollBatch,同时拒绝重复、越界、孤儿记录并闭合writer handoff和producer summary。analyzer同步呈现动态精确前驱语义,不再把Register等待误写成task N等待task N-1。

新增converter/analyzer门槛,完整109项单测与pre-commit通过;重新构建CCEC swimlane并完成A5 B256真计算,1280 Build、1024 kernel、golden与FinalDrain全部PASS。实测闭合768次symbol CAS、256次writer completion、256条history DCCI,raw无丢记录。

带观察单轮startup-to-FinalDrain为2.047027 ms,仅作为阶段、atomic与DCCI证据;性能裁决仍沿用无泳道十轮中位数2.326268 ms。输出文件保留在本地outputs目录,不纳入提交。
在SIMT trace-off角色结果的既有保留槽中记录每个角色的启动边界,并在root完成全部到达、completion校验和root_finished发布后旁路记录FinalDrain终点。host聚合最早角色启动到root终点,严格检查非root终点为零且保留槽不被误用,同时保留ACL event和builder包络作为辅助指标。

使用W4而非脚本默认W16完成builders=1..32的CPU optimized、ASan+UBSan、TSan及AIC/AIV CCEC、bitcode、mixed ELF、GCC15 host门槛。A5 B256正式十轮10/10通过,Startup到FinalDrain中位394.563us,ACL event中位422.813us,builder包络中位343.760us。

同步更新Scalar DAG设计、实现过程和SIMT实现记录,明确Scalar当前2326.268us约为同口径SIMT的5.90倍;后续优化以394.563us为唯一追赶基线,不再混用W16、ACL event或builder-only数据。
问题:SharedPaDagSchema::TensorAt 已经解码出 task identity,却再次调用 TensorCount 对同一 GM 计划项完整解码;该冗余同时放大当前 task 校验和反向 writer 搜索的访存成本。

修改:提取 TaskKind 到 tensor_count 的纯映射;TensorCount 继续保留独立解码和 fail-closed 校验,TensorAt 则直接消费本次已解码的 kind。per-symbol 前驱、writer intent、atomic、DCCI、TensorMap 顺序与 Execute 语义均不变化。

验证:CPU perf-clock 全量门槛通过;AIC/AIV CCEC mixed ELF、ABI、符号、relocation 与 manifest 检查通过;A5 B256 默认 real-compute/6,28,4,1 十轮全部正确。startup 到 FinalDrain 中位数由 2326.268 us 降至 2045.065 us,减少 281.203 us,改善 12.09%。

文档:修正 SIMT 1,1,1,1 与 Scalar 6,28,4,1 不可直接比较的口径;后续以成熟 cross_core 约 0.82 ms 为第一门槛,以 0.60 ms 为目标。
问题:反向寻找同 symbol 前驱时,每检查一个 candidate 和一个目标 symbol 都会重新枚举 candidate 的完整 tensor schema;UP 的多个 SharedOutputRef 使同一 GM 计划项和参数形状被重复重建。

实现:新增通用 SharedDagWriterIntents 与 schema WriterIntentsAt 合同。算子 adapter 一次导出 whole-object symbol key 和 ordinary-writer 标志;公共 DAG 层只校验 symbol、producer 边界和重复 writer,不读取 PA TaskKind。CPU 任意 schema 模型同步覆盖同/异 symbol、重复 writer、future producer 与 ordinary 回退。

协议:未改变 per-symbol exact predecessor、last-writer CAS、writer completion、atomic/DCCI 数量、TensorMap 顺序或 Execute 语义;不是固定 PA task-id 间距的特例。

验证:CPU 全量 perf-clock 门槛、AIC/AIV CCEC mixed ELF 与 manifest 均通过;A5 B256 real-compute/6,28,4,1 十轮 10/10 PASS。startup 到 FinalDrain 中位数 1119.226 us,相比上一阶段 2045.065 us 减少 925.839 us(45.27%),相比初始 2326.268 us 累计改善 51.89%。
问题:Scalar DAG 的 Build owner 已经由 adapter 构造出当前 task 的真实 TaskArgs,随后仍从 GM dispatch plan 重建一份等价 schema,先独立 Validate,再次遍历构建 DAG,重复了解码、分类和 GM 读取。

改动:新增通用 SharedDagTaskArgsSchema,以当前 TaskArgs 作为当前 task 的唯一 DAG 输入;在同一次 tensor 枚举中校验 tag、reference kind、空指针、SharedOutputRef key/producer、重复 writer 与 ordinary 回退。历史 candidate 仍只通过 adapter 的紧凑 WriterIntentsAt 合同查询,公共路径不识别 PA TaskKind。生产路径、动态 Build 测试及随机访问参数测试统一切换到该入口,并补充非法 access/reference 组合的 fail-closed 门槛。

不变量:不改变 task/workload、atomic、DCCI、per-symbol CAS、TensorMap 插入顺序、Execute 调度和 FinalDrain;新算子 adapter 必须保证 WriterIntentsAt 与其 TaskArgs writer 语义一致。

验证:CPU perf-clock 全套动态 DAG、乱序 Build、ordinary 回退、payload、FinalDrain 门槛 PASS;AIC/AIV CCEC、mixed ELF、ABI、强符号、无 relocation、manifest PASS;A5 B256 默认 6,28,4,1 十轮全部 execution/semantic/postprocess PASS。

性能:startup 到 FinalDrain 十轮 1093.872–1134.944 us,中位 1108.832 us、均值 1110.800 us;相对 1119.226 us 减少 10.394 us(0.93%),相对最初 2326.268 us 累计改善 52.33%。
问题:per-symbol 反向搜索的历史 candidate 只需要 metadata writer schema,但 PA adapter 每次都走完整 DecodeSharedBuildDispatchTask,重复解析 Execute route、executable 和 engine class。批量合并多个 symbol 扫描虽减少 GM 解码,却因更重的通用控制流在 A5 上回退到约 1.60 ms,已完整撤销并记录。

改动:保持反向搜索次数、DAG 和工作语义不变;WriterIntentsAt 仅从 4B immutable identity 解码 PA metadata 投影,保留 task/batch/last-task 边界校验。Execute route 仍由 launch 前 host plan 与当前 task 的完整 dispatch 解码独立闭合。公共 DAG 不新增 TaskKind 或 PA 固定图形分支。

验证:CPU perf-clock 全量门槛 PASS;AIC/AIV CCEC、mixed ELF、ABI、强符号、无 relocation、manifest PASS;A5 B256 默认 6,28,4,1 十轮 execution/semantic/postprocess 全部 PASS。

性能:startup 到 FinalDrain 十轮 991.684–1020.537 us,中位 1006.521 us、均值 1005.899 us;相对 1108.832 us 减少 102.311 us(9.23%),相对初始 2326.268 us 累计改善 56.73%。过程文档同时记录批量扫描两版均约 1.60 ms 的失败证据。
问题:历史 writer intent 已按最小 PA metadata 投影解码,但仍对所有 candidate 完整调用 DecodeSharedPaTaskMeta 后才判断 writer 集为空;默认 G1 中 QK/SF/PV 候选均无 metadata writer,这部分解码纯属重复。

改动:PA schema adapter 先从 immutable 4B identity 投影并校验 present、kind 和 batch 边界;能证明无 metadata writer 的 kind 直接返回空 writer 集,只有可能写 metadata 的候选才进入完整 PA metadata 解码。公共 DAG 仍只消费通用 WriterIntentsAt,不包含 PA 固定图形;host plan 和当前 task Build ticket 的完整 identity 校验保持不变。

验证:CPU perf-clock 全量门槛 PASS;AIC/AIV CCEC、mixed ELF、ABI、强符号、无 relocation、manifest PASS;A5 B256 默认 6,28,4,1 十轮 execution/semantic/postprocess 全部 PASS。

性能:startup 到 FinalDrain 十轮 932.885–957.536 us,中位 943.400 us、均值 943.092 us;相对 1006.521 us 减少 63.121 us(6.27%),相对初始 2326.268 us 累计改善 59.45%。
问题:动态 DAG 已从真实 TaskArgs 推导 writer symbol、ordinary 分类和 exact predecessor,Materialize 后仍由 PrepareSharedTaskWriterDelta 第二次扫描整份 1280B TaskArgs,重复计算 symbol key、重复检查并逐项与 DAG 比较。

改动:SharedMetadataDag 在首轮推导时保留 writer_tensor_mask;Materialize 后以实际 register_mask 核对计划,symbol-only 路径直接从 DAG 复制 writer key 并生成 delta。只有真正存在 ordinary writer 时才进入 noinline 保守回退,读取 Materialize 后 TensorDesc 构造 region。抽取的 ordinary helper 以模板引用保留 local/__gm__ 地址空间,不复制 descriptor。

泛化与不变量:公共实现只识别 TensorAccess、TensorRefKind、mask、symbol 和 ordinary region,不识别 PA TaskKind;atomic、DCCI、per-symbol CAS、TensorMap 顺序、任务数、计算负载和 FinalDrain 均未改变。旧通用 Prepare 接口继续保留并由原测试覆盖。

验证:新增 writer mask、PA symbol-only DAG finalizer、ordinary+symbol 混合回退和 mask 漂移 fail-closed 门槛;CPU perf-clock 全量 PASS;AIC/AIV CCEC、mixed ELF、ABI、强符号、无 relocation、manifest PASS;A5 B256 默认 6,28,4,1 十轮全部正确。

性能:ordinary 回退内联版无收益,隔离为 noinline 后十轮 920.605–978.265 us,中位 932.310 us、均值 935.978 us;相对 943.400 us 减少 11.090 us(1.18%),相对初始 2326.268 us 累计改善 59.92%。
问题:cross_core_DAG 每个 task 都会用值初始化清零多个固定 32 项的本地数组。生产函数实际只发布 [0,count) 前缀,未使用容量没有语义;整对象清零扩大了 QK/PV 参数构造与 DAG 推导的 Scalar 指令和栈访问。

改动:历史 writer intent、单项 tensor 投影、metadata DAG 和 writer delta 改为由生产者显式写标量边界及有效前缀;设计文档新增消费者不得越过 count 读取、不得依赖空槽为零的不变量。没有减少 task、candidate、atomic、DCCI 或真实 kernel workload,也不识别 PA 固定拓扑。

验证:git diff --check、CPU perf-clock 全量门槛、AIC/AIV CCEC、mixed ELF、ABI、强符号、无 relocation 与 manifest 均 PASS;A5 B256、6,28,4,1 十轮 execution/semantic/postprocess 全部 PASS。startup 到 FinalDrain 最快 904.198 us、中位数 914.937 us、最慢 957.381 us;较上一阶段 932.310 us 中位数减少 17.373 us,改善 1.86%。
根因:QK/PV 含普通 GM/local 输入,公共 DAG 为证明此前没有 ordinary writer,会为每个 task 从 task_id-1 反向扫描到 0。旧泳道中 QK/PV 的 Claim→Materialize 平均耗时从前四分位约 6.5 us 线性增长到末四分位约 26 us,B256 形成二次复杂度空扫描。

改动:把最近 ordinary writer 的枚举责任纳入通用 schema adapter 合同。公共 DAG 直接消费 adapter 动态求解结果,同时复核 -1<=previous<task_id 且非负 candidate 的 WriterIntentsAt 确实声明 ordinary writer;当前 task 的读写语义仍来自真实 TaskArgs。未新增 host DAG/bitset,也未在公共层识别 PA 固定图。

正确性:CPU 任意 tensor schema 保留 ordinary writer/reader 混排与乱序 Build 覆盖,并新增当前 task、symbol-only task、非法负 sentinel 三类 adapter 错报的 fail-closed 负例;CPU 全量门槛与 AIC/AIV CCEC、mixed ELF、ABI、强符号、无 relocation、manifest 均通过。

性能:A5 B256、6,28,4,1 十轮 execution/semantic/postprocess 全部 PASS,startup 到 FinalDrain 为 806.511–831.690 us,中位数 818.782 us;较上一阶段 914.937 us 减少 96.155 us、改善 10.51%,首次低于 0.82 ms。新泳道 global Submit 758.765 us,QK/PV Claim→Materialize 均值降至 2.45/2.82 us。
借鉴SIMT builder已经验证的heap分配合同,删除非空output task在两次FetchAdd之前对aggregate vend和shard cursor的返回型预读。竞态Load快照无法证明随后RMW成功,唯一物理区间与累计进度继续由两次FetchAdd返回旧值确定。PA B256共1024个非空output task,因此热路径减少2048次返回型atomic Load。

保持8路shard、输出字节、DCCI、TensorMap、动态DAG、payload及真实kernel workload不变。静态非法输入仍在RMW前拒绝;RMW线性化后才发现的容量或状态异常进入terminal failure并保留控制字现场,禁止回滚覆盖并发builder。零输出task仍只读取aggregate vend。

同步更新原子泳道和heap单测:非空reservation固定为CursorReserve与VendAdvance两条return-ready记录,并覆盖静态失败、并发唯一无缝分配、cursor/vend交错及terminal越界现场。CPU全量门槛、CCEC AIC/AIV、mixed ELF、ABI、manifest和A5正确性均通过。

A5 B256真实负载6,28,4,1十轮startup到FinalDrain为786.785-809.046us,中位数793.086us;相对818.782us下降25.696us,改善3.14%,首次稳定进入0.8ms以内。另记录重复Execute推进候选中位数823.044us、确认无效并已回退。
借鉴SIMT直接形成最终可消费对象的机制,对已经发布且本轮不可变的fresh output与plain SharedOutputRef不再重复内联复制128B TensorDesc,而是在portable execution payload中携带精确GM引用。QK/SF/PV/UP执行包由10/10/10/16条cache line收缩为8/2/6/5条,builder只发布紧凑payload,executor按既有协议逐引用invalidate后绑定。

补齐reference mask边界、GM tensor子集与PA function shape门槛;host oracle使用runtime SchedulerState设备基址独立核对GM offset,并比较目标TensorDesc全字段、compact layout、scalar、fanin与route,避免设备与host同错。CPU全量协议、CCEC构建以及A5 B256真实6,28,4,1十轮均通过。

startup到FinalDrain十轮中位数由793.086us降至788.932us,改善4.154us/0.52%;泳道WinnerBuild聚合core-time由9.238ms降至5.735ms,证明删除了真实的重复搬运。同步记录内存合同、验证过程、性能和泳道路径。
正式cross-core DAG Build在scheduler入口及每核每完成16个Build后,均会在领取下一张ticket前观察terminal fatal;既有合同同时允许已领取的合法工作单元继续闭合。此前FinishSharedWinnerSubmitBody仍令metadata helper逐task再次读取同一global-fatal地址,B256额外产生1280次返回型atomic load。

本提交仅在正式dispatched调用点关闭helper内的重复检查。隔离测试和通用组合入口继续保留默认fatal guard;metadata DAG前驱、writer CAS、DCCI、insert completion、Execute与FinalDrain合同均不改变。改动不依赖PA task kind、batch或固定DAG,可用于其他算子的同类中央Build发放路径。

验证:git diff --check PASS;CPU全量门槛PASS(含remote fatal cadence、乱序Build、严格writer前驱和Execute drain);AIC/AIV CCEC及mixed ELF/ABI/无重定位检查PASS;A5 B256真实6,28,4,1十轮全部PASS,中位数从788.932 us降至785.204 us,改善3.729 us/0.47%。过程文档同时记录三项已撤回的SIMT候选及其失败原因。
背景:cross_core_DAG 的8路no-wrap heap已由分片cursor唯一决定物理区间,但每个非空task仍额外争抢同一个shared_heap_vend FetchAdd,零输出task还会读取该全局值。审计确认该累计值不参与TensorMap插入、fanin、Execute就绪、FinalDrain或heap回收,只服务于诊断性completion前缀。

实现:每个非空task只保留所属shard cursor的一次返回型FetchAdd,并以本task物理区间结束偏移作为completion_vend;零输出task固定发布0且不访问heap atomic。保留legacy shared_heap_vend的ABI地址作为未触碰canary,不改变descriptor DCCI、writer metadata、严格TensorMap插入链和completion flag顺序。

校验:host由最终descriptor反推逐task精确vend,核验零输出为0、八个shard区间连续无重叠、cursor字节和为206569472、legacy vend保持0;同步更新并发reserve、容量竞态、Materialize、四种PA payload及atomic/DCCI源码覆盖单测。CPU全量门槛与A5 B256 6,28,4,1全部通过。

性能:同窗口10次startup到FinalDrain中位数由789.373us降至781.623us,减少7.749us,改善0.982%;每轮删除1024次同地址返回型FetchAdd和256次零输出Load。过程文档同时记录固定SIMT builder与96路静态映射两个失败候选,避免用轻负载SIMT绝对时间误导后续判断。
完整记录确定性Execute分片、单项动态ticket、Build owner就地Execute、function分块、DAG fanin冻结、descriptor invalidate消减和静态Build分片的验证结果。\n\n补充确定性primary的BUILT门控与轮转映射取证,说明其虽降低部分fanin轮询,仍因失去动态接管而较S16回退5.60%。\n\n所有未达标或存在正确性缺口的候选代码均已撤回;当前保留版本仍为fd2a8ca8,对应B256真实负载十轮中位数781.623us、范围780.425至791.447us。
- 保存B256真实负载6/28/4/1的合并泳道\n- 文件名关联S16阶段与782us无泳道性能基线\n- 仅保留可直接查看的merged产物,不提交raw和分析副本
- 在独立 simt_cross_core_ordinary 目录实现 GM-only 调度协议,SIMT builder 负责构建,Scalar executor 负责执行,TensorMap 按 task-id 全局稀疏 writer 链保持串行插入
- 增加 CPU 协议语义模型、CCEC AIC/AIV 内核、Host oracle、构建运行脚本和可归因泳道图,固定真实 PA workload 为 QK/SF/PV/UP=6/28/4/1
- 支持 1..32 个 builder 及可配置 warp、执行 token 和派发窗口;通过上游优先派发、快速 payload 绑定、紧凑 terminal witness 等通用优化,将有效 trace-off 端到端性能收敛到约 0.70 ms
- 完整回退会缩短模拟 task 服务时间的 AIC L1 ping-pong 试验,在构建脚本中审计逐 repeat 串行 task-duration 契约;保留无效泳道作为反例并在文档中明确撤销
- 记录逐项优化、配置对比和瓶颈分解;当前关键 AIC 活跃区间约 92% 为固定 workload,约 8% 为 Scalar 调度间隙
- 验证 CPU B1..32 正确性、ASan/UBSan、TSan、CCEC 基础及泳道构建、A5 B1/B9/B11 正确性与性能,并检查 JSON、Shell 和构建清单一致性
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants