[{"data":1,"prerenderedAt":489},["ShallowReactive",2],{"finding:p3-radix-ballot":3,"finding-runs:p3-radix-ballot":344,"finding-related:p3-radix-ballot":388},{"meta":4,"impact":55,"sections":61},{"id":5,"title":6,"subtitle":7,"eyebrow":8,"date":9,"status":10,"category":11,"polarity":12,"axes":13,"tags":16,"task_code":27,"commit":28,"branch":29,"config_paths":30,"related_runs":43,"related_findings":50},"p3-radix-ballot","M4\u002FA5 radix_scatter simd_ballot 2段化 — 12.5k gate 採用、-14.9%、default flip","radix_scatter (tile_bin.metal) の local rank 計算を、256 thread の threadgroup memory を O(lid) 逐次に読む既存実装から、simdgroup 内 \u003Ccode>simd_ballot\u003C\u002Fcode> + popcount (段1) と simdgroup 間の小さい exclusive prefix (段2) に置換した。sentinel \u003Ccode>RADIX_BUCKETS\u003C\u002Fcode> (=16) が \u003Ccode>RADIX_BITS\u003C\u002Fcode> (=4) の下位ビットのみでは digit 0 と衝突する罠 (16 &amp; 0xF == 0) は、同一 digit マスクの初期値を \u003Ccode>simd_ballot(valid)\u003C\u002Fcode> にすることで回避した。\u003Cstrong>sort parity は unit test (境界サイズ 255\u002F256\u002F257 の sentinel collision ケース込み) + 本番規模 407,267 splats の \u003Ccode>splat bench --parity\u003C\u002Fcode> の両方で bit exact\u003C\u002Fstrong>。\u003Cstrong>12.5k Lego 同一 session 交互 A\u002FB n=3 (off-r1→on-r1→off-r2→on-r2→off-r3→on-r3) で train elapsed 149.883 → 127.530s (-14.9%)\u003C\u002Fstrong>、3 pair 個別 (-14.72% \u002F -15.15% \u002F -14.87%) が高い一貫性を示し、有意閾値 max(2σ\u003Csub>off\u003C\u002Fsub>,1%)=1.18% の \u003Cstrong>12.6 倍\u003C\u002Fstrong>。PSNR guard も pass (on 36.143 dB ≥ off 36.121 dB − 0.05、Δ +0.022 dB)。\u003Cstrong>採用、`RadixScatterKind` の default を `SimdBallot` に flip\u003C\u002Fstrong>、`cargo test --workspace --release` 全 pass。","2026-09 第 5 回ゼミ milestones · M4 · A5 radix scatter simd_ballot","2026-08-30","stable","experiment","positive",[14,15],1,3,[17,18,19,20,21,22,23,24,25,26],"m4","a5","radix-scatter","simd-ballot","tile-bin","sort-parity","lego","gpu-gate","adopted","default-flip","2026-09-seminar05-milestones — M4 (A5 radix scatter simd_ballot)","a23817977d07d9eb6530abdd68e1c8d9f348347d","main",[31,32,33,34,35,36,37,38,39,40,41,42],"splat\u002Fconfigs\u002F2026-08-30-m4-parity-baseline.toml","splat\u002Fconfigs\u002F2026-08-30-m4-parity-candidate.toml","splat\u002Fconfigs\u002F2026-08-30-m4-replay-chained-off.toml","splat\u002Fconfigs\u002F2026-08-30-m4-replay-chained-on.toml","splat\u002Fconfigs\u002F2026-08-30-m4-replay-perstage-off.toml","splat\u002Fconfigs\u002F2026-08-30-m4-replay-perstage-on.toml","splat\u002Fconfigs\u002F2026-08-30-m4-12500-off-r1.toml","splat\u002Fconfigs\u002F2026-08-30-m4-12500-off-r2.toml","splat\u002Fconfigs\u002F2026-08-30-m4-12500-off-r3.toml","splat\u002Fconfigs\u002F2026-08-30-m4-12500-on-r1.toml","splat\u002Fconfigs\u002F2026-08-30-m4-12500-on-r2.toml","splat\u002Fconfigs\u002F2026-08-30-m4-12500-on-r3.toml",[44,45,46,47,48,49],"m4-12500-off-r1","m4-12500-on-r1","m4-12500-off-r2","m4-12500-on-r2","m4-12500-off-r3","m4-12500-on-r3",[51,52,53,54],"p2-s3-iteration-pipelining","p2-counter-session","gap-sweep-c0-breakthrough","p3-tier1-bit-exact",{"summary":56,"rank":57,"verdict":58,"delta_psnr":59,"delta_wallclock":60},"tasklist A5 (radix は帯域 36% の latency 律速と算術証明済み) の実装検証。既存 O(lid) 逐次 threadgroup memory scan を simdgroup ballot 2 段化に置換し、BackendConfig `radix_scatter` の enum variant `simd_ballot` として追加、**2026-08-30 M4 GPU gate で default に採用**。sort parity は unit test 3 本 (境界サイズ 0\u002F1\u002F255\u002F256\u002F257\u002F1234\u002F100000、ties 多発 n=5000、3 種の radix_scan 実装すべて) と本番規模 (407,267 splats) `splat bench --parity` の両方で bit exact PASS。**12.5k Lego 同一 session 交互 A\u002FB n=3 (off-r1→on-r1→off-r2→on-r2→off-r3→on-r3、独立 10s load sampler で汚染監視、binary sha256 は series 前後で不変) で train elapsed 149.883 → 127.530s = -14.9%**、3 pair 個別 (-14.72% \u002F -15.15% \u002F -14.87%) が高い一貫性を示し、有意閾値 max(2σ_off,1%)=1.18% の **12.6 倍**という大差で通過。σ は off 0.59% \u002F on 0.79% (非対称比 1.34×、汚染の署名である 3× を大きく下回る)。**PSNR guard も pass** (on mean 36.143 dB ≥ off mean 36.121 dB − 0.05 dB、Δ +0.022 dB、両 arm とも config header の絶対 guard 36.202±0.1 dB にも収まる)。final splats は on 408,084 \u002F off 409,363 で -0.31% (既存 atomic 非決定性 chaos の範囲内)。session 開始時の ambient load 18.86〜22.8 (Spotlight `mediaanalysisd`\u002F`mds_stores` 再インデックス、reboot 後) という p2-s3 が破棄基準にした汚染クラスの中で実施したが、同一 session 交互設計と 3 pair の高い一貫性 (レンジ 0.43 pt) がこれを吸収したことを §0 で示す。**結論: 採用。`RadixScatterKind::default()` を `SimdBallot` に flip、`cargo test --workspace --release` 全 pass**。","high","adopted-default-flip-radix-scatter-simd-ballot","12.5k 同一 session 交互 A\u002FB n=3: on **36.143 dB** (36.15227 \u002F 36.05730 \u002F 36.21933) vs off **36.121 dB** (36.19775 \u002F 36.01755 \u002F 36.14695) = **+0.022 dB**。task 指定 guard (on mean ≥ off mean − 0.05 dB) に **pass** (+0.022 > -0.05)。config header の絶対 guard (36.202 ± 0.1 dB、帯 [36.102, 36.302]) にも on\u002Foff とも **pass**。final splats は on 408,084 (408,408 \u002F 409,074 \u002F 406,770) \u002F off 409,363 (408,928 \u002F 411,049 \u002F 408,113) で on が -0.31% 少ない (既存 atomic 非決定性 chaos の範囲内、方向は一貫していない)。sort parity は `tile_offsets` で byte-exact だが、同じ parity report は `sorted_idx` の 0.217% (2105\u002F969838) に既知の tie-order 非決定性を記録しており、これが rasterize 順序ひいては atomic 加算順序に伝播するため end-to-end の PSNR は parity だけでは pin されない — したがって観測された小さい非方向性の PSNR 散らばりは想定内であり、M2 Tier1 gate (p3-tier1-bit-exact) が観測したような系統的分離は見られない","12.5k full run 同一 session 交互 A\u002FB n=3: **off 149.883s (σ 0.591%) → on 127.530s (σ 0.794%) = -14.914%**。3 pair 個別 Δ は -14.72% (r1) \u002F -15.15% (r2) \u002F -14.87% (r3) とレンジ 0.43 pt の高い一貫性。有意閾値 max(2σ_off,1%) = 1.182%、実測 Δ は**その 12.6 倍**。σ 非対称比 1.34× (off\u003Con) は汚染の典型署名とされる 3× を大きく下回り、on 側が GPU 律速でむしろ host jitter に鈍いという機構と整合する。replay bench (p3-radix-ballot 旧版、production default stack、n=3、GPU 専有未確認) の -12.9%〜-13.3% という directional 参考値とも整合し (12.5k full run のほうがやや大きい -14.9%、407k 固定 checkpoint 断面と 12.5k 平均 pair 数分布の違いで説明可能)、forward_submission=per_stage での radix 単独 gpu_ms -63.7% とも方向・大きさの両方で整合する",[62,65,68,101,103,117,119,144,175,180,182,218,221,225,227,247,250,252,318,321,324,328,330],{"type":63,"text":64},"lead","tasklist A5 (`tile_bin.metal:464-475`) が指摘した「radix scatter の local rank 計算が O(lid) 逐次 threadgroup memory scan で latency 律速」を、simdgroup 内 \u003Ccode>simd_ballot\u003C\u002Fcode> + popcount (段1) と simdgroup 間の小さい exclusive prefix (段2、GROUP_SIZE\u002F32=8 simdgroup) に置換した新 kernel \u003Ccode>radix_scatter_ballot\u003C\u002Fcode> で検証した。\u003Cstrong>罠 (tasklist 記載どおり)\u003C\u002Fstrong>: sentinel \u003Ccode>RADIX_BUCKETS\u003C\u002Fcode> (=16=0b10000) は \u003Ccode>RADIX_BITS\u003C\u002Fcode> (=4) の下位ビットだけを見ると digit 0 (0b0000) と区別がつかない (16 &amp; 0xF == 0)。同一 digit マスクの初期値を \u003Ccode>simd_ballot(valid)\u003C\u002Fcode> にして無効 lane を明示的に除外することでこれを回避した (実装コメント + unit test の境界サイズ 255\u002F256\u002F257 が pin)。\u003Cstrong>2026-08-30 の 12.5k full run GPU gate で採用、default flip 済み\u003C\u002Fstrong>。",{"type":66,"text":67},"heading","0. 12.5k full run gate — 計測環境 (ambient load 汚染クラスの中での実施)",{"type":69,"items":70},"kv",[71,74,77,80,83,86,89,92,95,98],{"key":72,"value":73},"電源 \u002F 機体","AC 接続 (`pmset -g batt` で series 開始前・各 run 前後・series 終了後まで一貫して `AC Power`、driver 自身が battery 検出で即中断する gate を内蔵)、M4 Max。GPU 権は main から付与済み、他 agent の GPU 使用は無し",{"key":75,"value":76},"**ambient load 汚染クラス** (p2-s3 が破棄基準にした種類)","series 開始時点で 1 分 load average **18.86 → 22.8** まで上昇。原因は `mediaanalysisd` (CPU 201〜280%) \u002F `mds_stores` (55〜71%) \u002F `apfsd` (55〜66%) — 直近の reboot (uptime ~3h) 後の Spotlight 再インデックスで、p2-s3 が明示的に挙げた汚染源と同型。`mdutil` での一時停止は sudo 権限が無く不可",{"key":78,"value":79},"1 回目の起動を中断し撮り直した","既定の `LOAD_LIMIT=6.0`\u002F`QUIESCE_MAX=90` (15 min cap) で起動したところ、ambient がその閾値を超えたまま推移しており quiesce が収束する見込みが無いと判断 (advisor レビュー指摘: 15 min×6 run の待ちが同一 session 内の緩やかな load 低下と交絡し、後半 run ほど有利になるドリフトを自ら作ってしまう)。**学習中の run が 1 本も始まっていない時点で** driver プロセスと独立 load sampler を kill し (sampler の孤児化を mtime 停止で確認)、`LOAD_LIMIT=24`\u002F`QUIESCE_MAX=8` (80s cap、ambient に合わせる) で撮り直した。破棄された学習データは無い",{"key":81,"value":82},"**採用した規律 (`s3-gate-abbaab.sh` の「ambient が高い日は LOAD_LIMIT を上げ、run 内 load で事後判定する」を踏襲)**","① quiesce 待ちの上限を ambient に合わせて短くし run を back-to-back に保つ (交互 A\u002FB の要点は「ドリフトを両 arm に均等に配る」ことなので、run 間の空白を長くするほど不利)、② 独立 10s sampler (`runs-logs\u002Fm4-12500-loadsamples.log`) で series 全体の load を記録し、各 run の `pre_date`\u002F`post_date` 窓と突き合わせて run 単位の load 平均\u002F最大を事後計算 (p3-tier1-bit-exact が「記録していない」と自己批判した穴を埋める)",{"key":84,"value":85},"run 窓内 load 平均 (in-window mean、独立 sampler 由来)","off: r1 17.45 \u002F r2 15.40 \u002F r3 13.38 (series を通じて単調に低下)。on: r1 13.85 \u002F r2 12.78 \u002F r3 14.26。off 平均 15.41 は on 平均 13.63 よりやや高いが (série 全体で load が下がっていく中で off が各 pair の前半に来るため)、**r3 だけ on (14.26) が off (13.38) より高い**にもかかわらず r3 の Δ (-14.87%) は他 2 pair (-14.72% \u002F -15.15%) と同水準 — load の相対関係が逆転しても効果量が変わらないことが、Δ が load ドリフトの artifact ではなく実効果であることの直接証拠になる",{"key":87,"value":88},"binary provenance","全 6 run は単一 binary (sha256 `ff46e94ed9b0361dbf8f6a556222067e8b12563dc98df52c1bf47a80ebfd8117`、series 開始前・終了後の両方で計測し一致確認) — `p3-tier1-bit-exact` が撮り直しの原因にした binary 差し替え問題は本 gate では発生していない。series 実行中に main 側 HEAD が a238179 → d132cce (docs-only、`docs\u002Fstrategy\u002F2026-09-seminar05-milestones.md` 1 行追加) に進んだが `config.rs`\u002F`tile_bin.rs`\u002F`util.rs` に差分無く、binary sha256 の不変で無関係と確認済み",{"key":90,"value":91},"flag 実測確認","各 log の `[backend] BackendConfig { … }` 行から `radix_scatter` を抽出し、off-r1\u002Fr2\u002Fr3 が `LinearRank` (3\u002F3)、on-r1\u002Fr2\u002Fr3 が `SimdBallot` (3\u002F3) であることを確認 — 意図した arm が正しく走っていることの直接証拠",{"key":93,"value":94},"driver script (新規、汎用化)","`splat\u002Fscripts\u002Fgate-ab-n3.sh \u003Coff_prefix> \u003Con_prefix> \u003Crun_prefix>` — `s3-gate-abbaab.sh` を任意の A\u002FB gate に使えるよう一般化。各 run 前後で `date +%s.%N`\u002F`uptime`\u002F`pmset -g batt` を `.meta` に記録、battery 検出で即 `exit 2`、series 全体を通す独立 load sampler、series 完了を sentinel file (`\u003Crun_prefix>-gate.DONE`) で通知 (`pgrep -f \u003Cscript名>` によるポーリングは**ポーリングコマンド自身の argv にスクリプト名の文字列が含まれ続けるため自己マッチし無限ループになる**ことを実地検証済みで、それを避ける設計)",{"key":96,"value":97},"汚染疑いによる再実行","**無し**。σ 非対称比 1.34× (閾値相当の 3× を大きく下回る)、3 pair の Δ レンジ 0.43 pt という高い一貫性、および上記 r3 の load 逆転ケースが効果量を変えなかったことから、汚染疑いでの pair 再実行は不要と判断した",{"key":99,"value":100},"**session 健全性チェック — off arm が既知 baseline を再現**","off mean **149.883s** は `p2-s3-iteration-pipelining` の depth2 baseline (151.70s、-1.2%) および `p3-tier1-bit-exact` の off arm (155.40s、-3.6%) の近傍にある。ambient load 20 超の中でも同一 default スタックの過去 2 回の独立 gate と整合する値が出たことは、`p2-s3-iteration-pipelining` §3 が「同一 session の off arm が S2 gate 当日の S2 arm を +0.3% で再現」を session 健全性の証拠として使ったのと同じ論法で、本 session が汚染下でも壊れていなかったことの直接証拠になる",{"type":66,"text":102},"1. 実装 — BackendConfig flag-gate、既存 3 call site すべてに配線",{"type":69,"items":104},[105,108,111,114],{"key":106,"value":107},"新 kernel","`radix_scatter_ballot` (`shaders\u002Fforward\u002Ftile_bin.metal`)。buffer 署名・threadgroup memory 長 (1024 byte) は既存 `radix_scatter` と同一なので、Rust 側は PSO を差し替えるだけで済む",{"key":109,"value":110},"flag","`BackendConfig::radix_scatter: RadixScatterKind` (旧 default `LinearRank` → **本 gate で `SimdBallot` に flip**)。`apply_backend_config` → `GpuTileBinner::use_radix_scatter_ballot: Cell\u003Cbool>` → `scatter_pso()` helper",{"key":112,"value":113},"call site 網羅","`scatter_pso()` は `radix_sort_core` の legacy CPU-scan path、GpuFlat path、`encode_radix_passes_hier` (S2 hierarchical、production default) の **3 箇所すべて**で使われるため、`radix_scan` の値に関わらず一貫して切り替わる (test `radix_sort_ballot_scatter_matches_across_scan_kinds` で pin)",{"key":115,"value":116},"コンパイラ規約","`xcrun metal -c` で単体コンパイル確認 (warning は既存の未使用定数 1 件のみ、本変更と無関係)。`cargo build --release` workspace 全体 clean",{"type":66,"text":118},"2. sort parity (bit exact) — unit test 3 本 + 本番規模 splat bench --parity",{"type":120,"columns":121,"align":125,"rows":127},"table",[122,123,124],"test \u002F 経路","何を pin するか","結果",[126,126,126],"left",[128,132,136,140],[129,130,131],"`radix_sort_ballot_scatter_matches_linear_rank`","n ∈ {0,1,255,256,257,1234,100000} で keys\u002Fidx が既存実装と bit exact。255\u002F256\u002F257 は sentinel collision trap (partial group で無効 lane が混じる境界) を明示カバー","**PASS (全 7 サイズ)**",[133,134,135],"`radix_sort_ballot_scatter_stability_ties`","n=5000, key %100 の ties 多発ケースで stability","**PASS**",[137,138,139],"`radix_sort_ballot_scatter_matches_across_scan_kinds`","3 call site (Cpu\u002FGpuFlat\u002FGpuHierarchical scan) すべてで flag が一貫して効くこと","**PASS (3 scan kind 全て)**",[141,142,143],"`splat bench --parity` (本番規模、407,267 splats、Lego 12.5k checkpoint)","`tile_offsets` byte 一致 + grad 5 種 tol PASS","**PASS** (下表)",{"type":120,"columns":145,"align":147,"rows":148},[146,124],"PARITY 行 (本番規模 407,267 splats)",[126,126],[149,152,155,158,161,164,167,170,173],[150,151],"loss_value","baseline=0.004296378 candidate=0.004296381 diff=3.260e-9",[153,154],"sorted_idx","INFO (非 gate、既知の tie-order 非決定性 — 2105\u002F969838 = 0.217% 差、`p2-bench-harness-calibration` と同じ既存の性質で本変更由来ではない)",[156,157],"tile_offsets","**PASS (exact byte equality, n=2500)**",[159,160],"means_grad","PASS (max_abs_diff=1.080e-5)",[162,163],"log_scales_grad","PASS (max_abs_diff=4.642e-8)",[165,166],"rot_quats_grad","PASS (max_abs_diff=1.611e-7)",[168,169],"raw_opacities_grad","PASS (max_abs_diff=2.539e-8)",[171,172],"sh_coeffs_grad","PASS (max_abs_diff=2.618e-7)",[174,135],"**PARITY OVERALL**",{"type":176,"label":177,"variant":178,"text":179},"callout","workspace 全体 test \u002F build も clean (default flip 後に再確認済み)","success","default flip 後の `cargo build --release` (workspace) \u002F `cargo test --release --workspace` の両方が全 pass (splat-metal 86 + 2 ignored、splat-train-v1 70、colmap-reader 8、splat-cli 8、splat-io 7、splat-summary 1、他 crate 0、失敗 0)。既存 sort parity test にも regression なし。",{"type":66,"text":181},"3. replay bench screen — production default stack (chained) で n=3 (方向性の先行確認、GPU 専有は当時未確認)",{"type":120,"columns":183,"align":191,"rows":193},[184,185,186,187,188,189,190],"arm (`splat bench`, iters=200, warmup=20, n=3)","median ms\u002Fiter","mean ms\u002Fiter","σ","GPU busy% (median)","busy ms\u002Fiter","sync-tax ms\u002Fiter",[126,192,192,192,192,192,192],"right",[194,202,210],[195,196,197,198,199,200,201],"off (`radix_scatter=linear_rank`)","15.545","15.556","0.18%","82.3%","12.785","2.749",[203,204,205,206,207,208,209],"on (`radix_scatter=simd_ballot`)","13.536","13.489","0.82%","79.4%","10.749","2.787",[211,212,213,214,215,216,217],"**Δ**","**-12.9%**","**-13.3%**","—","-2.9 pt","**-15.9%**","+1.4%",{"type":176,"label":219,"variant":178,"text":220},"この replay bench は 12.5k full run gate (§0) によって符号・大きさとも確証された","旧版 finding はこの n=3 を「off×3→on×3 の逐次 run で GPU 専有未確認、σ 非対称 4.5×」を理由に directional 参考値にとどめていた。\u003Cstrong>§0 の 12.5k full run gate (同一 session 交互 A\u002FB、独立 load sampler つき) は -14.9% を計測し、この replay bench の -12.9%〜-13.3% と符号・大きさの両方で整合する\u003C\u002Fstrong> (12.5k full run のほうがやや大きいのは、407,267 splats 固定 checkpoint の pair 数分布が 12.5k を通した平均よりやや大きい可能性がある、という下記 callout の予想どおり)。したがって本節の数値は\u003Cstrong>もはや未確定ではなく、独立した full run gate によって裏付けられた一致証拠\u003C\u002Fstrong>として読む。",{"type":176,"label":222,"variant":223,"text":224},"replay bench は refine を含まない — 12.5k full run gate (§0) で確認済み","info","`splat bench` は `train_step` を N 回呼ぶだけの fixed-workload replay で、refine\u002FMCMC tick を含まない (S3 finding と同じ制約)。今回の測定は 407,267 splats (Lego 12.5k 到達後の checkpoint) を\u003Cstrong>固定\u003C\u002Fstrong>して回しているため、radix の pair 数分布は 12.5k 全体を通した平均的な pair 数 (splat 数が 0 → 407k へ増える過程の平均) より\u003Cstrong>やや大きめ\u003C\u002Fstrong>に出ている可能性があった — §0 の 12.5k full run gate (-14.9%) はこの replay bench (-12.9%〜-13.3%) を\u003Cstrong>上回る\u003C\u002Fstrong>短縮を示しており、この予想と整合する。",{"type":66,"text":226},"4. radix 単体の gpu_ms — forward_submission=per_stage での補助計測 (参考値、n=1)",{"type":120,"columns":228,"align":233,"rows":234},[229,230,231,232],"arm (forward_submission=per_stage、iters=200、n=1)","ts_fwd_radix_sort total_ms","gpu_ms\u002Fcall","ms\u002Fiter (全体)",[126,192,192,192],[235,239,243],[195,236,237,238],"717.94","3.32","16.468",[203,240,241,242],"286.63","1.21","14.077",[211,244,245,246],"**-60.1%** (total)","**-63.7%**","-14.5%",{"type":176,"label":248,"variant":223,"text":249},"per_stage は production の経路ではない — 「radix だけの寄与」を切り出すための補助計測","production default (`forward_submission=chained`, S2) では radix の全 pass が forward 全体の 1 CB \u002F 1 wait に畳まれ、`ts_fwd_radix_sort` のような単独 label は取れない (`ts_forward` に project\u002Femit\u002Fradix\u002Fextract\u002Frasterize がまとめて計上される)。radix だけの gpu_ms を切り出すため、この節だけ legacy `forward_submission=per_stage` (S2 以前の経路、production では使わない) で計測している。\u003Ccode>ts_fwd_radix_sort\u003C\u002Fcode> は histogram + hierarchical scan + scatter の全 pass (11〜16 pass) を含む合計であり、scatter 単体の寄与ではない点に注意 — とはいえ scatter が O(lid) 逐次 scan の中で最も高コストな kernel だった (tasklist の latency 律速の主張と整合) ため、この -63.7% の大半は scatter 由来と推定される。\u003Cstrong>chained mode の `ts_forward` gpu_ms は 5.452 → 3.336 ms\u002Fiter (-38.8%)\u003C\u002Fstrong> で、上記 per_stage の縮小方向と整合する。この n=1 計測も §0 の 12.5k full run gate (-14.9%) と方向が一致する。",{"type":66,"text":251},"5. 12.5k full run GPU gate — 実測 (採用)",{"type":120,"columns":253,"align":261,"rows":262},[254,255,256,257,258,259,260],"実行順","arm","config","train elapsed (s)","PSNR (dB)","final splats","run 窓内 load1 平均 \u002F 最大",[126,126,126,192,192,192,192],[263,270,277,283,289,295,301,308,314],[264,265,44,266,267,268,269],"1","off (A)","150.90","36.19775","408,928","17.45 \u002F 21.30",[271,272,45,273,274,275,276],"2","on (B)","128.69","36.15227","408,408","13.85 \u002F 18.37",[278,265,46,279,280,281,282],"3","149.47","36.01755","411,049","15.40 \u002F 17.98",[284,272,47,285,286,287,288],"4","126.82","36.05730","409,074","12.78 \u002F 17.36",[290,265,48,291,292,293,294],"5","149.28","36.14695","408,113","13.38 \u002F 15.64",[296,272,49,297,298,299,300],"6","127.08","36.21933","406,770","14.26 \u002F 17.66",[302,303,214,304,305,306,307],"**mean**","**off**","**149.883** (σ 0.591%)","**36.1207**","409,363","15.41",[302,309,214,310,311,312,313],"**on**","**127.530** (σ 0.794%)","**36.1430**","408,084","13.63",[211,214,214,315,316,317,214],"**-14.914%**","**+0.0223**","-0.31%",{"type":176,"label":319,"variant":178,"text":320},"有意性 — 閾値 max(2σ,1%) を 12.6 倍超過、3 pair の一貫性が極めて高い","off 側 sample σ (n=3, n-1 分母) は \u003Cstrong>0.591%\u003C\u002Fstrong>、on 側は \u003Cstrong>0.794%\u003C\u002Fstrong>。有意閾値は \u003Cstrong>max(2σ_off, 1%) = 1.182%\u003C\u002Fstrong>。実測 Δ は \u003Cstrong>-14.914%、閾値の 12.6 倍\u003C\u002Fstrong>という大差。\u003Cstrong>3 pair 個別の Δ は -14.72% (r1) \u002F -15.15% (r2) \u002F -14.87% (r3) でレンジわずか 0.43 pt\u003C\u002Fstrong> — p2-s3 (採用、レンジは pair 間で比較的広かった) や M2 Tier1 (棄却、閾値に肉薄) と比べても際立って一貫している。σ の非対称比は \u003Cstrong>1.34× (off &lt; on)\u003C\u002Fstrong> で、汚染の典型署名とされる 3〜4.5× (M2 Tier1 4.66×、p3-radix-ballot 旧版 replay bench 4.5×) を大きく下回り、\u003Cstrong>on 側が GPU 律速でむしろ host jitter に鈍い\u003C\u002Fstrong>という機構と整合する健全な非対称。",{"type":176,"label":322,"variant":178,"text":323},"PSNR guard — pass、systematic な分離は見られない","on の PSNR 3 値 (36.15227 \u002F 36.05730 \u002F 36.21933) と off の 3 値 (36.19775 \u002F 36.01755 \u002F 36.14695) は\u003Cstrong>完全分離しておらず\u003C\u002Fstrong> (on-r1 &lt; off-r1、on-r2 &gt; off-r2、on-r3 &gt; off-r3 と方向が混在)、mean Δ は \u003Cstrong>+0.022 dB\u003C\u002Fstrong>。task 指定 guard (on mean ≥ off mean − 0.05 dB) に \u003Cstrong>pass\u003C\u002Fstrong>。config header の絶対 guard (36.202 ± 0.1 dB) にも on\u002Foff とも帯内で pass。\u003Cstrong>M2 Tier1 gate (p3-tier1-bit-exact) が観測した n=3 完全分離・系統的 PSNR 低下 (-0.065 dB、guard 抵触) とは対照的\u003C\u002Fstrong>。sort parity は `tile_offsets` で byte-exact だが `sorted_idx` は既知の tie-order 非決定性 (0.217%、§2 表) を含み、これが rasterize\u002Fatomic 加算順序に伝播するため \u003Cstrong>parity の byte-exactness は end-to-end PSNR を pin しない\u003C\u002Fstrong> — 観測された小さい非方向性の散らばりはこの既知の非決定性の範囲内として想定どおり。",{"type":176,"label":325,"variant":326,"text":327},"ambient load 汚染クラスの中での実施 — 交互設計と per-pair 一貫性がこれを吸収したと判断する根拠","warning","series 開始時の 1 分 load average は 18.86〜22.8 と、p2-s3 が round 1 を全破棄した汚染クラス (Spotlight `mediaanalysisd`\u002F`mds_stores` 再インデックス) と同型だった。`sudo` 権限が無く `mdutil` での一時停止はできなかったため、①交互 A\u002FB 設計で drift を両 arm に均等に配る、②quiesce 待ちを ambient に合わせて短く保ち run を back-to-back にする (長い quiesce 待ちのほうが「後半 run ほど有利」という別種のドリフトを生む、advisor レビュー指摘)、③独立 load sampler で run 単位の load を事後記録する、の 3 点で対応した。\u003Cstrong>r3 pair で on の load (14.26) が off (13.38) より高いにもかかわらず r3 の Δ (-14.87%) が他 2 pair と同水準だった\u003C\u002Fstrong>ことは、観測された Δ が load 差の artifact ではなく実効果であることの直接証拠になる。ただし load sampler は 10s 間隔のスナップショットであり、run 内のより短い時間スケールの CPU バーストまでは捉えていない点は限界として残す。",{"type":66,"text":329},"6. 結論 — 採用、default flip",{"type":69,"items":331},[332,335,338,341],{"key":333,"value":334},"結論","**採用**。`splat\u002Fcrates\u002Fsplat-train-v1\u002Fsrc\u002Fconfig.rs` の `RadixScatterKind::default()` (`#[default]` 属性) と `BackendConfig::default()` の手書き実装の両方を `LinearRank` → `SimdBallot` に flip。enum doc の verdict を「未検証 (GPU gate 前)」→「採用 (default)」+ 実測値に更新 (3 点セット規約)、`LinearRank` 側にも敗退 verdict を追記",{"key":336,"value":337},"test 確認","flip 後に `cargo build --release` (workspace) \u002F `cargo test --workspace --release` を実行し、全 crate 0 failure (splat-metal 86+2ignored \u002F splat-train-v1 70 \u002F 他 0) を確認",{"key":339,"value":340},"config への影響 — `splat check` 全 config sweep 実施済み (S3 前例と同型)","S3 の default flip 前例 (p2-s3-iteration-pipelining §0) にならい実施。`radix_scatter` を明示指定した config は 291 本中 12 本のみ (本 finding の gate 用 6 本 + M1 replay 用 4 本 + parity 2 本)。残り 279 本は今後すべて新 default (`SimdBallot`) で走る。`.\u002Ftarget\u002Frelease\u002Fsplat check --config \u003Cpath>` を全 291 config に実行した結果 **215 PASS \u002F 76 FAIL**、失敗した 76 本すべての理由を個別確認したところ (a) `[bench]` section を持つ bench-schema config (`check` は train schema 専用で対象外)、または (b) `[backend]` のみの parity-candidate 差分ファイル (`missing field 'experiment'`、`splat bench --parity` 専用で完結した config ではない) のいずれかで、**`radix_scatter`\u002Fdefault flip に起因する新規失敗は 0 件**。train config は全 215 本が load 成功",{"key":342,"value":343},"次の一手","M5a (SSIM float4 化) など後続 milestone は本 flip 後の stack を土台にする。msplat 等価比較・Pareto v3 (M7) の入力にも本 -14.9% を反映する",[345,354,361,367,374,381],{"id":44,"title":44,"subtitle":346,"date":9,"workspace":347,"tags":348,"verdict":349,"psnr":350,"psnr_unit":-1,"wallclock":351,"splats":352,"summary_url":353,"detail_path":353},"M4\u002FA5 gate arm A (radix_scatter = linear_rank): Lego 12.5k full run repeat 1","splat",[5,17,18,24,23],"partial",36.19774627685547,"2m 30s",408928,"\u002Fruns\u002Fm4-12500-off-r1\u002F",{"id":46,"title":46,"subtitle":355,"date":9,"workspace":347,"tags":356,"verdict":349,"psnr":357,"psnr_unit":-1,"wallclock":358,"splats":359,"summary_url":360,"detail_path":360},"M4\u002FA5 gate arm A (radix_scatter = linear_rank): Lego 12.5k full run repeat 2",[5,17,18,24,23],36.017547607421875,"2m 29s",411049,"\u002Fruns\u002Fm4-12500-off-r2\u002F",{"id":48,"title":48,"subtitle":362,"date":9,"workspace":347,"tags":363,"verdict":349,"psnr":364,"psnr_unit":-1,"wallclock":358,"splats":365,"summary_url":366,"detail_path":366},"M4\u002FA5 gate arm A (radix_scatter = linear_rank): Lego 12.5k full run repeat 3",[5,17,18,24,23],36.14694595336914,408113,"\u002Fruns\u002Fm4-12500-off-r3\u002F",{"id":45,"title":45,"subtitle":368,"date":9,"workspace":347,"tags":369,"verdict":349,"psnr":370,"psnr_unit":-1,"wallclock":371,"splats":372,"summary_url":373,"detail_path":373},"M4\u002FA5 gate arm B (radix_scatter = simd_ballot): Lego 12.5k full run repeat 1",[5,17,18,24,23],36.15227127075195,"2m 8s",408408,"\u002Fruns\u002Fm4-12500-on-r1\u002F",{"id":47,"title":47,"subtitle":375,"date":9,"workspace":347,"tags":376,"verdict":349,"psnr":377,"psnr_unit":-1,"wallclock":378,"splats":379,"summary_url":380,"detail_path":380},"M4\u002FA5 gate arm B (radix_scatter = simd_ballot): Lego 12.5k full run repeat 2",[5,17,18,24,23],36.05730056762695,"2m 6s",409074,"\u002Fruns\u002Fm4-12500-on-r2\u002F",{"id":49,"title":49,"subtitle":382,"date":9,"workspace":347,"tags":383,"verdict":349,"psnr":384,"psnr_unit":-1,"wallclock":385,"splats":386,"summary_url":387,"detail_path":387},"M4\u002FA5 gate arm B (radix_scatter = simd_ballot): Lego 12.5k full run repeat 3",[5,17,18,24,23],36.219329833984375,"2m 7s",406770,"\u002Fruns\u002Fm4-12500-on-r3\u002F",[389,433,464],{"id":54,"title":390,"date":9,"status":10,"polarity":391,"category":11,"axes":392,"tags":393,"task_code":407,"related_runs":408,"delta_psnr":427,"delta_wallclock":428,"rank":429,"verdict":430,"impact_summary":431,"detail_path":432},"M2 Tier1 (A1-A4 bit-exact) 12.5k gate v1+v2 — 棄却維持 (v1: Δ-5.0%だが2σ未達+PSNR guard抵触 \u002F v2 n=5 radix ballot上: PSNR分離は反証、wallclockは効果量≤1%で判定不能)","negative",[14,15],[394,395,396,397,398,399,24,23,400,401,402,403,404,405,406],"m2","tier1","ssim-clear","raster-grad-clear","backward-uniform","lazy-c3-scratch","rejected","atomic-nondeterminism","psnr-guard","v2-regate","n5","radix-ballot-baseline","contamination-retry","2026-09 第 5 回ゼミ milestones — M2 Tier1 (A1-A4)",[409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426],"t1-12500-off-r1","t1-12500-on-r1","t1-12500-off-r2","t1-12500-on-r2","t1-12500-off-r3","t1-12500-on-r3","t1v2-12500-off-r1 (CONTAMINATED, discarded)","t1v2-12500-on-r1 (CONTAMINATED, discarded)","t1v2-12500-off-r2","t1v2-12500-on-r2","t1v2-12500-off-r3","t1v2-12500-on-r3","t1v2-12500-off-r4","t1v2-12500-on-r4","t1v2-12500-off-r5","t1v2-12500-on-r5","t1v2-12500-off-r6 (retry replacing r1)","t1v2-12500-on-r6 (retry replacing r1)","v1 (n=3): on **36.140 dB** (36.165\u002F36.097\u002F36.157) vs off **36.205 dB** (36.201\u002F36.195\u002F36.219) = **-0.065 dB**、n=3 全 pair で on \u003C off の完全分離、task 指定 guard (on mean ≥ off mean - 0.05 dB) に **抵触**。config header の絶対 guard (36.202 ± 0.1 dB) では両 arm とも帯内で pass — 2 guard の定義差は本文 §1 参照。final splats は on 407,775 \u002F off 408,721 (-0.23%)。\u003Cbr>\u003Cstrong>v2 (n=5、r1→r6 置換後)\u003C\u002Fstrong>: on **36.1982 dB** (36.218\u002F36.159\u002F36.196\u002F36.221\u002F36.197) vs off **36.1704 dB** (36.112\u002F36.220\u002F36.102\u002F36.237\u002F36.181) = **+0.0278 dB**、guard に **pass**。5 pair の符号は on&gt;off (r1,r3,r5) \u002F on&lt;off (r2,r4) の**混在**で系統性なし — off 側の散らばり (36.102-36.237) が on 側 (36.159-36.221) より大きく、v1 の系統分離とは対照的。v2 の結果は「PSNR 散らばりは atomic 非決定性の床であり flag 由来ではない」という読みを支持し、v1 の「静かな壊れ」仮説を反証する","v1 (n=3) mean (train elapsed, internal timer): **155.40 → 147.64s = -4.99%**、σ off 2.56% \u002F on 0.55% (比 4.66×)、有意閾値 max(2σ_off,1%) = 5.11%、実測 Δ は**閾値の 97.7%、0.12 pt 差で未達**。\u003Cbr>\u003Cstrong>v2 (n=5、新 baseline 127.4s 上、r1→r6 置換後)\u003C\u002Fstrong>: off **127.386s** (σ 0.527%) → on **125.972s** (σ 0.956%) = **-1.11%**、有意閾値 max(2σ_off,1%) = 1.054%、実測 Δ は**閾値の 105%、0.06 pt 差で形式上通過**。ただし感度分析 3 通り (汚染 r1 込み生データ Δ-0.30%\u002F不通過、r1→r6 置換後 n=5 Δ-1.11%\u002F通過、両試行を n=6 として残す Δ-0.15%\u002F不通過) のうち\u003Cstrong>通過するのは 1 通りのみ\u003C\u002Fstrong>で判定が 1 点の去就に依存する。σ 非対称は v1 が off 側 4.66× だったのに対し v2 は on 側 (n=5 で 1.81×、r1 の両試行を含む n=6 で見ると **5.40×**) と\u003Cstrong>逆転しており、両 gate とも分散構造が clean ではない\u003C\u002Fstrong>。v1 (-7.76s) と v2 (-1.41s) の絶対削減量が 5.5× 食い違う点は、A1-A4 が host 側 memset\u002Falloc 除去 (per-iter 削減量はほぼ一定のはず) である以上、\u003Cstrong>v1 の -4.99% は off arm の汚染 (σ2.56%) で膨らんでいた可能性が高く、真の効果量は ~1% 前後 = 本 harness の n=5 分解能未満\u003C\u002Fstrong>という解釈と整合する","medium","rejected-v2-wallclock-inconclusive-psnr-guard-resolved","M2 Tier1 の 4 flag (A1 SSIM memset 除去 \u002F A2 work_grad blit 化 \u002F A3 backward uniform set_bytes 化 \u002F A4 lazy C3 scratch) を全 ON\u002F全 OFF の 2 arm にまとめ gate した。\u003Cstrong>v1 (n=3, 旧 baseline)\u003C\u002Fstrong>: train elapsed (internal timer) off 155.40s (σ 2.56%) → on 147.64s (σ 0.55%) = -4.99%、3 pair 全てで on が速い一貫した方向を示したが有意閾値 max(2σ\u003Csub>off\u003C\u002Fsub>, 1%) = 5.11% を 0.12 pt 差で下回り不通過。同時に PSNR は on 側で完全分離 (mean Δ -0.065 dB) し task 指定 guard に抵触した。\u003Cstrong>v2 (n=5, 2026-08-30 M4 radix ballot 採用後の新 baseline 127.4s 上で再 gate)\u003C\u002Fstrong>: PSNR は mean **+0.028 dB**、5 pair 中 on&gt;off 3 \u002F on&lt;off 2 の符号混在で \u003Cstrong>v1 の系統分離は再現せず、「A1\u002FA2 chained path の静かな壊れ」仮説は反証\u003C\u002Fstrong>された。wallclock は r1 pair の load 汚染 (on-r1 走行中に load1 が 9.09 まで spike) を検知し 1 回だけ再実行 (r6 で置換、元 log は `*-CONTAMINATED-*` として保存) した後の値で Δ **-1.11%**、有意閾値 1.05% を 0.06 pt 差で形式上通過する。しかし①汚染 r1 を生のまま使うと Δ-0.30% (不通過)、②両方の r1 試行を n=6 として残すと Δ-0.15% (不通過) と\u003Cstrong>1 点の去就で判定が反転する脆い pass\u003C\u002Fstrong>であり、さらに③置換先の r6 自身が事前登録した再実行条件 (自 arm 他値から3σ超) を独立 load 証拠の裏付けなしに 10.3σ で踏む (条件だけでは停止しない除外連鎖になる設計上の欠陥が判明)。advisor レビューの指摘により、0.06pt の脆い pass を根拠に default flip して M7 最終スタック・卒論数値の土台にするのは不適切と判断し、\u003Cstrong>棄却を維持\u003C\u002Fstrong>した (根拠は v1 の「PSNR guard 抵触」から v2 の「wallclock 効果量 ≤1% で本 harness (n=5) の分解能未満、判定不能」に変わった)。両 gate とも `cargo test --workspace` (A1 sentinel probe \u002F A2+A3 4 組合せ parity \u002F A4 self-heal 含む) は全 pass — 実装レベルの correctness bug は一貫して否定的。\u003Cstrong>結論: 棄却維持、4 flag の default は変更しない、config.rs は一切触らない\u003C\u002Fstrong>。","\u002Ffindings\u002Fp3-tier1-bit-exact\u002F",{"id":51,"title":434,"date":435,"status":10,"polarity":12,"category":11,"axes":436,"tags":437,"task_code":447,"related_runs":448,"delta_psnr":459,"delta_wallclock":460,"rank":57,"verdict":461,"impact_summary":462,"detail_path":463},"S3 iteration pipelining depth 2 — 12.5k -18.1% \u002F busy 78 → 91% (default flip)","2026-08-17",[14,15],[438,439,440,441,442,443,444,445,23,446],"1x-roadmap-v2","s3","iteration-pipelining","command-buffer","gpu-busy","sync-tax","double-buffering","scratch-generation","unified-memory","2026-08 1× 工程表 v2 — AC 復帰後 計測 queue #2' (S3 gate)",[449,450,451,452,453,454,455,456,457,458],"s3-smoke-1000-off","s3-smoke-1000-depth2","s3-12500-off-prof","s3-12500-depth2-prof","s3-12500-off-r1","s3-12500-off-r2","s3-12500-off-r3","s3-12500-depth2-r1","s3-12500-depth2-r2","s3-12500-depth2-r3","12.5k **同一 session 交互 A\u002FB** n=3 mean: depth2 **36.202 dB** (36.195 \u002F 36.179 \u002F 36.231) vs off **36.185 dB** (36.178 \u002F 36.192 \u002F 36.186) = **+0.016 dB** (guard 36.167 ± 0.1 の内側、n=3 mean 判定 — n=1 判定なし)。final splats は depth2 406,439 \u002F off 408,874 で **depth2 のほうが 0.6% 少ない** (前段の profile pair では逆に +0.6% で、方向が一致しない = 既存 atomic 非決定性の chaos 増幅の範囲)","12.5k full run **同一 session 交互 A\u002FB n=3 mean: 185.21 → 151.70s = -18.1%** (train elapsed)。process wallclock では **188.33 → 154.00s = -18.2%**。σ は off 3.33% \u002F depth2 1.18% なので有意閾値 max(2σ,1%) = 6.7%、実測 Δ は**その 2.7 倍**。同一 session の off arm は S2 gate 当日の S2 arm (train 184.61s \u002F process 187.65s) を **+0.3% で再現**しており、session の健全性が確認できている。参考: profile=true の 1 対 1 比較では 180.49 → 162.72s = -9.85% (計装自体が host 側 critical path に乗るため S3 の効果を過小評価する)","s3-adopted-default-flip-pipelining-depth2","1× 工程表 v2 が「S2 後の単独本命」に指定していた S3 を gate し、採用した。S2 までの施策が \u003Cstrong>CB の数\u003C\u002Fstrong>を減らすものだったのに対し、S3 は \u003Cstrong>CB の並び方\u003C\u002Fstrong>を変える — iteration N の loss\u002Fbackward CB (B\u003Csub>N\u003C\u002Fsub>) を commit したら wait せずに iteration N+1 の forward CB (F\u003Csub>N+1\u003C\u002Fsub>) を組んで commit し、\u003Ccode>wait(B\u003Csub>N\u003C\u002Fsub>)\u003C\u002Fcode> の後の host readback \u002F \u003Ccode>accumulate\u003C\u002Fcode> を F\u003Csub>N+1\u003C\u002Fsub> の GPU 実行の影に置く。\u003Cstrong>12.5k 同一 session 交互 A\u002FB n=3 で 185.21 → 151.70s = -18.1%\u003C\u002Fstrong> (閾値 max(2σ,1%) = 6.7% の 2.7 倍)。\u003Cstrong>GPU busy 77.5 → 91.3% \u002F sync-tax 3.244 → 1.136 ms\u002Fiter (-65%)\u003C\u002Fstrong> で counter session が置いた「busy 100% = 理論上限」への距離は 22.5 pt → 8.7 pt に縮んだ。\u003Cstrong>1k smoke では busy 65.8 → 72.0% にしか上がらず判定不能だった\u003C\u002Fstrong> — smoke の splat 数 6.8k では forward の GPU 影 (1.06 ms\u002Fiter) が image size 固定の host 仕事 (~1.7 ms\u002Fiter) を隠しきれないためで、これは \u003Cstrong>「pipelining の gate は smoke では代替できない」という harness 上の教訓\u003C\u002Fstrong>として残す。残 bubble の内訳も確定した: \u003Cstrong>refine tick の drain 6.04s (43%) &gt; encode(B) 4.66s (33%) &gt; 残差 3.28s (23%)\u003C\u002Fstrong> — 次の一手が roadmap の「即効ペア (refine capacity スコープバグ修正)」であることが実測で決まった。msplat 同日等価 gap \u003Cstrong>1.105× → 0.907×\u003C\u002Fstrong>、Phase 0 からの累計 766.07 → 154.0s = \u003Cstrong>-79.9%\u003C\u002Fstrong> (全て数学的同値の施策のみ)。","\u002Ffindings\u002Fp2-s3-iteration-pipelining\u002F",{"id":52,"title":465,"date":466,"status":10,"polarity":467,"category":11,"axes":468,"tags":469,"task_code":479,"related_runs":480,"delta_psnr":484,"delta_wallclock":485,"rank":57,"verdict":486,"impact_summary":487,"detail_path":488},"P2 counter session — default スタックの GPU busy% は 68〜69% で確定、H1 (bubble) 単独で W 比 0.70 を説明。H3 (DVFS) は棄却、卒論の「エネルギー 0.7-0.8× で勝つ」は不成立 (GPU energy 0.90×・package energy 1.06×)","2026-08-16","mixed",[14,15],[470,442,471,472,473,474,475,476,477,478,391],"counter-session","ioreport","power","energy","dvfs","p-state","msplat","m4-max","thesis-ready","2026-08 1× 工程表 v2 — AC 復帰後 計測 queue #1",[481,482,483],"counter-12500-prof","counter-12500-noprof-r1","counter-12500-noprof-r2","本 session の 12.5k n=3 self-eval (premultiplied convention) mean 36.174 dB (36.187 \u002F 36.130 \u002F 36.204)、profile=true 1 本 36.262 dB。msplat 30K native val (white) n=4 mean 36.539 dB。**convention 依存のため直接比較しない** (p2-msplat-parity-lego の cross-eval 表を参照)","12.5k profile=false n=3 mean **216.12s** (219.35 \u002F 222.71 \u002F 206.31) — W2 gate の 219.51s と同水準 (日内 drift 内)。msplat 30K n=4 mean **169.77s** (176.09 \u002F 161.37 \u002F 173.93 \u002F 167.68)。等価 gap = **1.273×**","busy-68to69pct-H1-only-H3-refuted-energy-claim-withdrawn","1× 工程表 v2 が「AC 復帰後 queue #1」に置いていた counter session を実施し、3 問すべてを実測で閉じた。\u003Cstrong>(1) busy% 論争は 68〜69% で決着\u003C\u002Fstrong> — bench (final 68.9% \u002F iter5000 67.5%、n=3、cb_dropped=0・overlap 1.00×) と 12.5k full run の補正値 (148.169s busy ÷ 同日 profile=false wallclock 216.12s = 68.6%) が一致。\u003Cstrong>(2) H1\u002FH2\u002FH3 の verdict は「H1 単独で説明・H2 null・H3 棄却」\u003C\u002Fstrong>。W 比 0.704 ≈ busy 比 0.689 なので activity factor の差 (H2) を持ち出す必要がなく、P-state residency は本実装が P15 に 97.6〜98.0% (bench) 居座る一方、msplat の方が電力上限で P10〜P14 に落ちる — \u003Cstrong>DVFS で損をしているのは msplat であって本実装ではない\u003C\u002Fstrong>。\u003Cstrong>(3) 卒論 positive の撤回\u003C\u002Fstrong>: roadmap v2 が期待した「エネルギー 0.7-0.8× = W\u002FPSNR 効率で勝つ」は\u003Cstrong>不成立\u003C\u002Fstrong>。W が 0.70× でも wallclock が 1.273× 長いので、完走までの GPU energy は \u003Cstrong>0.897×\u003C\u002Fstrong> (10% 得) に留まり、CPU を含む package energy では \u003Cstrong>1.062×\u003C\u002Fstrong> (6% 損) に反転する。energy 0.75× を達成するには W 比 0.573× が必要で、実測 0.704× は energy 等価点 (0.764×) の外側。\u003Cstrong>結論: 卒論 §5 で電力効率を主張軸にはできない。正しい主張は「同じ package 電力枠でより長く回る = 熱設計に優しい」ではなく、単純に『S2\u002FS3 で bubble を潰せば W も energy も改善する余地が 31% 残っている』という engineering debt の定量化。\u003C\u002Fstrong>","\u002Ffindings\u002Fp2-counter-session\u002F",1790227327656]