規約 v2 適用後 main の Lego 12.5k baseline (766.07s / 36.216 dB / 407k splats) を profile=true で実測。<strong>emit_pairs 38.2% + radix_sort 16.6% = tile binning 経路が wallclock の 55%</strong> と確定し、Phase 2 trigger 想定 (SSIM 15% / Adam 15% / backward 25%) は全て不発 (SSIM 5.2% / Adam+SH 5% / backward 21.5%)。設計調査で <strong>55% の主犯は kernel でなく毎 iter ~1.25GB の pair buffer alloc + Vec 三重往復 (C0)</strong> と判明 — capacity 式 `num_splats×256` が実需要 (~1.3M pairs) の ~80 倍を確保している。StopThePop (feat.F cherry-pick) は 12.5k paired A/B で <strong>-7.45% wallclock / PSNR -0.023 dB (guard 通過)</strong>、効果は大 splat regime に集中し区間 -32%→-3〜5% に単調減衰。5k n=2 A/B は refine 非決定性 (splats 軌道 ±1.5%) で検出力不足だった。
規約 v2 適用後 main の初 baseline で per-kernel breakdown を確定し、tile binning 経路 (emit_pairs + radix_sort) が wallclock の 55% を占めると実測。設計調査により主犯は sort アルゴリズムではなく 毎 iter ~1.25GB の pair buffer 確保と Vec 三重往復 (capacity = num_splats×256 が実需要の ~80 倍) と判明。StopThePop は 12.5k paired A/B で -7.45% / PSNR guard 通過。
| kernel | total | avg/call | 実占有率 | 備考 |
|---|---|---|---|---|
| **ts_fwd_emit_pairs** | 293.3s | 23.47ms | **38.2%** | 主犯は host alloc/copy (C0)、kernel 本体でない |
| **ts_backward_raster** | 164.5s | 13.16ms | 21.5% | 2-BWD trigger (25%) 未達 |
| **ts_fwd_radix_sort** | 127.4s | 10.19ms | 16.6% | GPU compute 85% (#5.40 実測) = sort 本体律速 |
| ts_fwd_rasterize | 43.3s | 3.47ms | 5.7% | |
| ts_ssim 系 | 39.8s | 3.18ms | 5.2% | 2-SSIM trigger (15%) 大幅未達 — separable 化は発火せず |
| ts_adam + ts_project_back | 47.1s | 3.77ms | 6.1% | 2-ADAM trigger (15%) 未達 — SH-Adam fusion 発火せず |
| その他 (project/extract/refine/loss) | ~51s | ~6.7% |
`ts_fwd_emit_pairs` は host wallclock 計測で、その内訳は (1) 毎 iter keys 833MB + idx 417MB ≒ 1.25GB の新規 buffer 確保 (capacity = num_splats×256 = 104M pairs、実 pair 数 ~1.3M の ~80 倍)、(2) keys/idx の Vec readback → radix_sort で再 upload → sorted 再 readback → extract_offsets で三たび upload。傍証: emit は 84k splats 時代 ~5ms → 407k で 23.5ms と splat 数 (=capacity) にほぼ線形、pair 数 (ほぼ横ばい) と不整合。修正 (C0: persistent buffer arena + Buffer 直結) は演算・順序を一切変えない bit-exact で、期待削減 ~24ms/iter = wallclock -30〜39%。past negatives (F.1 emit SIMD / F.3 GPU prefix scan / #5.40 8-bit radix) とはすべて直交。
| metric | baseline (original) | STP | Δ |
|---|---|---|---|
| wallclock (training) | 766.07s | 708.96s | **-7.45%** |
| PSNR (100 views) | 36.216 dB | 36.193 dB | -0.023 dB (guard -0.05 内) |
| final splats | 407,267 | 407,575 | +0.08% (軌道等価) |
| emit_pairs | 293.3s | 262.5s | -10.5% |
| radix_sort | 127.4s | 117.1s | -8.1% |
| backward_raster | 164.5s | 154.0s | -6.4% |
adoption gate (-8%) に 0.55pp 未達 (thermal handicap 下 n=1)。品質 guard は通過。効果は大 splat regime に集中: 区間 delta が iter 1000 の -32% から後期定常 -3〜5% へ単調減衰 (STP の tile test は mean を含む tile を必ず pass するため小 splat では棄却率 ≈0)。branch 時代の -10.2% (`6e3bc57`) は「1k 大 splat smoke」の数字で矛盾しない。5k n=2 A/B (187.6/184.1 vs 180.8/191.4s) は refine 非決定性による splats 軌道差 ±1.5% + noise floor ±3% で検出力不足と切り分け済 (軌道積分と wallclock が相関、最遅 run は最重軌道)。C0 実装後は emit の alloc 成分が消えて STP の相対効果が変わるため、default 判定は C0 landing 後の再 bench で行う。
| 候補 | trigger | 実測 | 判定 |
|---|---|---|---|
| **C0 resident binning arena** (新規) | — | binning 55%、alloc 律速 | **GO — 最優先** (bit-exact、3-4 日、期待 -30〜39%) |
| **C1 radix 定数桁 pass skip** (新規) | — | radix 16.6%、tile≤2500 で桁 44-63 恒等 | **GO — C0 の stretch** (bit-exact、0.5-1 日、期待 +4-5%) |
| 2-SSIM separable | SSIM ≥15% | 5.2% | **不発** — future work 送り |
| 2-ADAM SH fusion | Adam+SH ≥15% | ~6.1% | **不発** — future work 送り |
| 2-BWD last_contributor | backward ≥25% | 21.5% | **保留** — C0 後に share 再判定 (相対比率が上がる見込み) |
| msplat 逐語 per-tile bins | — | — | C3 (exact-size counting sort) に支配される、Tier 3 除外維持 |
「profiling が指す順にしか実装しない」(5 連敗の教訓) が初めて機能した事例。事前決め打ちなら separable SSIM (11× 軽量化、実占有 5.2%) に 1 週を溶かしていた — 全体への上限 ~4% で 6 連敗目になっていた。実測が指したのは誰も候補に挙げていなかった C0 (host alloc) だった。
この finding が観測された / 言及している実験 run。