Fdwic swimlane deps#4
Open
nalinaly wants to merge 92 commits into
Open
Conversation
added 30 commits
July 17, 2026 08:16
Inline runtime submit helpers into the caller translation unit, add empty-runtime and weak-submit-noinline controls, and harden object, symbol, layout, pytest, and device-matrix validation.
增加共享 PA 调度模型及 CCEC、AscendC、CPU 三种独立后端。 支持可配置 NOP、阶段 profiling、本地泳道采集与标准库转换。 迁移 PA atomic 分析,补充独立复现指南和关键路径中文注释。
覆盖 standalone PA 的共享 atomic 调用点,记录 site、op、任务归属和动态次数。 按原调用语义区分 return-ready 与 source-issue 边界;CCEC 通过返回值依赖 MOV 后读取 SYS_CNT,不插入 DSB,也不强制发布型 atomic 消费旧值。 将 Atomic 与 ClockBaseline 合并到 AIC/AIV scalar 泳道,补齐 Claim attempted/won schema,并以 atomic_trace_calls、逐核 record 数和 dropped 建立闭环。 泳道采集默认开启逐 atomic 记录,转换器补充边界标识、标量泳道布局和 schema 回归测试。 验证:转换器单元测试 4/4 通过;CPU、CCEC、AscendC 三后端构建通过;A5 CCEC b1 调度语义、atomic 计数、记录容量和泳道后处理全部通过,记录丢失为 0。
在 pa_scheduler standalone 目录内复刻已验证的 Main AICPU Path-A:dispatcher 负责安装内容指纹命名的 owner SO,mode0 JSON 注册统一 simpler_aicpu_exec 入口。 owner 在配置前保存 108 个物理子核的 PMU 控制与 selector 状态,只持有实际开放的 32 AIC + 64 AIV,并按 bitmap 完成失败回滚和退出恢复。 host 直接复用 owner control 内嵌的寄存器基址表,固定 Restore、MMIO unmap、device reset 的清理顺序,不再依赖外部 msprof 配置 selector。 增加 owner bitmap、1 AIC + 2 AIV 三元组、worker 槽位、物理角色和实际运行核集合闭环校验。 验证:精确暂存快照 CCEC 全量构建通过;A5 empty、100000 NOP、2x100000 NOP 三组均为 96/96 可信记录且 Restore PASS;total 中位数约 214、56568、112994 cycles。
为PA scalar性能分析增加可与单次atomic约160ns直接对照的I-cache miss量级,避免继续从热循环aggregate residual臆测单次开销。 测试方法: - 新增CCEC icache-single PMU窗口和可配置的每核trial数 - 使用8B、128B line对齐的唯一目标函数,并在窗外执行64KiB指令sweep制造capacity eviction - cold/warm复用同一target、harness与PMU gate;warm预取放在read-clear前,避免窗外事件污染 - 每个phase丢弃一次分支训练样本,并在各角色内平衡cold-first与warm-first顺序 - 同时读取CNT_TOTAL、CNT6、CNT7和1GHz sys counter,以cold-warm差值计算cycles/ns per miss - 构建期强制校验target、harness、thrash的符号尺寸、128B对齐和链接顺序 正确性门禁: - 逐核要求cold CNT7等于trials、warm CNT7等于0 - 要求cold-warm周期和时间差为正,且96个物理子核全部完成配对校准 - host分别输出ALL、AIC、AIV统计及可直接用于scalar归因的换算公式 - 与远端atomic_trace_calls合并后,WorkerResult诊断sidecar按64B扩展到832B;生产DistCore ABI及既有字段offset不变 A5实测结果: - 64 trials/core连续10轮全部通过,ALL中位86.596ns/miss,范围86.532到86.792ns - 128 trials/core连续5轮全部通过,ALL中位89.629ns/miss,范围89.615到89.648ns - 15轮均满足每次cold严格增加一个CNT7 miss且warm miss为0 - AIC/AIV只相差数ns且方向随时段变化,不建立角色伪精确常数 - scalar分析统一采用T_icache_est_ns = CNT7_miss_total * 90;1000次miss约为90us 使用边界与文档: - compulsory、capacity、conflict miss都会计入CNT7总数 - 90ns是96核并发cold/warm校准的一阶等效标尺,不宣称为预取、重叠miss和不同下级命中条件下严格可加的stall - 同步更新PA分析、独立复现指南和atomic_probe测试数据表,记录原始日志、AIC/AIV分项及公式 验证: - 合并远端最新atomic泳道提交后,CCEC完整构建、mixed ELF及I-cache布局检查通过 - CPU构建与smoke全部通过 - 原始A5 icache-single长测及暂存快照短测通过96/96核和精确CNT7门禁 - git diff检查通过
在每个worker的参数构造前至最后一次Submit返回后门控PMU,采集CNT_TOTAL与CNT0..8并记录实际start/stop状态。 校验owner bitmap、worker映射、物理角色、triplet和计数器风险门槛,按ALL/AIC/AIV导出PMU-only JSON;仅在owner恢复与runtime清理成功后无覆盖发布。 补齐CPU/AscendC空hook与runner后端门禁。
记录逐atomic边界、计数闭环和256 batch ClaimMax定量归因。 补充自包含owner、submit-all PMU-only JSON合同、三轮256 batch原始取数及使用限制。
# Conflicts: # tests/atomic_probe/pa_scheduler/PA调度器独立复现与泳道使用指南.md # tests/atomic_probe/pa_scheduler/ccec/build.sh # tests/atomic_probe/pa_scheduler/ccec/host.cpp # tests/atomic_probe/pa_scheduler/ccec/kernel.cpp # tests/atomic_probe/pa_scheduler/ccec/pmu_probe.h # tests/atomic_probe/pa_scheduler/common/pa_model.h # tests/atomic_probe/pa_scheduler/run.sh
- 为 QK/PV 接入完整 128x128 Cube matmul 流水,为 SF/UP 接入 Vector add/mul 流水并等待 GM 写回完成 - 增加显式 real-compute 模式、分类型迭代次数、独立 workspace 与 active/sentinel 数值校验,默认仍保留三后端 scalar-nop 基线 - 将负载模式、次数、计算单元映射写入 PMU sidecar 与泳道元数据,并校验 Submit placement 和非零引擎计数闭合 - 加强 mixed ELF 入口与 LOCAL helper 构建门禁,补齐参数边界、转换器回归和中文复现文档 验证:CCEC scalar/real b1、real b256、b8 count1/count2 PMU、real b1 泳道、AscendC/CPU smoke、converter 5/5 均通过
- 抽取三后端共享的winner workload布局、参数解析与数值校验\n- AscendC AIC执行完整128x128 Cube矩阵乘流水并等待GM写回\n- AscendC AIV执行Vector Add/Mul流水并等待GM写回\n- 修正A1/B1共享L1的地址重叠和普通KxN右矩阵的分形转置\n- 将真计算数值结果和模式计数纳入语义门禁及泳道元数据
- CPU按相同workspace与角色路由执行完整矩阵乘、逐元素加法和乘法\n- 保留scalar-nop回归入口且不伪造A5引擎PMU\n- 将真计算输出和泳道元数据纳入CPU语义门禁\n- 顶层runner向三后端开放统一winner workload参数并继续限制CCEC专属PMU
- 为三后端增加constant与layout-diagnostic输入模式\n- 以带权对角A和非对称B逐元素验证转置、ND/NZ与输出重排\n- 将输入模式写入泳道及CCEC PMU sidecar并校验非法元数据\n- 固化CCEC、AscendC、CPU分层上板结果与真实负载使用说明\n- 保持constant性能默认及scalar-nop回归路径不变
将三后端无参数 winner 负载切换为 real-compute/6,28,4,1。 保留 NOP override 兼容入口并让 smoke 显式使用零 NOP;同时记录 Case1 fanin 拓扑、数值数据流边界和同泳道口径性能。
将 standalone PA scheduler 中已经验证的 atomic 观察语义迁入 fully_distributed_within_core,使真实 A5 PA 在 level 4 下能够直接生成可分析的 scalar atomic 泳道,同时避免逐次记录热轮询导致设备内存和 JSON 规模失控。 设备端: - 将 FDWIC raw ABI 升级为 schema v3,使用 32B 紧凑记录,并把不变的 core/block/lane 拓扑收敛到每核 64B 状态;继续复用 65536 records/core 分区。 - 为真实 PA 热路径接入 28 个稳定 atomic site 和 load/exchange/fetch_add/fetch_max/fetch_sub 五类操作;直接调用保持 call_count=1。 - direct span 按 atomic -> end/return_ready -> count -> record 排序,确保本地计数更新、PollBatch 落盘和记录写入不混入单次 atomic 的观测区间。 - 仅在显式 scheduler 等待区聚合九类 observation load;唯一的 RMW 例外是 won_lane_claim_exchange 的 old=1、desired=1 幂等失败重试,成功的 old=0 -> 1 claim 和其他 RMW 仍逐次记录。 - PollBatch 通过 flags 高 24 bit 保存精确 call_count,到 0xFFFFFF 时立即落盘并从 1 重开;保留 region、phase、lap 和最终 flush 闭合。 Host 与转换器: - A5Sim/onboard runner 透传 level 4 配置并管理 trace 生命周期;host 按核只搬运 count*32B 有效记录,校验 header、拓扑、site/op、时钟基线、容量和 dropped 状态。 - 同时维护逻辑调用数与物理记录数,强制满足 atomic_records = atomic_calls - batched_poll_calls + poll_batch_records,并逐核、全局复算 raw 闭环。 - 共享 converter 识别 schema v3 direct Atomic、PollBatch 和 ClockBaseline,将事件放回真实 scalar lane,标注 batch 语义与逻辑等待包络,禁止把 batch duration 当成单次 atomic latency。 - converter 镜像校验全量 site/op、result_used、return_ready、value_zero、FetchMax payload、每核双 ClockBaseline、cycle 范围和 producer summary,拒绝格式或计数不闭合的本地 raw。 - 输出精确 call_count,支持以 sum(call_count * calibrated_atomic_cost) 估算 scalar core-work;统一按 160ns 标尺时可直接使用 atomic_calls * 160ns。 测试与实测: - 新增 converter 正反向用例,覆盖十类合法 PollBatch、24 bit 最大值、A5/A5Sim return_ready 差异、坏 direct/clock/timing/summary 拒绝路径;相关 Python 测试 57 项通过。 - 新增直接调用 production accumulator 的 C++ GTest,验证第 0xFFFFFF 次落首批、第 0x1000000 次以 count=1 重开,flush 后状态清零且 dropped=0。 - 修订后的 AIC/AIV 和 A5Sim kernel 均已重编;真实 A5 device 0 上 PA Case1 level 4 通过:115200 次逻辑 atomic、110006 条物理 Atomic、340 条 PollBatch、dropped=0。 - 额外用真实 A5 Benchmark BGEMM/Bgemm64 验证非 PA 算子:1072 次逻辑 atomic、939 条物理 Atomic、27 条 PollBatch、dropped=0。 - 更新中文复现文档,记录十类聚合规则、schema v3、容量口径、计数公式、160ns 归因边界及最终真机产物。
从每轮96核原始PMU记录重算并校验ALL/AIC/AIV统计,聚合独立进程后优先报告AIV平均每核request、miss与p95。 明确区分90ns串行等效标尺和实际暴露损失,并记录同语义配对A/B才可用ΔSubmit与Δmiss完成性能归因。
- 对齐真实PA的15个atomic site及return-ready/source-issue语义 - 将六类显式等待轮询聚合为携精确次数的PollBatch - 在phase、lap和Kernel边界关闭等待包并补齐96核计数闭环 - 使用仅GM指针与标量的非内联落盘函数,避免CCEC栈对象跨调用损坏 - 增加24位拆批、嵌套region、allowlist、拓扑与raw转换回归 - A5 b1/b256语义、计数与真实计算校验通过,b256 Submit为5.774 ms
拆分无泳道的 submit-pmu 构建,使用四件套 manifest 固化 phase 身份与产物校验。 以 CNT6/7 保留完整 Submit 权威计数;none 要求逐核精确闭合,running phase 显式报告 read-clear 下界、loss 与保守上界,并补齐逐核调用和 A5 拓扑门禁。 增加 raw 独立复算、负向回归与中文 I-cache 使用文档,明确 90ns 仅为 core-equivalent 标尺。
在Submit开头唯一的EfDrain调用点划定编译期PMU边界,按每核5B次调用闭合host、device与离线分析器门禁。 完成b1/b256真实计算负载A5验证:调度语义、真实计算输出、96核拓扑及观测边界全部通过;局部read-clear仅按同一ELF下界与误差包络解释。同步完善构建入口、负例测试和中文使用文档。
- 退役WaitForSlot局部PMU及wins兼容字段,分析器明确拒绝旧phase ID 3 - 新增Materialize与Register编译期观测窗口,按每核5×batches校验调用闭环 - 保留完整Submit primary计数,输出局部read-clear下界与保守上界 - 增强selector、counter位宽、风险阈值、total/scalar及shadow关系的独立复算 - 自动生成自包含HTML,增加ALL/AIC/AIV局部占总体比例图 - 将宽数字表和逐核图限制在独立滚动区域,修复页面内容越界 - 补充I-cache使用指南、scalar wait指标支持边界及A5 b1/b256实测记录 - 完成60项单元测试以及A5语义、PMU拓扑和owner恢复验证
- 完善独立 Submit PMU 的逐核 I-cache、scalar 与阶段时间校验及 HTML 汇总\n- 将 schema-v4 Submit、编排和最终排空划分为严格排他区间,离线拆分内部、尾部与 Submit 间 residual\n- 删除无真实计算的 loser 伪阶段,瘦身 Perfetto 事件并保持 raw 记录规模不增长\n- 接入独立闭合分析器,补齐单元测试、A5 b1/b256 实测证据和中文使用文档
在standalone PA的Alloc和普通Submit重型winner路径上补充低概率分支提示,减少高频loser跨越内联重块后的尾部开销。 记录B1交错复测、B256闭合门禁及关闭泳道ABA结果,并保留AIC/AIV代码体积增长作为后续I-cache验证项。
将真实PA的BuildWinner与AllocComplete分支标记为低频winner冷路,保持Fanin、atomic观测和泳道边界不变。 记录当前观测版5.631ms到5.192ms的A5三轮验证,并明确该收益主要恢复atomic观测接入后的代码布局回退,尚未优于历史5.116ms基线。
added 30 commits
July 22, 2026 03:50
冻结submit-pmu-arg-build构建身份,先用B1闭合每核5对边界,再排除一轮预热并采集12个独立Case1进程。 生产消费者复验1,152条逐核记录、1,474,560次真实ArgBuild边界、owner拓扑、状态、primary-shadow和HTML,并保持G=A+M+X=A+ArgBuild[z]+Residual[z]整数闭合。 ArgBuild末核时间受AIC/AIV角色双峰影响,但整体及角色内相关性均未通过;phase mean/core波幅仅占G的0.76%,同核其余Submit与迁移慢尾通过。结论限定于当前诊断ELF,不外推权威perf-clock根因。
更正Register三个互斥源码挂点与每Submit一次调用的真实契约,在新HEAD上以B1闭合每核5对边界,随后冻结source-v2、AIC/AIV/final与host实物身份。 排除预热后采集12个独立Case1,生产消费者复验1,152条逐核记录、1,474,560次RegisterOutputs调用、owner拓扑、状态、primary-shadow和HTML,并保持两套整数时间分解精确闭合。 Register末核时间相关性仅+0.077、波幅占G的4.80%,mean/core波幅仅0.57%;同核其余Submit与迁移慢尾通过。记录AIV miss/call的闭合状态跃迁及其与时间弱相关边界,不把单轮I-cache变化冒充时延根因。
保持fdwic-submit-pmu-v1、C++ producer和设备ABI不变,仅从通过96核门禁的records派生Submit SYS_CNT、PMU total、Scalar busy及非busy残余的逐核min/mean/max与角色校准等效时间。 新增逐核PMU-total/SYS-window长窗有效比,严格采用mean-of-ratios;非busy残余先逐核执行total-scalar再汇总,避免跨核极值相减。HTML明确区分跨核全局Submit与单核窗口,并禁止把有效比命名为瞬时频率或跨ELF相减。 补充零时间拒绝、difference-of-extrema、ratio-of-sums、角色频率和raw summary不扩容测试;报告与profile/cache共152项、ruff及diff检查通过。七种现存profile的最新raw均已成功重建新HTML,并同步更新I-cache指南与全过程记录。
- 保持C++ producer发布的raw只读,新增固定provenance sidecar并以同次读取的大小、SHA256和采集模式绑定数据\n- 在ELF门禁通过后冻结profile cache key、编译宏和source-v2,记录实际final AICore、AIC/AIV combined及host runtime的整文件与literal .text身份\n- case返回后重新核对source stamp和四件构建实物,缺失身份、路径错配、宏错配或实物变化均拒绝生成正式报告\n- sidecar与HTML先完整暂存并成组发布,发布前后复核raw;中途失败恢复调用前的整对产物,不留下半套结果\n- HTML自动展示构建证据,历史无sidecar raw仍可离线加工;整个机制不进入Submit热路、不扩设备GM和raw ABI\n- 补齐真实readelf、raw变化、首个/第二个替换失败、旧产物恢复及scene cache隔离回归,共174项通过
- 在真实PA CaseB1运行submit-pmu-none,验证96核每核5次Submit、主影子I-cache计数逐核一致及raw/provenance/HTML重载闭合\n- 再运行submit-pmu-register,验证96核每核5对Register边界并生成独立三件套\n- 核对两种profile分别使用aa43623282e2a7db与32c26e06ad76d186两个AICore extra key,排除跨profile复用错误ELF\n- 记录两轮输出目录、三件套大小与SHA256、source-v2构建提交和逐核正确性结果\n- 保留构建实现提交15c54b33不改写,使上板产物中的Git head仍可追溯到真实提交
新增 submit-pmu-efdrain-control 独立诊断构建,以四条真实 Submit 入口的 EfDrain 边界为外层窗口,并在 execute_slot 的 linked Kernel 调用前后暂停和恢复局部观察。局部 elapsed/request/miss 因而只累计不连续的 Scalar 控制片段,完整 Submit primary/shadow 仍保留 Kernel。 复用每核 64B phase record 的 reserved[0] 发布被排除 Kernel 次数,严格校验 begin=end=N+K,同时保持每调用统计以外层 N 次 Submit 为分母。设备总容量继续为 12416B,不增加逐 Submit、逐 Kernel 或逐事件 raw。EfDrain 专属 block-local 计数仅在 phase 7 编译,其他 selector 保持原计算与清零路径。 补齐 pytest CLI、profile/cache、ELF/provenance、C++ host raw、Python consumer 和 HTML 接线;其他模式拒绝 EfDrain 专属字段。新增 host ELF 能力门禁,冻结 provenance 前必须同时找到三个 host hook 与精确 profile marker,旧 libhost_runtime.so 会在上板前明确拒绝。 验证:209 个 report/cache 定向单测通过;ruff(忽略 conftest 既有 PLR0912)、clang-format、git diff --check 通过;真实 A5 CaseB1 collect-only 成功。下一提交从本提交重建 host/AICore 并闭合 A5 B1 三件套。
从 21e0414c 重新构建真实 A5 FDWIC runtime 与 phase-7 AICore,完成 CaseB1 golden 和 submit-pmu-efdrain-control 全链路。96 核均为 5 次 Submit,实际排除 1 次 linked Kernel;95 核 K=0,logical/physical core 9 的 AIC 为 K=1,begin/end 精确闭合为 481/481=96×5+1。 96 核 phase status、N+K shape、Kernel 排除、primary/shadow、owner Restore、拓扑、数值顺序与计数器风险门禁全部通过。完整 B1 Submit 为 279.551us;局部 elapsed/request/miss 累计为 64751/56187/3414,只作为不连续控制段的结构证据,不外推 Case1 稳态比例。 记录首次旧 host 缓存导致 init 返回 0 的失败证据及修复边界:AICore 重编不能替代 host runtime 重建;正式产物在冻结 provenance 前核验 host hook/profile marker。正式 raw/provenance/HTML 大小为 72951/3124/84377B,SHA 与 21e0414c 构建身份、extra key 88075a1848686623 均已写入指南和全过程记录,离线重渲染逐字节一致。 验证:真实 A5 CaseB1 1 passed;209 个 report/cache 定向单测通过;git diff --check 通过。
在 77df3959 上运行真实 PA Case1 的 submit-pmu-efdrain-control 独立 ELF。golden 通过,完整 Submit 为 4840.463us;96 核每核 1280 Submit,实际排除 936 次 linked Kernel,逐核 K=3~19,AIC/AIV 分别累计 429/507,begin/end 精确闭合为 123816/123816。 同一 ELF 内,ALL/AIC/AIV control 时间为 162.654/199.792/144.085ns 每调用,占各自逐核 Submit 累计时间 4.5920%/5.7719%/4.0219%;request 为 82.110/83.945/81.193 每调用,miss 为 2.258/0.110/3.332 每调用。完整 Submit 的 AIC/AIV 每核平均 miss 为 493/25187.344,miss rate 为 0.06444%/3.40227%。 AIV control 的 90ns/miss 串行量尺为 383.816us/core,高于实际 control elapsed 184.428us/core;AIC control 时间更长而 miss 低两个数量级。因此本轮明确拒绝把 miss 标尺当作可相减 stall,也不支持 I-cache miss 单独主导 EfDrain-control 时间,后续候选必须结合 atomic、同步等待与控制流证据。 Case1 raw/provenance/HTML 为 76269/3124/86600B,SHA 与 Git head 77df3959、实际 ELF 身份已写入 I-cache 指南和全过程记录;96 核 primary/shadow、owner Restore、phase/provenance 门禁全部通过,离线重渲染逐字节一致。验证:真实 A5 Case1 1 passed;209 个 report/cache 单测通过;git diff --check 通过。
先闭合真实 PA I-cache 观察覆盖:现有五个 Submit 内 selector 已覆盖 75.44% SubmitUnion,排除 EfDrain Kernel 后约覆盖 82.02% Scalar/control 工作量;PrepareMap 仅作为按需缺口,不继续扩张设备记录。 验证仅保留 joint-submit 门闩并将完整 BlockWon 扫描 noinline 外提的单变量候选。候选通过真实 A5 B1 与 96 核 Submit shape,AIC/AIV combined .text 分别缩小 6328/6400 B。 完成五对 Case1 perf-clock 交错 A/B:逐对差值中位为 +1.358 us,候选 2 对更快、3 对更慢,未形成可确认收益。业务改动已完整撤回,仅在 perf_opt_record.md 固化源码、布局、产物和负结果,避免后续重复试验。
参数化覆盖 submit-PMU phase 1 至 7 的 raw、构建身份、provenance 与 HTML 发布链,逐项校验 profile、phase ID 和编译宏,避免仅由 none/EfDrain 特例间接代表其余 selector。 新增 schema-v4 业务 span 与 ClaimMax direct、Fanin PollBatch atomic 共存回归,验证合并泳道、加权调用数、非加和 overlay、residual 与排他整数分区不受污染。 复核现有正式泳道和六份 phase raw 的 96 核、primary/shadow、调用 shape 与 owner 闭合,并如实记录历史 Materialize/Claim/Transition/ArgBuild 产物缺少构建 sidecar 的限制。三文件离线回归 288 项通过,Ruff 与 diff 检查通过;未启动设备、未修改生产 ABI。 同时将下一 Scalar 单变量候选收敛为 PrepareMap 空 task-head 的冗余 GM 写消减,候选尚未写入生产源码,待恢复上板后按编译、B1、perf-clock A/B、泳道归因顺序验证。
为 PrepareMap 空 task-head 优化建立不依赖设备的正确性门禁。 新增 no_hardware C++ 测试,直接包含真实 FDWIC tensor_map.h,而不是复制 standalone 或旧 ring-per-bucket 模型。测试将生产 retire 与优化前控制流逐字节差分,并覆盖正常空槽 -1、异常负值归一化、非空 task/bucket 链摘除、free-list 顺序、窗口槽复用以及重复/回退 floor。 CaseB1 只有 5 次 Submit 且 H=64,无法进入 retire 循环;该测试补齐了上板前缺失的分支语义覆盖。使用本用户 GCC 15 构建,test_fdwic_tensor_map_retire 与既有 PollBatch 测试均通过,全程未启动 A5。
在真实 FDWIC dist_tensor_map_advance_retire() 中,仅当 task_heads 槽已经精确为 -1 时直接进入下一轮,删除对同一 GM 地址再次写入 -1 的冗余动作。非空 task 链、bucket 摘链、free-list、floor 推进均保持原逻辑;小于 -1 的防御性异常值仍走写回归一化,未使用范围更宽的 cur < 0 判断。 Case1 每核退休 1215 个 task id,其中静态可闭合 972 个空 head;96 核理论上跳过 93312 次写回。该数值只是机会量,不是性能收益。 离线验证:直接包含生产 tensor_map.h 的 no_hardware 差分测试通过;A5Sim Case1 golden 通过;真实 PA perf-clock CCEC 的 AIC/AIV 四类入口共八处内联控制流均显示 -1 分支跳到循环递增、其他负值分支仍落到 reset store。候选尚未跑真实 A5,后续必须由 Case1 golden 与 perf-clock 交错 A/B 决定保留或撤回。
在 perf_opt_record.md 中新增 P2 阶段,区分静态机会量、值状态等价、真实 CCEC 代码生成、A5Sim golden 与尚未完成的 A5 性能裁决,避免把离线结果写成已保留收益。 记录直接生产 TensorMap 单测为何必要:CaseB1 的 5 次 Submit 小于 H=64,不命中 retire;同时回填 EfDrain、BlockWon 负结果、观察链组合回归和本轮两个提交的时间线。 固化 AIC/AIV 八处内联入口的精确分支结果与函数体大小变化,并明确恢复上板后必须按 Case1 golden、perf-clock 交错 A/B、必要泳道归因的顺序决定保留或撤回。
将安装复现指南、I-cache 使用指南和性能优化全过程记录中的正文软换行统一收敛为一段一行,并合并列表项与引用中的人为折行。 保留标题、空行、表格、列表项和 fenced code block 的结构边界;代码块逐字节、正文非空白字符及 Markdown 结构计数均已核验,不修改测试数据、性能结论或运行命令。
新增单AIV EMPTY、LOOP_CONTROL与VECTOR_ADD三组PMU对照测试。 复用十槽PMU owner,并校验selector、计算输出与Restore状态。 记录A5真机结果、结论及指标解释边界。
将完整Submit及ArgBuild、Claim、EfDrainControl、Materialize、Register、SubmitTransition等I-cache分析报告按日期集中归档。 同时保存Submit全span汇总页面,便于对照各区域的时间、I-cache request与miss分布;仅提交test_record/2026-07-23下的8份HTML,不包含工作树中的其他实验修改。
归档Case1 submit-pmu-none与12个阶段诊断HTML,保留各profile和采集时间信息。 同时归档全span汇总,阶段主时间按AIC/AIV/ALL约1.65 cycles/ns换算,SYS ticks仅作为边界闭合诊断。
- 删除旧版 20260721 报告和临时 2026-07-23-1404 目录,只保留唯一的 2026-07-23 最新数据集。\n- 归档 submit-pmu-none、empty-bracket 与 11 个业务分段的 13 份最新真机 HTML。\n- 更新总览 HTML,加入分段合计相对 submit-pmu-none 的 PMU、Scalar-busy 和 I-cache 合成诊断。\n- 保持 ccec 与其他会话工作树改动不进入本提交。
为真实 FDWIC 路径新增 submit-pmu-prepare-map 独立诊断构建,沿用现有 64B 每核 phase sidecar,在 dist_submit_prepare_map 调用体的精确边界累计时间、I-cache request 与 miss,不增加 GM 字段或逐事件记录。 同步扩展命令行 profile、编译期 phase 身份、host ELF 门禁、raw/provenance/HTML 解析及回归测试;报告中的 I-cache 整窗与局部统计统一保留逐核最小/最大值,并补充 phase 时间、request、miss 相对同 ELF 完整 Submit 的占比。 真实 A5 CaseB1 与 Case1 均通过 golden;Case1 96 核各闭合 1280 对边界,phase status 全部为 0x3f。使用指南记录边界、使用方式、产物路径和解释限制。
新增 submit-pmu-fanin 独立诊断构建,并在 legacy Claim.end / compete-first PrepareMap.end 到 fanin_end 的真实泳道业务边界累计时间与 I-cache 事件。 动态阶段不再伪造每核固定调用数:复用现有 64B phase sidecar,允许零调用核,逐核校验 begin/end、零值语义和调用上界,再由 host 与 Python 报告独立闭合 ALL/AIC/AIV 的 4B/2B/2B 公式;不增加 GM、header 或 record 字段。 真实 A5 CaseB1 闭合 4=2+2 且 92 个零调用核通过;Case1 闭合 1024=512+512,golden、phase status、raw/provenance/HTML 全部通过。使用指南记录动态 shape、结果路径及跨 ELF 解释边界。
- 所有 Submit-PMU profile 在真实 linked Kernel 前后统一停启 PMU,并以分段 SYS_CNT 累计纯 scalar-code 时间;新增 vector/cube busy 零泄漏和 gate 闭合门禁。 - 显式穷举 28 个 atomic site,将 16 个 return-ready 依赖区间从整窗及命中 phase 的时间中扣除,12 个 source-issue 操作保持原语义;不在 atomic 周围停启 PMU,也不增加 DSB。 - 设备 ABI 与 raw schema 升级到 v2,64B/core 布局不增长;补齐状态位、phase shadow 重建、host 严格发布和 HTML 口径说明,明确 PMU/I-cache counter 仍包含 atomic 指令事件。 - 新增 WinnerBuild-control 动态 profile,按 4B=2B AIC+2B AIV 闭合 winner 调用,并排除阶段内回收的 linked Kernel。 - B1/Case1 实测闭合 none 与 WinnerBuild;Winner Case1 为 1024 次调用并排除 53 次 AIC Kernel,同 ELF scalar-code core-time 占比 ALL/AIC/AIV 为 3.47%/7.93%/1.42%。 - 通过 263 项 Python 用例、2 项 C++ 分类/批处理用例、phase0/10 AIC/AIV CCEC 编译及真实 A5 golden。
按统一的 fdwic-submit-pmu-v2 口径登记 none、WinnerBuild 及九类既有阶段的 Case1 原始数据、provenance 与 HTML 入口。 记录 11/11 严格 loader 与 provenance 回放、每轮 96/96 trusted/Kernel gate/return-ready atomic 扣时门禁,以及 EfDrain 的 962 次 Kernel 排除和 Fanin 的 1024 次动态调用闭合。 明确各 profile 来自独立诊断 ELF,禁止跨 profile 求和或相减;empty-bracket 仅作观察器校准,旧 v1 数据不再作为当前结论。
新增 submit-pmu-alloc-complete-control(phase 11/mode 12),沿用泳道业务边界:legacy 从 Claim.end、compete-first 从 Register.end 开窗,并在 dist_submit_complete_alloc 返回后闭合。阶段内 HeapGuard 回收的 linked Kernel 继续由通用门控排除,result-used atomic 继续只从 SYS 时间分母扣除。 按 PA 协议将 AllocComplete 建模为 global-only 动态阶段:全局严格闭合 B=expected_submits/5 次,逐核边界平衡且不超过 B,但不伪造 AIC/AIV 固定比例。host、raw schema、严格 loader、provenance 与 HTML 同步支持 dynamic_global,设备 64B 记录和 v2 ABI 均不扩容。 补齐 CLI/构建身份与严格正反测试,覆盖 AIC/AIV winner、零调用核、Kernel 排除、全局次数、逐核上限和配置错配。通过 284 项 Python、2 项 C++、A5 runtime 编译及真实 B1/Case1 golden;Case1 闭合 256=255 AIC+1 AIV,阶段 core-time 584689 ns、request 170344、miss 8790,同 ELF Scalar 占比 0.1968758%。 文档登记 B1/Case1 raw、provenance、HTML 路径与跨 ELF 不可求和或相减的口径限制。
新增 submit-pmu-loser-replay(phase 12/mode 13),在 Kernel loser 的 Register.end 打开阶段,并于真实 drain_block_won 返回后闭合;legacy 与 compete-first 共用同一 tail 挂点,Alloc 路径不生成该阶段。 按 96 核 Case1 同构回放协议严格建模 winner 补集:每 batch ALL/AIC/AIV 分别闭合 380/126/254 次,逐核保持动态且不超过 4B。host、设备状态、raw 严格 loader、provenance、HTML、CLI 与构建身份同步接入,64B/core v2 ABI 不增长。 明确 drain_block_won 只领取 BlockWon 并构建本地 RingSlot,不执行 linked Kernel;result-used atomic 依赖等待继续从阶段 SYS 时间扣除,source-issue 与 PMU/I-cache 指令事件保持原口径。 通过 305 项 Python、2 项 C++、A5 runtime 编译及真实 B1/Case1 golden。Case1 闭合 97280=32256 AIC+65024 AIV,阶段 scalar-code core-time 5021979 ns、request 8218072、miss 453234,同 ELF Scalar 占比 1.2719749%;文档同时标明 97280 对高频 observer 与跨 ELF 不可求和或相减的限制。
新增真实FDWIC Submit全span离线汇总工具,直接从producer泳道raw重跑schema-v4分析,并严格加载13份Submit-PMU raw/provenance,拒绝缺失、重复、跨场景和输入漂移。 HTML与JSON分栏呈现同一泳道ELF的排他时间树和各独立PMU ELF的Scalar时间、I-cache request/miss;每项显式使用本ELF分母,记录mixed revision及泳道身份未绑定事实,禁止跨ELF相减或拼接伪100%。 补齐动态phase逐核调用范围、零调用核、零miss分母、Kernel containment、residual、外围阶段和全部非加和overlay覆盖;输出采用独占锁、成对暂存和异常回滚。 增加离线闭合、异常输入、覆盖矩阵、HTML口径与发布回滚测试,并更新I-cache使用指南和性能优化记录。验证386项Python用例、2项C++用例及真实Case1现有产物全部通过。
- 使用阶段 PMU total/scalar running read-clear 计数,按 AIC/AIV 实测约 1.65 GHz 换算阶段时间,SYS_CNT 仅保留为边界诊断。\n- 补齐完整 Submit 与全部业务 span 的 PMU、Scalar-busy、I-cache request/miss 报告和构建身份门禁。\n- 在汇总页增加泳道同父区间、同 ELF PMU/scalar 占比,以及 11 个业务分段合计相对 submit-pmu-none 的 ALL/AIC/AIV 合成诊断。\n- 明确跨 ELF 比值只表示观察扰动指纹,不冒充精确插桩开销;同步更新使用指南、优化记录和 335 项定向单测。
将 SubmitUnion 的泳道时间统一为平均每核口径,并保留同一泳道 ELF 内 4.033 ms/core 的严格分区闭合。 修正分段 PMU 展示口径:raw phase/whole 只作为带记录开销的原始证据;主参考值按 AIC/AIV 分别用 empty-bracket 单组开销乘实际记录组数,仅从 phase observed 分子扣除,raw whole 分母保持不变。明确该参考值不是纯业务阶段/纯业务整窗的精确占比。 Materialize 的 PMU/Scalar 主参考占比改为 20.469%/22.393%,原始 42.825%/38.698% 降为次要信息;Request/Miss 同步使用 24.748%/16.164% 的参考口径。废弃分母也扣记录估算得到的 26.363%/26.756% 算法。 业务 phase 单报告新增显式 empty-bracket 校准输入,核验 raw 配置、拓扑及同场景同 Git revision provenance;无校准时只显示 raw 并标明非业务占比。overview schema 升至 v5,每个 phase 固化 recording_cost_reference,raw、记录估算与参考值同格保留。 重新生成 11 个业务 phase、submit-pmu-none、empty-bracket 和 overview 共 14 份 2026-07-23 HTML,并同步更新 I-cache 使用指南与性能记录。341 项定向回归通过,ruff、差异格式及归档逐文件一致性检查通过。
修复报告全局 max-content 与 nowrap 将 Materialize 等阶段表撑到数千像素的问题。 单阶段 PMU 表转置为“指标 × ALL/AIC/AIV”四列七行,保留全部 PMU、Scalar、I-cache 与 SYS 诊断信息;阶段表使用固定布局和局部换行,首列保持可见,并修复 SYS 单元的嵌套 small 标签。逐核 96 行数字明细继续使用独立横向滚动,避免数字被拆行。 overview 分区表增加明确 colgroup,将最小宽度从 1120px 收紧到 920px,允许表头和说明换行;phase card 同时解除长标识的 min-content 撑宽。 重新生成并核对 2026-07-23 的 14 份 HTML;341 项定向回归、ruff、差异检查及源输出/归档一致性检查通过。
从 origin/fully_distributed_within_core@68649810 同步 docs/fully_distributed_within_core.md,保持源文档 blob d539c26 逐字节一致。 补齐 A5 硬件 atomicMax cursor、TensorMap private/shared ring-per-bucket、global_data 段、跨核缓存一致性、a5sim 与 A5 onboard 阶段计划等设计内容。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
做了一堆 atomic 与 icache 相关的能力建设,在做shared版本时可以参考参考