Skip to content

Fdwic swimlane deps - #4

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

Fdwic swimlane deps#4
nalinaly wants to merge 1448 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 4 times, most recently from 210f716 to e6551a0 Compare July 31, 2026 19:27
qinchuanyu added 24 commits August 2, 2026 08:20
实现范围:
- 将非 Alloc PA task 的 TensorDesc、scalar、fanin、function route 与 completion vend 打包进 task-indexed SharedExecCell
- 接入 EMPTY→BUILDING→BUILT→CLAIMED→DONE 状态机、每核单 ExecutionToken、单调扫描和 96 核 FinalDrain 汇合
- 在 Claim 后重建 executor-private args/local/global context,并复用现有 AIC/AIV 模拟 kernel 与 completion 链路
- 当前明确保持 build_owner == execute_owner,仅作为 S3a 发布/重绑税基线,不宣称已完成异核执行

A5 无一致性内存合同:
- builder ordinary store 完整 payload 后,对精确 cacheline 范围 clean-out + DSB,再以 atomic 发布 BUILT
- executor 消费 Claim CAS 返回值后,仅 winner invalidate 精确 payload 范围并复制到本核私有 token
- atomic control、fatal、drain 均独占 cacheline;不对 atomic-only 行执行 payload DCCI
- 每轮由设备 Scalar 本核重置自己的 ExecutionToken,避免依赖 host H2D 覆盖旧 DCache

正确性与 ABI 修复:
- 固定 split runtime 为 1728B,并联动 CCEC reserve、符号与 ELF 布局检查
- 补齐约 19.69MiB execution sidecar 的 H2D/D2H 搬运,修复 TensorDesc host 严格别名读取
- 在 Build、Claim 后绑定和 kernel 发射前三处校验 PA 精确 shape:QK 4/2/0、SF 4/3/1、PV 4/2/1、UP 7/2/3
- host 独立校验 descriptor/scalar/fanin/vend/owner/token/drain,并要求计划外 cell control/payload 保持 EMPTY/全零
- fatal 输出携带 reason/task/reporter 及对应 cell/token 现场,避免把启动阶段失败误判为执行包可见性问题

验证:
- cross_core/run.sh build cpu:全部 standalone 门槛通过,新增 adapter 与 scan/drain 测试通过
- adapter 对四类 task 覆盖 Make、Claim 绑定和最终发射的 tensor/scalar/fanin 畸形拒绝
- cross_core/run.sh build ccec:AIC/AIV 编译、split 符号、1:2 mixed ELF、LOCAL helper、无 relocation 与 artifact manifest 全部通过
- A5 perf-clock B256:1280 task、1024 kernel 全部通过,Submit 24986.974us,仅作为正确性证据
- A5 full-swimlane B256:无 trace 丢失,Submit 25086.894us;不与 perf-clock ELF 直接相减
基于S3a B256完整泳道重新核对EfDrain分布:122880个样本中位数14.962us、p95 20.549us,且control占EfDrain时间99.912%,确认其为结构性热点而非个别长尾。

记录根因:96个worker逐task读取共享执行cell,A5上的int64 Load实际为返回型恒等atomicMax,形成96×1280次同地址竞争,并与Build发布CAS互相干扰。

撤销全同角色worker扫描的S3b计划,改为按task和engine预路由primary/secondary两个观察者;非候选不读取共享control,由build owner唯一决定异核execute target,将每task观察者上限压到2且不改变Build候选拓扑。

同时明确当前execution atomic与DCCI尚未单独进入raw trace,后续S3b取证必须补齐精确子事件并通过CPU交错和A5 B1/B256实测后才能宣称闭合。
依据A5 B1的结构性反例重新审视两候选发现协议:保留primary/secondary异核映射,明确撤销96个worker分别维护task/batch/offset并重建历史PA plan的过程态。

记录一轮语义通过但Submit达到849245.117us、下一轮由非候选worker 63在task 2触发invalid-built-control的证据,说明当前异常二进制不能进入B256,也不能用局部游标修补冒充闭合。

新合同复用每次Submit调用点已经持有的(task_id, Kind),只向两个候选核的owner-local紧凑位图或队列登记;非候选不登记、不读shared control,也不承担batch/offset解析状态。补充EMPTY/BUILDING、停产判错、热发现observer上限与terminal验证的边界,为后续CPU状态机和A5复测提供明确依据。
保留按task id与engine预路由primary/secondary的固定异核执行合同:Build owner不是primary时由primary执行,恰为primary时改由secondary执行;两个候选只负责观察,只有唯一target发射Claim CAS。host使用独立公式复算execute owner,避免device与host同错。

删除每个worker事后重建PA task/batch/offset计划的过程态。每次真实Submit Close直接使用当下的(task_id, Kind),只给本核命中的候选设置owner-local位图。AIC最多272个潜在槽、AIV最多136个,统一9个uint32_t覆盖且保持task顺序;新增状态复用既有对齐空间,LocalStats和split runtime总尺寸不增长。

锁死连续闭合前缀:Close前强制task_id等于已闭合Submit数,拒绝重复或跳号;登记helper拒绝已经被scanner越过的旧slot,避免历史bit重写后FinalDrain无法收口。损坏的worker角色、越界task和终态游标也改为fail-closed。

重写cross-core scanner/drain测试,穷举96核与全部task的slot往返,验证真实Close登记、94个非候选零control读取、EMPTY/BUILDING/BUILT/CLAIMED/DONE、busy token、最后task及96核drain closure,并新增跳号/重复Close和历史重登拒绝门槛。同步修正ordered Submit隔离用例。

验证:./tests/atomic_probe/pa_scheduler/cross_core/run.sh build cpu完整通过;PA四类payload adapter、固定异核owner、fanin/vend/completion、TensorMap、SharedOutput、writer intent、heap、Claim Tournament、Materialize与ordered Submit等既有CPU门槛全部PASS。A5/CCEC尚未在本提交宣称通过。
拆分参数非法、已有scheduler global fatal和已有execution fatal三类路径。global fatal只停止后续Build/Exec,不再伪造InvalidBuiltControl;Build helper返回FatalObserved/InvalidInput/PublishConflict时保留已经发布的精确exec首错,仅对未携带原因的fresh-cell占用补充ControlPublishConflict。

Progress入口观察fatal后将非Idle owner-local token收敛到Faulted;target在Claim前、Claim/Bind后、fanin转engine且发射kernel前、同步kernel返回后以及completion发布前复核terminal状态。已观察到停止条件时不再执行下一项不可逆副作用,不发布正常vend/flag/DONE。

新增确定性CPU注入门槛:BUILT control首次Load后置fatal验证0 Claim CAS;最后一条fanin ready返回后置fatal验证Claim一次但0 kernel;同步kernel返回后置fatal验证kernel一次但无completion。另覆盖已有global fatal不生成exec首错,以及WaitingFanin/Completing token均转Faulted。

验证:scanner/drain全套测试严格告警构建并重复20/20 PASS;./tests/atomic_probe/pa_scheduler/cross_core/run.sh build cpu完整通过,既有TensorMap、SharedOutput、ordered Submit、payload adapter与终态门槛均无回退。CCEC/A5仍留给下一阶段。
将 cross-core TensorMap 有序插入等待从通用 2 秒 watchdog 中拆出,使用独立 60 秒有界门槛;启动屏障和旧隔离 helper 仍保持 2 秒,避免扩大无关故障的收敛时间。该调整只为防止功能阶段的慢 owner 进度被过早终止,不改变 deps_prepared 严格串行插入、两候选映射、payload 发布或执行状态机。

修正 host 的 completed_tasks 口径:不再打印计划 task 数,而是按 deps_prepared[N] == N 计算真实连续完成前缀。split 构建失败时额外导出至多 8 个未完整回放 worker 的 submits、Claim、winner、caller/finish 地址、ticket 与协议计数,便于区分回放截断和跨 TU 合同错误;成功路径不增加设备指令或结果字段。

验证:cross_core CPU 全套构建与 insert completion、TensorMap、Claim Tournament、payload adapter、两候选 scan/drain、ordered Submit 门槛全部 PASS;CCEC perf-clock 整套重编通过。A5 B1 共 4 轮全部语义 PASS,Submit 分别约 885.188 ms、2937.959 ms、278.501 us、228.422 us;每轮 QK/SF/PV/UP 各执行一次,host 独立证明 execute_owner 与 build_owner 不同,payload/fanin/vend/completion、token reset 和 96 核 execution drain 全部闭合。当前只声明 B1 功能闭合,不声明性能收益或 B256 已通过。
使用与B1相同的cross-core CCEC perf-clock构建直接运行B256,1280个Submit、1280个唯一Build winner和1024个异核kernel全部完成;QK、SF、PV、UP各256次,Submit实测约27.243 ms。

host逐task验证build_owner与execute_owner互异,portable descriptor/scalar/fanin/vend/route完全匹配独立计划;1280个completion、全部execution token reset、96核drain closure、TensorMap插入完成前缀和real-compute结果均PASS,global/exec fatal保持未发布。

同步更新设计状态与分阶段实现记录。当前结论仅为固定两候选S3b在B1/B256的功能闭合;27.243 ms不作为性能收益结论,同代码泳道与波动归因仍留在后续阶段。
问题:S3b B256 full-swimlane 已经通过设备侧 cell 终态、逐核 token 自检、96 核 execution drain、bypass final_occupied 和 fatal 门槛,但 host 仍把关闭 kernel-end DCCI 后直接 D2H 得到的 owner-local token 普通 GM 快照作为严格断言。A5 Scalar 没有 cache coherence,这份快照可能停留在非最终状态,因而会阻断本来有效的泳道导出。

改动:为 host Validate 增加显式 RawExecTokenSnapshotAuthority;CPU runner 在线程 join 后选择 Authoritative,继续逐字段严格检查 token;CCEC runner 选择 DiagnosticOnly,只报告 RESET/NON_FINAL,不再用非权威快照修改 semantic_status。设备侧 token/scanner 自检、execution drain、cell 终态、bypass final_occupied 和 fatal 校验全部保留,未新增 DCCI、DSB,也未改设备热路径。

文档:更新分离版阶段总览,记录 A5 终态证据链、首次 raw 快照误判边界、CPU/CCEC 两种观察口径,以及 S3b B256 full-swimlane 的业务闭合数据和三份本地产物路径。

验证:cross_core CPU 完整构建及全部隔离测试通过;CPU B1 实跑的 coherent token 严格断言 PASS;CCEC AIC/AIV、split TU、mixed ELF、host 和 manifest 整套重编通过;A5 B256 full-swimlane semantic/postprocess PASS,Submit 27127.645 us,1280 winner、1024 异核 kernel、1280 fanin edge、trace 零丢失,exclusive analyzer 全部分区 exact。
在S3b固定primary/secondary观察集合上实现K2受控动态竞选,不扩大为全核扫描,也不改动TensorMap有序插入、fanin冻结和BUILT发布边界。

执行侧从双候选中排除Build owner;其余一到两个兼容候选以既有BUILT到CLAIMED CAS竞争。CAS Lost和竞争窗口中的NotBuilt改为正常重观察,loser不读payload、不做invalidate、不占用token;busy token期间不访问新cell。CLAIMED/DONE、active token、device terminal与host独立oracle均接受任一合法动态owner,同时继续严格检查build/execute异核、engine、payload、completion与FinalDrain。

新增动态eligibility穷举、Build owner候选排除、primary/secondary分别获胜、确定性CAS Lost、忙候选与peer领取、动态终态及FinalDrain测试。完整CPU build全部通过;CPU B1的5个task/4个kernel和B256的1280个task/1024个kernel均semantic/postprocess PASS。同步更新设计与实现过程文档,并明确A5尚未验证、CPU耗时不作A5性能结论。
完成CCEC AIC/AIV编译与A5动态验证:干净B1 full-swimlane Submit为280.683us;B256普通运行与full-swimlane分别为27.420ms和27.476ms,1280个task、1024个kernel、payload、terminal、execution drain及真实计算结果全部PASS,trace drop为0。

按B256泳道独立复算实际执行者:Build owner不在K2的956个task中,primary/secondary分别胜出319/637次;Build owner命中primary/secondary的27/41个task均由另一候选执行,非法owner为0,证明上板实际执行了双候选动态竞选。

同时记录并界定偶发长尾:fixed-owner父提交同机也复现36.922s;S4的805.959ms样本首个异常位于task3 Materialize入口到首个heap atomic之前,之后才被TensorMap顺序链和FinalDrain无退避轮询放大,不能归因于S4 Claim CAS。文档保留干净B1、长尾B1和完整B256泳道路径,输出文件本身不入库。
将跨核调度器的S5拆成角色可移植性与候选人口扩大两个独立阶段。本提交只完成S5a:Alloc保持96/G8;QK/PV改由64个AIV以G8竞争Build并交给AIC K2执行;SF/UP改由32个AIC以G6竞争Build并交给AIV K2执行。B256的local/root/总物理Claim CAS仍为73728/9216/82944,避免把跨角色payload正确性与新增atomic竞争混算。

新增独立的跨角色Build owner策略,并在Build发布、执行扫描、active token和terminal cell边界统一校验;通用K2 execute eligibility仍只约束engine、候选集合和build/execute异核,不把阶段性拓扑写死进portable payload协议。TensorMap deps_prepared严格插入链、payload一次flush后发布BUILT、winner invalidate及completion顺序均保持不变。

host端不复用设备helper,独立核对AIC/AIV Claim人口、对侧Build owner、K2 Execute owner和fanin发布/ready-load角色;同步修正稀疏泳道的Claim attempted/winner合同。扩充Claim Tournament、ordered Submit、PA adapter和scanner门槛,覆盖exact-one、双候选分别胜出、busy/fatal/terminal/FinalDrain及loser零TensorMap访问。

验证:CXX=/usr/bin/g++ ./run.sh build cpu全量通过;CPU B1与B256 real-compute均semantic_status=PASS、postprocess_status=PASS。CCEC/A5尚未运行,留待下一独立阶段取证。
完成S5a在CCEC与A5上的动态取证。CCEC AIC/AIV协议实例化、正式入口、compete-first角色符号、混合ELF和artifact manifest全部通过,kernel real-compute仍严格按目标engine路由。

A5 B1与B256均通过execution/semantic/postprocess校验。B256普通运行Submit为27.143 ms,完整泳道为27.301 ms;1280个task、1024个kernel、payload、fanin、completion、TensorMap、shared heap及数值结果全部闭合,trace drop为0。泳道逐task证明QK/PV共512次Build全部位于AIV,SF/UP共512次Build全部位于AIC;K2 primary/secondary分别执行363/661次,非法owner为0。

B1单轮命中已知Materialize长尾,Submit为1763.512 ms,但所有协议断言仍通过;按既有取证边界将其保留为独立公平性/退避课题,不阻断本功能阶段。S5a与S4的B256完整泳道单样本处于同一量级,不据约0.6%的差异宣称稳定性能收益。

泳道:tests/atomic_probe/pa_scheduler/outputs/pa_scheduler_cross_core_shared_swimlane_20260802_133108_3915277/ccec/merged_swimlane.json(生成物不入库)。
将 shared 模式下 Alloc、QK、SF、PV、UP 五类 task 的 Build Claim 统一扩展为 96 个 Scalar 参与的 G8 两级 Tournament;kernel 类型只约束后续 Execute engine,不再限制 Build owner 的 AIC/AIV 角色。

保持 TensorMap deps_prepared 严格插入链、K2 Execute 候选、Build/Execute 异核约束和 private TensorMap atomicMax 路径不变。同步将 Build owner 校验收敛为通用 PaBuildOwnerEligible,并为 AIC/AIV 两类 CCEC caller 预期五条 winner-finish relocation。

补齐 host 独立 oracle 与确定性门槛:五类 task 均验证 AIC/AIV 可 Build,executor 必须匹配 engine、属于独立复算 K2 且不同于 builder;覆盖 BUILDING/BUILT、busy token、fatal、terminal、FinalDrain、严格插入链及 loser 零 TensorMap 访问。

CPU 完整构建、B1/B256 real-compute 与后处理均通过。B256 逻辑 Claim 精确为 122880;隔离 Tournament 门槛闭合 local/root/总物理 CAS 122880/10240/133120,较 S5a 增加约 60.5%。CPU B256 全 atomic trace 因 FinalDrain 轮询记录耗尽通用容量,仅记为观察限制;CCEC/A5 留到下一笔独立验证。
完成 S5b 全 96 Scalar/G8 Build 拓扑的 CCEC 与 A5 动态取证。CCEC 双角色入口、split runtime/finish、最终 1:2 混合 ELF 和 manifest 全部通过,两类 caller 均硬校验五条 winner-finish relocation。

A5 B1 干净重跑 Submit 164.625 us,5 task/4 kernel、payload、DCCI/atomic、严格 TensorMap 插入链和真实计算全部通过。首轮 8570.183 ms 长尾因 FinalDrain 轮询导致 trace drop 1,仅记录为已知观察限制,不作为正式证据。

A5 B256 普通与完整泳道 Submit 分别为 27.347 ms 和 28.250 ms,1280 task/1024 kernel、122880 次逻辑 Claim、fanin/shared output、终态与真实计算全部闭合。泳道精确统计 local/root/总物理 Claim CAS 为 122880/10240/133120。

五类 Build winner 的 AIC/AIV 分布为 Alloc 47/209、QK 34/222、SF 39/217、PV 45/211、UP 39/217;K2 primary/secondary 为 375/649,非法 owner 与 Build/Execute 同核均为 0。相对 S5a 单样本尚无性能收益,不据此宣称稳定回退;S5b 保留为后续 overlap 功能基线。
按当前目标明确排除 try_wait、engine continuation 以及 kernel 运行期间同一 Scalar 继续调度;保留 TensorMap 严格串行插入、96 Scalar 自由 Build 竞争和 K2 异核 Execute 架构。

删除原 S6 engine/Scalar overlap 阶段,将性能评估与容量复用前移为 S6;同步修正阶段编号、观测门槛、验证对照、原型步骤和实现过程记录,避免后续按旧协程路线误推进。

S5b 继续作为当前目标架构的功能基线,后续性能去留直接依据 perf-clock、swimlane 和 submit-PMU 三条独立证据链,不再等待或依赖 kernel/调度 overlap。
在保持TensorMap严格串行插入、96个Scalar自由竞争Build、G8 Claim Tournament与K2异核Execute不变的前提下,为cross_core opportunistic EfDrain增加owner-local工作门控。仅当本核execution token非Idle,或紧凑候选游标已经落入本核Close的Submit前缀时,才进入完整ProgressCrossCoreExec;FinalDrain、非法入口、活跃token与到期candidate继续走完整协议。

新增CPU定向用例,覆盖未Close前缀跳过、Alloc非候选槽到期后必须推进、活跃token不得跳过及非法入口不得吞错。完整CPU build、B1/B256 real-compute、CCEC AIC/AIV实例与混合ELF、A5 full-swimlane均通过;Claim local/root CAS仍为122880/10240,1280 task、1024 kernel、严格插入链、fanin、shared output和真实计算全部闭合。

A5 B256 perf-clock十轮中位数由27.496232 ms降至9.077919 ms,改善66.985%;full-swimlane Submit由28.250448 ms降至8.765063 ms,EfDrainControl聚合核时由2301.070442 ms降至517.839958 ms。同步更新实现过程、架构设计与性能优化记录,并明确后续同口径1.0 ms目标。
在不改变96 Scalar Build资格、K2异核Execute、TensorMap严格插入链和payload DCCI合同的前提下,删除ProgressCrossCoreExec无副作用入口对global fatal与exec fatal的重复返回型原子读取。

将global fatal收敛检查保留在active-token专属入口,并继续在Claim CAS、kernel发射和completion发布等不可逆边界前执行原有检查;WAITING_FANIN与COMPLETING错误注入门槛均保持fail-closed。

完整CPU门槛、CCEC AIC/AIV编译与A5 B256业务闭合通过。十轮perf-clock的min/median/mean/max为6.924/7.304/7.260/7.595 ms,较S6.1中位9.078 ms改善19.542%;full-swimlane为6.895 ms,EfDrainControl聚合核时下降28.638%,trace无丢失。

同步更新构建执行分离设计、分离版实现过程和总性能优化记录,明确距离1.0 ms目标仍约6.30 ms,并把后续归因收敛到active token、候选cell、payload绑定与completion。
问题:S6.2 后,异核执行 owner 持有 WAITING_FANIN token 时会在后续 Submit 的 EfDrain 中反复推进;每次依赖未就绪仍集中读取 global fatal、exec fatal,并在 helper 返回后再次读取 exec fatal。该路径只观察 producer completion,不产生共享业务副作用,却在 A5 上形成同地址返回型原子热点。

实现:先在 owner-local token 上调用 ExecutionTokenFaninReady 压缩已就绪前缀,未就绪直接返回;只有全部 fanin ready、准备进入 ENGINE_INFLIGHT 时才调用保留 exec-fatal 门禁的状态转换 helper。helper 失败后直接检查 owner-local Faulted phase,不再补读共享 fatal。FinalDrain 在 production_closed 边界强制检查 global/exec fatal 并收敛 active token;Claim、kernel 发射前后和 completion 发布前的不可逆边界保持 fail-closed。

正确性:更新 scanner 定向用例,明确机会式 EfDrain 遇到未 ready+global fatal 不得产生副作用,FinalDrain 必须转 Faulted;完整 CPU perf-clock build、shared 协议与 ordered Submit 自测全部 PASS;CCEC AIC/AIV 通用实例、双入口、split runtime/finish、1:2 ELF、manifest 和 relocation 门槛 PASS。A5 B256 的 1280 task、1024 kernel、严格插入、96 Scalar Build、K2 异核执行、payload/DCCI/atomic 和 trace closure 全部 PASS。

性能:十个独立 B256 perf-clock 样本 min/median/mean/max 为 3.529903/3.643625/3.707843/4.093007 ms,相对 S6.2 中位 7.303955 ms 改善 50.113%。同代码 full-swimlane Submit 为 3.843832 ms,EfDrainControl 聚合核时由 369.541582 ms 降至 149.858920 ms;local/root Claim CAS 仍为 122880/10240,未缩减竞争人口。目标仍为 perf-clock 不高于 1.0 ms。

文档:同步更新总体设计、分离版实现过程和 perf_opt_record,记录证据、泳道路径、剩余差额以及不得把工作后移到 FinalDrain 冒充收益的约束。
目标:把 cross_core B256 real-compute 的 perf-clock 验收门槛收紧到 1.0 ms,并在不缩减 96 Scalar Build 资格、不改变 TensorMap 严格插入和 K2 执行合同的前提下验证剩余 EfDrain 队首阻塞。

取证:从 c338774 干净源码重建十轮同步基线,中位/均值为 3.678558/3.692169 ms;记录复用 BUILT 快照减少一次 Claim 返回型 atomic load 的十轮结果,中位仅改善 0.312%、均值回退 0.260%,判为波动内并撤回。

双槽:完整验证每 worker 两个 owner-local execution token,CPU 确定性交错证明 blocked fanin 可由第二槽绕过,CPU/CCEC/A5 语义与终态均通过,fanin load 从约 41K--43K 降至 29K--31K。

结论:贪心双槽十轮中位/均值回退到 3.773950/3.779694 ms;增加第二槽 primary 优先后五轮仍为 3.746665/3.749903 ms。payload 提前搬运、逐槽检查和 K2 负载偏斜抵消了轮询减少,全部过程代码已撤回。

后续:转向不提前 Claim、不占 token 的 ready-only 候选重访;先闭合依赖可见性、延后候选重访和 exactly-once 活性证明,再进入 A5 性能验证。
目标:继续以B256 real-compute perf-clock稳定不高于1.0ms为验收线,在不缩减96 Scalar Build资格、不改变严格TensorMap插入和K2双候选语义的前提下,验证未就绪fanin是否可在Claim前或payload绑定前延后。

实验一:在atomic-only执行control行内发布通用小fanin摘要,未ready任务保持BUILT并用本核单延后槽重访。CPU证明不发Claim、不占token且不触碰payload,但A5双候选重复轮询使fanin load升至82561,Submit为3.902965ms,停止扩展。

实验二:复用原BUILT到CLAIMED CAS只选唯一readiness owner,延后payload invalidate/copy和token绑定,并保存ready prefix。CPU、通用协议、CCEC和A5语义全部通过,ready读取精确收敛到1280;但五轮perf-clock中位5.097780ms,相对3.678558ms同步基线回退38.580%。

结论:减少fanin atomic次数不能脱离整体推进节奏评估;提前ownership、单延后槽和扩大的scanner控制流代价显著。两版生产代码、ABI、host oracle与测试改动均完整撤回,仅在perf_opt_record与分离版实现过程文档保留可复查负向证据。未push。
目标与范围:\n- 在1ms perf-clock目标下验证active token未就绪后的固定轮询间隔\n- 不增加任务上下文,不改变Claim、严格TensorMap插入、K2执行归属或96核Build资格\n- WaitForSlot与FinalDrain始终保留强制推进

验证结论:\n- skip=1十轮中位3.643993ms,但FinalDrain任务数由约37--48升至53--67\n- skip=2将fanin load由约42.5K降至约28.3K\n- 独立ELF交错A/B中skip=2中位3.763413ms,相对基线3.647333ms回退3.182%\n- CPU定向/完整门槛、CCEC构建与A5业务终态均通过

取舍:\n- 源码确认perf-clock在末个Submit闭合时结束,FinalDrain位于计时边界之后\n- 该候选会延后可执行token并把工作推向FinalDrain,不能认作有效收益\n- 生产与测试过程代码全部撤回,仅保留两份文档中的动态证据和后续门槛
保持每个任务的两个合法执行候选及96核Build资格不变,为正常路径选定与Build owner不同的稳定主候选。备选候选首次观察BUILT时仅本地让出一次,随后仍可接管;FinalDrain不执行宽限,避免把工作移出Submit计时窗口。

复用LocalStats原有紧凑空间保存有限宽限计数,候选游标前进即清零,不扩大运行时结构或共享ABI。补充首选先到、备选先到和首选token忙时有限回退的CPU确定性交错门槛。

完整CPU、CCEC与A5 B256业务终态均通过。十轮perf-clock中位由3.678558 ms降至3.637995 ms,改善1.103%;七对独立ELF交错A/B中6对胜出,中位改善3.761%。FinalDrain与fanin计数未增加。grace=2未优于grace=1,已撤回。同步记录实现合同、负向对照和1.0 ms最终目标。
本阶段尝试在次候选首次读取 execution control 之前执行既有的一次本地让出,以最多减少每 task 一次返回型共享读取。\n\n- CCEC 构建和三个 A5 B256 正确性样本全部通过\n- Submit 中位为 3.648742 ms,未优于 S6.7 的 3.637995 ms\n- 该改动还扩大了九个 CPU 场景的推进时序,收益不足以覆盖复杂度\n- 生产代码和临时测试断言已完整撤回,仅保留负向测量结论\n- 后续转向能显著改变 Claim 返回型原子竞争规模的结构性方案
在改动真实 cross_core Claim 前,扩展 atomic_max_topology CCEC AIV 探针,新增 per-task one-shot CAS 的 ld_dev 预过滤模式。每轮轮换首选候选直接 CAS,其余候选短暂本地延后后旁路读取;只有仍看到旧值才回退 CAS,winner 始终由 CAS 返回值裁定。

探针新增 atomic attempt、bypass skip 和 preferred winner 计数,并加入首选核延后 1000 NOP 的接管对照。A5 上全部语义断言通过:N12 nop100 将每轮 CAS 从 12.0 降至 4.4,loop/round 从 2309.3 降至 1392.3 tick;首选核晚到时首选胜率为 0,其他候选仍恰好产生一个 winner。

同步更新 atomic 使用指南、探针说明、性能优化记录和 cross_core 实现过程,明确该结论只适用于不复用、单调发布的 per-task atomic-only 状态;不把 ld_dev 当锁,也不外推到全局 cursor 或 96 核持续轮询。真实 Submit 收益仍需下一阶段 perf-clock 和业务终态验证。
qinchuanyu added 30 commits August 10, 2026 00:02
新增独立的精简 scheduler boundary callable,避免把宽参数 kernel 塞入既有综合 smoke 后放大 AICore 镜像并干扰原用例。边界测试与 PA 图形解耦,只使用公开 Tensor/Input/Inout/Scalar 和动态依赖语义。

覆盖三类上限:32 Tensor 与 16 scalar 同时满载且无 fanin;31 个 view 命中 16 个唯一 producer,恰好达到执行包 fanin 上限;31 个 view 命中同一 producer,验证 fanin 必须按 task 去重。kernel 真实消费全部 TensorDesc 与 scalar,并通过数值 golden 检查执行结果。

真实 A5 上 cross_core_ordinary、cross_core_dag、simt_cross_core_ordinary、simt_cross_core_dag 共 12/12 个模式/场景组合通过;9 个相关 C++ 协议与状态测试通过,pre-commit 全部通过。本阶段未运行 A5Sim。
将 cross_core_dag 的 Execute 领取从逐 Submit 的同引擎全体竞争,改为 replay 完成后由 AIC/AIV 两条中央单调 cursor 动态发放。复用原 execute_owner 控制字,不新增状态;Build owner、DAG fanin、TensorMap 严格插入、execution payload 和 FinalDrain 合同均保持不变。

候选曾同时覆盖 cross_core_ordinary,但 ordinary 单样本由 11.134 ms 变为 11.347 ms,确认无收益后完整撤回。DAG 保留版五个独立 A5 B256 进程为 4.149/4.153/4.173/4.183/4.216 ms,中位 4.173 ms;相对同日旧状态 5.137 ms 单样本约改善 18.8%。

正确性验证包括 cross_core_dag 的 15 类非 PA 真机边界:零 Submit、2047/2048 task、纯 AIC/AIV、跨引擎 INOUT、多输出、Build/Execute 偏斜、32 Tensor、16 fanin 上限及去重;另有 9 项 cross-core/SIMT 协议与状态 C++ 测试通过。未运行 A5Sim。
在独立 compact callable 中新增四类非 PA 图结构:16 个纯显式依赖、显式依赖与 TensorMap 命中的跨来源去重、单 task 32 个 fresh output,以及单 task 32 个 OUTPUT_EXISTING writer region。新增 kernel 会真实消费全部 producer、32 个输出描述符和 16 个 scalar,避免只检查控制字而漏掉 payload、DCCI 或跨核描述符传递问题。

四种 scheduler 均在真实 A5 上运行扩展后的 7 类 compact boundary,合计 28/28 数值 golden PASS。连同已有 12 类动态调度边界,每个新增后端现至少覆盖 19 类非 PA 场景,累计 76 个模式/场景组合。迁移记录同步固化覆盖范围和后续性能候选的正确性门槛;本阶段未运行 A5Sim。
补充跨 AIC/AIV、跨依赖来源的 fanin 上限场景:八个 TensorMap 自动 producer 与八个显式 producer 合并为 16 条唯一依赖,并在显式列表内重复 task id 验证两级去重。使用 256-float 独占 cache-line 区域和独立延迟 writer,避免测试自身的 D-cache 行覆盖掩盖依赖缺失。

新增默认 H=64 历史窗口下界场景,让 task64 读取延迟 task0 的 OUTPUT_EXISTING;复用既有业务图补齐本机 A5 可运行的 Bd32 output-view、延迟 fanout、AIV 到 AIC、ring 复用、长 fanin 和参数标签门槛。

四种 scheduler 在真实 A5 上分别通过新增 8/8,合计 32/32;当前累计每种 27 类非 PA 场景、共 108 个模式/场景组合。Python 场景缓存单测 140/140 通过,Ruff 与 diff 校验通过;未运行 A5Sim。
新增仅适用于 shared simt_cross_core_dag 的 simt-builder-clock 隔离构建,编译期关闭普通泳道、atomic 观察、perf-clock 与 Submit-PMU,避免不同证据链互相污染。

16 个 AIV0 Builder 的 4 个 persistent warp leader 分别在本地累计 request acquire、output reference resolve、materialize、metadata publish、fanin lookup 和 execution publish 六个阶段;每个 leader 退出时只向独占 64B cache line 发布一次聚合记录,不产生逐 task GM trace。

host 与 Python 对 64 个 leader 的拓扑身份、task 数、六阶段和 final ELF marker 做失败闭合校验;明确 clock() 属于 AIV Scalar cycle,并按本机 1.649731 cycles/ns 校准输出,不再误用 1GHz SYS_CNT 口径。

真实 A5 PA Case1 B256 完成 64/64 leader、1280/1280 task 和数值 golden 闭合:lookup_fanin 占 58.99%,resolve_reference 占 24.09%。普通 perf-clock 单次 3.289ms,与修改前五次中位数 3.243ms 同量级。Python 单测 145/145 通过。

记录并撤回两类无效候选:metadata 提前发布五次中位数回退 5.42%;一次塞入全部 control 子指标会稳定触发设备超时,恢复六段窄聚合后通过。
SIMT DAG Builder 解析 fresh-output 引用时,原先会按 Tensor 参数重复读取同一 producer output cell 的发布 control。利用 descriptor 全量写入、clean-out/threadfence、control 一次发布的既有合同,仅缓存最近一个已经 acquire 并验证成功的 producer control;连续 output slot 复用该确认,producer 变化时仍执行原 atomic acquire。

每个 slot 的边界和 descriptor owner 校验保持不变,不增加按 Tensor 扩张的本地数组,也不依赖 PA task 类型、batch、固定次序或 shape。该修改适用于所有 publish-once 的跨 task fresh-output 引用。

真实 A5 PA B256 五次端到端中位数由 3.30836 ms 降至 3.27825 ms,改善 0.91%;SIMT Builder 聚合周期下降 0.65%,其中 resolve_reference 下降 2.42%。受影响 backend 的 27 类非 PA 动态调度、协议上限、跨引擎 output/view、fanin 和 INOUT 场景全部 golden PASS;未运行 A5Sim。
自动 INPUT/INOUT 依赖会独立保留 descriptor creator owner,DAG lookup 只需寻找 owner 之后的最新覆盖写者。若本 task 的所有自动查询 Tensor 都带合法 owner,将公共扫描下界提高到最早 owner 的后一项;只要存在 external Tensor,继续完整扫描原 history 窗口。

实现不新增共享状态、atomic、DCCI、metadata 字段或按 Tensor 扩张的本地数组,也不改变 writer metadata 发布顺序。owner 本身仍由原 fanin 合并校验保留,owner 后的连续 INOUT writer 一个不漏;逻辑只依赖公开 owner/history 合同,不含 PA 拓扑特例。

真实 A5 PA B256 五次端到端中位数由 3.27825 ms 降至 3.04853 ms,改善 7.01%;lookup_fanin 聚合周期下降 23.00%,Builder 六阶段合计下降 11.95%。SIMT DAG backend 的 27 类非 PA 边界再次全部数值 golden PASS,覆盖连续 INOUT、跨引擎 output、sub-view、32 fresh output 和历史窗口下界;未运行 A5Sim。
DAG lookup 构造查询区域时已经读取 descriptor、manual 标志并计算 Tensor 区域,调用方返回后又完整重复一次,且第二次得到的 address/lo/hi 没有消费者。本次把 creator owner 校验与 fanin 合并收进第一次遍历,并在同一遍历完成所有非 OUTPUT descriptor 的区域合法性检查。

lookup producer 继续暂存在原数组,扫描后仍按 Tensor 参数顺序合并;显式依赖位置、fanin 集合与顺序、metadata 发布、history 下界及 writer 扫描顺序均不变。manual dependency、OUTPUT_EXISTING 和 NO_DEP 仍受校验,不新增共享状态、数组、atomic 或 DCCI,也不含 PA 特例。

真实 A5 PA B256 五次端到端中位数由 3.04853 ms 降至 2.99014 ms,改善 1.92%;lookup_fanin 周期下降 8.38%,Builder 六阶段合计下降 2.67%。受影响 backend 的 27 类非 PA 场景再次全部 golden PASS;未运行 A5Sim。
按调度角色拆分 shared schema-v5 的观察合同:same-core 继续严格展开并校验每核 1280 个 Submit/Claim,四种 cross-core 不再伪造逐核 Submit,只校验真实 OrchestrationReplay/FinalDrain、Kernel、Atomic 与 DCCI 闭合。

cross-core 复用首个固定端点槽保存 64-bit SYS_CNT compact-clock 锚点,并在 raw metadata 中记录 scheduler_mode;converter 与 exclusive analyzer 据此选择正确的层级模型。补齐 Build/Execute tournament CAS 站点的 schema-v5 ABI 解释。

新增 cross-core 正向闭合和 same-core 拒绝错误形态的单测,相关 Python 用例 94 项通过;真实 A5 PA B256 五种路径的 raw、merged 与 exclusive analysis 全部 PASS,dropped_records=0。迁移记录补充当前时间、Atomic 数量、观察边界及与 standalone 的结构差异。
- 否决 Host 完整 TaskPlan 与单 device planner,明确两者都会提前提供 PA 调度答案
- 恢复 96 个 Scalar 独立回放真实 Submit,并以 per-task Tournament 选唯一 Build owner
- 将 TensorMap 合同改回逐 task completion 强链,空 writer 也必须推进严格插入前沿
- 规定 replay identity 与 replay_done 双重封口,再由 AIC/AIV 扫描运行时执行包
- 保留旧中央计划版本的性能数据作为历史证据,但不再把它描述为当前正式协议
调度协议:\n- 96 个 Scalar 均从运行时 context_lens 回放真实 PA callback,并以 per-task 两级 CAS Tournament 动态选择唯一 Build owner\n- 去除正式路径对 Host Build ticket、metadata writer bitset 与 AIC/AIV task-id 表的消费\n- 直接由 PaOrchestrationState 的 block-group 现场推导任务身份,不再在设备正式路径构造重复 FullPaTaskPlan\n- 每个 task(含空 writer)按 N-1→N 的严格 completion CAS 发布 TensorMap 插入完成\n- 增加 task_count+identity replay seal,并恢复 replay_done 生产封口\n- AIC/AIV 依据运行时 exec cell 全区间扫描,保持 Build/Execute owner 解耦并由 FinalDrain 完整收口\n\n观察与门槛:\n- 修正 insert handoff 为返回型 CompareExchange 泳道语义,新增 append-only replay seal atomic site\n- 重写 central-ticket/random-access/sparse-writer 旧测试为全员 replay、运行时 Execute、严格插入链与跨核 owner 门槛\n- B256 门槛锁定 1280 task、122880 Submit/Claim、122880 local CAS 与 10240 root CAS\n- CPU 全量严格编译通过;B1、G0、mixed G0/G1/G2、B256 主程序均 semantic_status=PASS\n- 72 项泳道转换测试与 B1 trace 转换通过,旧 SharedBuildDispatchTicket 调用数为零\n\n本提交只建立 CPU 正确性基线,尚未宣称 A5 功能或性能结果。
正确性修正:\n- replay seal 在每批首个 Submit 前混入实际 batch/context_length,区分 task 拓扑相同但动态 shape 不同的输入\n- 每核首次读取 context_lens 前执行活动 cache line 的 DCCI invalidate + DSB,补齐 A5 Scalar 无 cache coherence 下的 Host 输入发布合同\n- 为 context_lens invalidate 追加独立 DCCI site,并同步 Host 校验、泳道转换和操作映射\n- 保持 Host task plan 仅作为 heap 准入和运行后独立 oracle,不写入设备调度状态\n\n独立测试:\n- 测试 oracle 不再调用 BuildSharedPaBatchPlan/SharedPaPlannedTaskAt,改用独立 direct block-loop 枚举\n- 覆盖 G0、G1/G2/G4、context=8193 短尾,以及 context=1/8192 同为 5 task 但 seal 必须不同\n- B1 raw/merged 均精确包含 96 条 context_lens DCCI、96 次 replay seal,旧 Build ticket 调用为零\n- CPU 全量严格构建、72 项 converter 测试及 B256 完整入口通过\n\n同步修正设计与过程文档,明确逐 task completion 链、动态输入 seal 和输入 DCCI 边界。本提交仍不宣称 A5 上板结果。
在全员真实回放协议稳定后,删除已不可达但容易误导后续开发的旧实现:\n- 删除 Host task identity、metadata writer bitset 和 AIC/AIV task-id 表的编码/Populate 链\n- 保留 BuildSharedHostTaskPlan 仅用于 heap 准入及运行后独立结果 oracle\n- 删除 device 中央 Build ticket、dispatch identity/route 解码、ticket watchdog 与 random-access PA 构参链\n- 收敛 split-finish 为 per-task Tournament winner 跨 TU 的唯一正式路径\n- 删除 Dispatched=true 模板分支,保持 strict completion 与 runtime Execute scan 不变\n- AtomicSite 42 继续作为 append-only ABI 保留,但正式代码保持零调用\n\n本提交刻意不修改 SharedBuildDispatchState/SharedExecDispatchState 布局;状态缩减与 CCEC 搬运边界将在下一独立提交处理。CPU 全量 -Werror 门槛及 B1、mixed context、B256 完整入口均继续 PASS。
删除旧 Host Build/Execute 计划表和设备端死分发状态,将调度尾部收缩为 replay identity seal 与 AIC/AIV runtime scan cursor 三个 128B 隔离槽,shared ABI generation 升至 16。

统一 site 57 为 SharedReplayIdentitySeal,保留 append-only raw 编号;补齐 terminal cursor、padding canary、旧 Build ticket 零调用、96 核真实 replay 和 return-ready insert handoff 的 CPU/Host/泳道门槛。

修正 perf-clock 起点,禁止 task0 覆盖 startup increment 前读数;B256 A5 startup-to-FinalDrain 为 2.443455 ms,每核两次边界读数精确闭合。同步更新 CCEC 五类 callback finish 链接门槛、converter 与 atomic poll 测试。

迁移并完善构建执行分离设计文档,明确旧 Host 预制两阶段、当前 S7 全员回放、候选设备内 Plan/Build/Execute 三阶段的合同差异;量化 B256 中央 ticket 与 G8 Tournament 的 atomic 次数、竞争宽度及可比性边界。

验证:CPU swimlane/perf-clock 全量门槛 PASS;CCEC swimlane/perf-clock 构建与 manifest PASS;converter 72/72 PASS;A5 B256 perf-clock 全部语义、执行、后处理断言 PASS。
基于 S7 B256 full-swimlane,按 block、lane 和 task_id 精确关联 claim.lost 与 local/root return-ready CAS。记录 AIC/AIV 的 loser 数量、Atomic 调用次数、聚合 core-time、每核成本和单 loser 延迟,并明确 core-time 不能冒充 Submit 墙钟时间。

同时补充当前 replay_done 后执行模型的设计边界:单纯提前 Execute 主要改变工作排布,无法消除全员 replay 与 Build 工作;若要获得结构性收益,需要独立的 device runtime Plan/descriptor,并保持 TensorMap 严格插入合同。
新增面向外部评审者的完整问题说明,区分旧 Host 预制两阶段、当前 S7 全员真实 replay 和候选 device Plan/Build/Execute 三阶段,记录当前真机基线、Claim loser Atomic 规模及不同证据的可比性边界。

明确 canonical Plan、RuntimeTaskDesc、planned_frontier、Build reservation 与严格 TensorMap 插入链的独立合同,补充 A5 无 cache coherence 下的 PlanCell 发布/读取顺序、结果驱动控制流、流式 Execute 发现和完整终止条件。

整理固定 Plan owner、continuation 迁移、多 producer 合并等候选的收益与风险,给出外部评审问题清单、方案对照矩阵和分阶段验证顺序。
将当前无 Host 预制计划的全员 orchestration replay、逐 task tournament 实现完整迁移到 cross_core_ordinary_dynamic,保留独立的 CPU/CCEC 构建、协议探针、测试、输出命名和后续设计文档。

将 cross_core_ordinary 恢复到 405c060 的 Host 预制 SharedHostTaskPlan 基线,保留 central Build ticket、稀疏 metadata-writer 插入链和独立执行调度,便于与动态方案进行同口径性能对比。

为共享泳道元数据显式区分 central_ticket/fetch_add 与 all_worker_replay/compare_exchange;公共 converter 保留旧 central-ticket raw 的只读兼容,并增加原子 ABI 正反向校验与混用拒绝测试。

在两套实现的 test_record/2026-8-11 README 中记录 A5 B256、真实负载 6/28/4/1 的 perf_off 数据,以及 1/1/1/1 附加泳道口径。泳道 JSON、raw 和 exclusive 分析文件均不纳入提交。

验证:两套完整 CPU 协议测试 PASS;两套 swimlane/perf-clock CCEC 构建 PASS;公共泳道 converter 75 项回归 PASS;A5 device0 上两种负载的执行、语义、后处理与 dropped=0 校验 PASS。
建立 cross_core_aicpu_plan/ordinary/scalar_build 独立实现目录,以现有 cross-core ordinary 调度器作为后续接入基线,不改动原模式。

新增 canonical RuntimeTaskPlan ABI:64B 头、最大 4416B 无指针 payload、4608B cell、六条 128B 隔离控制线及外置 StorageRef;TensorDesc、CreateInfo、完整 OutputRef、scalar 和显式依赖均按固定 wire 布局编解码并严格校验。

补齐 PA adapter、CPU malformed/多线程门槛和 A5 AICPU→AIV 多 cache-line 发布获取探针;B256 门槛闭合 1280 个 PlanCell、N+96 中央 ticket 以及 partial-clean 故障拒绝。

CCEC Host 为 SchedulerState 和 4352 个 PlanCell 使用 128B 内部对齐分配,每轮只清零并发布约 19.125MiB storage 引用,不写 task identity;CCEC AIC/AIV 已实例化返回型 atomic consumer 原语。

同时保留旧 replay 主入口作为迁移基线;本提交尚未把 AICPU producer 接入 A5 Build/Execute,不宣称端到端功能或性能收益。
新增独立 AICPU Plan backend,真实 dlopen 并执行 paged_attention orchestration SO;Begin 按 callback 到达顺序分配 task_id,Alloc 与 MixedKernels 提供任务身份,Finish 在生命周期内把真实 L0TaskArgs 固化为 canonical PlanCell。

producer 不执行 Materialize、TensorMap、Build 或 kernel,不包含 task_id%5、Host PA 公式或设备 PA 公式;pending cell 仅用于根据下一次真实 Begin 确定 UP 的 following-group 与 batch 尾。

Host smoke 以 G1+G2 实际生成 14 个 cell,闭合 Alloc/AIC/AIV=2/6/6、全部 wire 字段复验和 CANN 9.1 AArch64 ELF 导出;构建启用严格告警门槛。

新增独立 CPU Scalar 调度门槛:Plan 关闭后 96 worker 通过中央 FetchAdd 领取,逐 task exactly-once,严格 N-1→N 插入 completion,N+96 ticket、96 arrivals 和唯一 release 全部闭合;B256 为 1280 task/1376 ticket。

CPU 门槛继续验证 32 AIC/64 AIV 的最小跨核路由,覆盖 B1、G0/G1/G2/G4、mixed 和 B256;完整 TensorMap payload、生产 Build、真实 kernel 与 A5 端到端留待下一阶段。
功能与协议:
- 由真实 AICPU orchestration callback 生成全局唯一 canonical Runtime Plan,Host 只提供输入、容量和外置 GM,不下发 task identity 或 dispatch 答案
- 将 Plan wire 升级为 ABI v2,在通用 adapter_data 中显式携带 PA batch_start;Scalar 只消费并校验该 provenance,不再从 task_id 恢复业务上下文
- 96 个 Scalar 在 Plan Close 后通过中央 FetchAdd 领取 Build,严格闭合 N+96 tickets、96 arrivals 和唯一 release,同时保留每 task N-1→N 的 ordinary TensorMap 插入链
- 完整接通 Materialize、writer metadata、Fanin、跨核 exec payload、AIC/AIV Execute 与 FinalDrain,Build owner 与 Execute owner 独立

A5 内存与构建合同:
- 对外置 PlanCell 建立 128B atomic control、精确 payload clean/invalidate 和四产物 manifest/SHA 门槛
- 修复同一 GM 跨轮复用:上一轮 control clean 后,新轮先 civac 全部 control,统一 dsb sy + isb 再 acquire-load;Host 同址两轮、AArch64 反汇编和 A5 多轮均通过
- 将 direct CCEC 路径的 LocalStats 放入 AIC/AIV 各自 block_local,避免大型栈对象跨 noinline 引用造成 WorkerResult 首 cache line 污染
- 删除正式构建中的旧 split callback/replay 入口,保留 append-only trace ABI 和 fail-closed 混件检查

观测与验证:
- 新增 RuntimePlanBuild、Plan control Atomic 和 Plan payload/StorageRef DCCI 观测,converter/analyzer 按真实 Materialize identity 闭合,不合成 Submit/Claim/winner-loser
- CPU 协议、storage、PA adapter、B1/G0/G1/G2/G4/mixed/B256、ASan/UBSan、完整 CPU B1/B256 全部通过
- AICPU Host/AArch64 smoke、CCEC swimlane/perf-clock、A5 B1/B256、同地址与同进程多轮全部通过;四产物 SHA 校验通过
- 当前真实 6/28/4/1 负载 5 轮中位:B1 pipeline 371.006us,B256 pipeline 5180.220us;冷启动与 warm 数据在文档中分开记录
- 最新 ABI v2 B1 泳道 2165 条物理记录、0 drop,专用 exclusive analyzer 通过
冻结 ordinary SIMT 首版合同:继续直接消费 canonical RuntimeTaskPlanCell ABI v2,由单个 mixed-AIV VF 启动 128 个 thread、四个 warp lane0 leader,并以动态中央 ticket 分配 Build task;不引入 Host task table、FullPaTaskPlan、task_id%5 或第二份 SIMT request wire。

新增四 leader CPU 门槛。builder 外层一次 Attach closed/frontier/fatal 并缓存 N,热循环每票仅保留 build_next FetchAdd;精确验证 N+4 ticket、每 task exactly-once、真实 N-1→N completion、四个不同 leader 各一次 arrival、唯一 release。通过延迟 task0 证明后继不能越过严格插入链,并为 control/payload 损坏补上 fatal/no-release 收口。

新增 canonical Plan-v2 CCEC compile gate:真实 static SIMT VF 与 mixed AIV async_invoke 同 TU,锁定四个 lane0 leader、返回型 control atomic、逐行 DCCI、二次 control 校验、V到S收口、唯一 GLOBAL AIV/LOCAL SIMT entry 以及 SIMD_SIMT_MIX_VF=4 metadata。该门槛明确不冒充 A5 内存模型或完整 Build 证据。

验证包括普通 -Wall/-Wextra/-Werror、ASan+UBSan、Scalar Plan 协议回归与 CCEC object/bitcode/ELF 静态门槛;同步更新设计和实现过程,记录动态 ticket 与后续静态 residue A/B 的边界。
ordinary SIMT 不能以 PA Case1 的 ordinary_count=0 证明 TensorMap 泛化。本提交新增四 leader 通用 writer 门槛,直接复用 PublishSharedTaskWriterDelta 与 CollectSharedFanin,验证真实 bucket payload、seq/tail、writer<consumer 查询、零 writer 严格交棒,以及重复和损坏前序的 fail-closed。

将 Runtime Plan Build population 从固定 96 抽为编译期 kRuntimePlanBuildWorkers。ordinary Scalar 默认仍为 96,N+96 ticket 与 96 arrivals 行为不变;SIMT 后续可配置四个 warp leader,同时 Execute 与 FinalDrain 仍保持全部 96 Scalar。独立抽出 release 等待 helper,允许非 builder Scalar 只等待 Build 收口而不误报 arrival。

同步设计和实现记录,明确现有 Scalar Finish 是 PA symbol-only 快路径,SIMT 通用实现必须走 Wait turn、PublishSharedTaskWriterMetadata、Handoff completion 的普通 TensorMap 链。

验证:SIMT protocol/writer gate 严格 Werror PASS;ASan+UBSan PASS;writer gate 50 轮压力 PASS;ordinary Scalar CPU perf-clock B1/B256 全量语义回归 PASS;git diff --check PASS。
本阶段不接正式 Host/kernel 运行入口,先把 ordinary SIMT 从协议壳推进到可生成真实 VF 机器码的完整 Build 业务叶子,并保留与 Scalar 直接复用失败的精确证据。

实现内容:
- 新增值语义 canonical Plan v2 builder,避免 TaskArgs 与 exec source 中运行期 local/GM pointer union 触发 CCEC 地址空间 lowering 错误;
- 完整实现 Plan acquire、fresh output Materialize、通用 ordinary/symbol metadata、严格 N-1→N completion、fanin、metadata TaskCell/SharedExecCell 终态;
- writer payload 统一为 stcg bypass store→threadfence→atomic control,DCCI 仅用于 reader acquire;
- completion 发布前失败逆序撤销本 task 的 published/last_writer,heap 与已提交 metadata 保持整轮 fail-stop 重置合同;
- 所有 fanin 统一过滤到 [N-H,N),拒绝 self/future 与 NoDependency+SharedOutputRef;
- 采用 SIMT VF TU 与 Scalar continuation TU 分离的 device identity,避免 include guard 和调用属性互相污染。

验证与边界:
- dav-c310-vec -O3 -Wall -Werror 生成完整 BuildCanonicalPlanTask machine object 并完成双 TU 静态链接;VF 为唯一非空 LOCAL 符号,mixed entry 为 GLOBAL,无 undefined GLOBAL;
- 负向探针稳定复现直接复用完整 Scalar Build 时的 callback 属性与 local/GM 地址空间阻塞;
- CPU O2 与 ASan/UBSan 覆盖真实 SchedulerState 映射形状、ordinary_count>0、symbol history、future writer、四类 fanin、output rollback 和非法 Plan;
- 文档记录双 TU、A5 writer 内存模型、fail-stop 边界以及正式 runtime 尚未接通,未把 compile gate 冒充上板结果。
本阶段把窄 canonical SIMT Build 从编译用 mirror 接到 ordinary Scalar 已有的真实 SchedulerState:直接复用 SharedOutputCell、SharedWriterHistoryCell、ordinary TensorMap ring、8-shard heap、逐 task insert completion、TaskCell vend/flag、SharedExecCell 与双 fatal control,不新增第二份 GM sidecar,也不从 task_id 或 Host 表恢复 PA 业务答案。

写侧保持真实 ring 的 head/tail/absolute-seq 协议,但针对 A5 SIMT 使用逐 64-bit stcg、fence 后发布 atomic control;读侧继续复用 control-DCCI-payload-control 双检。四个 leader 的 Build owner 固定为现有策略允许的 0..3,物理 leader 身份由独立 report 表达。修正 SharedWriterHistoryCell 和 SharedRegionValue 的 structured reinterpret 别名问题,补齐 Plan/Exec 常量、真实布局和容量静态断言,并在 heap FetchAdd 前拒绝空 heap base。

新增真实状态 CPU 门槛,覆盖 fresh output、symbol future-writer、同 bucket 多条 ordinary writer、8-shard heap、metadata completion、owner 0..3 的 ExecCell BUILT、双 fatal、越界 accessor 与失败不推进 heap;O2、ASan、UBSan 全部通过。新增 dav-c310-vec O3/Werror 机器码与 IR 门槛,锁定真实状态访问、stcg/fence writer 和 atomic/DCCI reader 方向。

新增 production-shape 双 TU CCEC gate:一个 mixed AIV0 entry 启动 128-thread/4-leader VF,动态执行 Attach/Take/Bind/完整 Build/Arrive/Release;success 和 fatal 都先 V-S join,再进入独立 Scalar continuation。最终 ELF 只有一个 GLOBAL entry、一个 LOCAL VF、MIX_VF=4,无未定义符号或 relocation。该 gate 尚未接正式 RunScheduler、Host、manifest 或 A5,文档明确不把它冒充完整 mode 或性能结论。
补齐 AICPU Owner、逐 TaskPlan 和逐 operation 的设备侧追踪链路,记录 atomic acquire、dc cvac/dc civac、DSB/ISB、关键 GM store 与 payload 校验,并通过八组四时间戳相关把 AICPU CLOCK_MONOTONIC_RAW 与 AICore SYS_CNT 映射到同一联合泳道。

扩展 owner/backend ABI、Host 回拷、manifest 身份和 converter 校验,让 task 五段、Owner 五段及低层 operation 按真实父子区间展示;连续 poll/cache 操作保留精确 calls/lines 与首末 cell,不展开成海量单点记录。

针对 PlanAheadClosed 收缩过度维护:生产期不再逐 batch 重复推进 planned_frontier;每个实际 payload/control 仍精确 clean,但逐 task 的两次 DSB 和一次 ISB 改由 Close 前统一收口;cell-control 复用检查按 128-cell 单调前缀处理,B256 从全容量 4352 条缩减为实际 1280 条。StreamingFuture 的并发可见性协议保持不变。

强化 trace-on/trace-off、正式 4352-cell 容量与 1280-task 前缀、同地址复用、零 drop、两种 pipeline policy 和 AArch64 指令序列门禁;补充 27 项泳道转换测试及 ASan/UBSan 覆盖。删除 ISB 的负向实验因两次稳定回退而撤销,并写入 investigation。

真实 A5、B256、real-compute=6,28,4,1 的 trace-free 20 轮中位数:producer_exec 1944.186us→1281.816us(-34.07%),plan_time 2031.848us→1366.861us(-32.73%),pipeline_e2e 4529.819us→3850.988us(-14.99%),AICore wall 基本不变。

保留 task 明细、优化前 atomic/cache 明细及优化后 7940us full-trace 三份联合泳道;优化后 operation trace 为 19294 records、零丢失,task_publish 下 DSB/ISB 为零,并在日期 README 中记录配置、计数和性能口径。
新增真实 HCC AICPU 与 CCEC AIV Scalar 单点探针,围绕独立 control、ordinary payload、ARM/AICore atomic、DCCI、DSB、dc cvac/civac 和 ld_dev/st_dev 建立双向 fresh/stale/other 精确矩阵。

- AICPU→AICore 使用 tested control 作为唯一 doorbell,验证 ordinary payload 后以 release atomic 发布时无需逐次 dc cvac、显式 DMB/DSB 或 ISB;同时用已缓存 ordinary control/payload 负例证明 Scalar 返回型 atomic 与 payload DCCI 仍不可省略
- AICore→AICPU 增加 32 条 dirty cacheline 的 default/OUT DCCI 有无 DSB 对照;无 DSB 路径五进程各 20480 轮、655360 条 line 全 fresh,无 DCCI 对照无论是否 DSB 均全部 stale
- 每 64 轮加入 atomicExch 后 1048576 个纯 NOP 的静默 ACK 门禁,排除消费者 reference barrier 和下一轮 Scalar atomic 对 DCCI 完成的隐藏助攻
- 显式关闭编译器自动 Scalar 与 kernel-end DCCI,并结合优化后 device LLVM IR、AArch64 owner ELF 反汇编校验被测指令窗口
- 将结论限定为当前 A5/CANN main aicpu_scheduler Path-A,继续为 reader DCCI、MMIO、其他后继及未验证平台保留 DSB
- 更新缓存一致性文档和 atomic 使用手册,明确区分 Host/SDMA→AICPU 与 AICPU↔AICore Scalar 两类一致性场景

验证:
- ./build.sh build
- ATOMIC_PROBE_DEVICE=0 ./build.sh run,五个独立进程全部 PASS
- pre-commit 针对全部改动文件通过
基于独立 AICPU/AICore 同构能力门禁,收缩 PlanAheadClosed 的 PlanCell 发布协议。AICPU 完成普通 payload 写入后,以 release atomic 发布 Published control;AICore 继续通过返回型 atomic 观察 control,并在读取 payload 前执行 DCCI。

删除 task.publish 中逐 task 的 payload/control dc cvac、DSB 和 ISB。同步修正跨轮复用:PlanAheadClosed 对实际使用的单调 cell 前缀 release-store Empty,主动重建 control 所有权,避免 civac 将旧 dirty Published 值写回 GM。StreamingFuture 的并发发布协议及 Host/SDMA 输入维护保持不变。

扩展 AICPU operation trace 与泳道转换,新增 atomic_store_release 事件、目标和值域校验;增加独立 converter 单测,并用双 policy Host smoke 和 AArch64 反汇编门禁锁死 PlanAheadClosed 与 StreamingFuture 的不同指令序列。

真实 A5 device 0、B256、1280 tasks、real-compute=6,28,4,1、trace-free 同进程 20 轮全部通过。Producer 中位数由 1279.676us 降至 1062.002us,减少 17.01%;Pipeline E2E 由 3834.191us 降至 3626.891us,减少 5.41%;AICore wall 仅变化 +0.08%。full trace 中 task_publish 的 cache clean、DSB、ISB 均为 0,operation record 16714 条且无 drop。

回归覆盖 CPU 完整协议与调度 smoke、AICPU 双 policy SO、A5 B1 同址五轮复用、B256 性能与结构泳道、28 项 converter 单测,以及 headers、ruff、pyright、cpplint、clang-tidy 和 diff 检查。详细协议、计数、数据口径与复现命令记录在 2026-08-12 测试说明和实现过程 8.8 节。
PlanAheadClosed 在 AICore 启动前由单一 AICPU producer 完成整份计划,因此将诊断性完整 wire 扫描、重复共享状态复核和 canonical padding 校验移出正常热路,保留跨处理器消费所需的 envelope、PA 解码与最终连续前缀检查。新增 PA_RUNTIME_PLAN_DEBUG_FULL_VALIDATION,调试构建仍可恢复完整 producer/consumer 校验。

删除每个 PlanCell 发布前的 Empty release-store 与 acquire-readback,实际任务直接用本轮 Published release-store 覆盖旧 control;planned_frontier 作为本轮唯一有效边界,允许未使用后缀保留上一轮 Published。B256 共删除 2561 次 atomic 调用,必要的 1280 次 Published 发布点和 Close 对 [0,N) 的终态验证保持不变。StreamingFuture 的并发复用、缓存维护和状态复核不变。

补充同地址不清 control 的长计划到短计划复用反例、默认/trace/debug Host smoke、AArch64 stlr/cache/barrier 反汇编门禁、CPU Runtime Plan/PA adapter 回归和真实 A5 验证。保存 7218us、5728us、5069us 三份联合泳道图及中文说明。

A5 B256 real-compute=6,28,4,1 的 20 轮中位数:Plan 1059.846us→876.248us,producer 989.205us→793.615us,Pipeline E2E 3528.444us→3363.339us;20/20 execution、semantic、postprocess PASS,AICore wall 基本不变。
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