Phase D 完遂後 (8 scene mean 33.49 dB / brush +0.63 dB) の clean profile baseline 5 候補 (emit_pairs 14.2% / radix_sort 13.6% / backward 13.4% / ssim 7.8% / forward 6.1%) を kernel 実装まで降りて構造的 audit。**最大発見: emit_pairs_simd PSO は既に実装済、Cell::new(false) gate off で `30k validation 後 true 化予定` comment、Phase D 完遂で即 flip 候補** (-0.7-1.0% wallclock、zero risk)。Tier 1+2 累計 -1.5-2.5% wallclock 改善余地、Tier 3 imageblock+TBDR で +1.0% 追加。backward SIMD は既に default 有効 (2.43× 享受中)、f16 forward は env gate (disabled)。
use_simd_emit: Cell::new(false) で gate off、comment に「30k validation 後 default true 化予定」(tile_bin.rs:86-87)、**Phase D 30k 完遂で即 flip 可能** (-0.7-1.0% wallclock 即時、zero risk)。同様の即 actionable 機会: f16 forward kernel render_splats_f16 は env SPLAT_F16_FORWARD=1 gate (現在 disabled、A/B test 必須 PSNR risk MED-HIGH)。Tier 2 (Phase E scope): radix_sort GPU prefix sum (-0.54-0.82% wallclock、CPU-GPU 16-pass sync 除去)、backward_raster imageblock+TBDR (-0.67-1.07% wallclock、tile-local 累積で atomic 大幅削減)。累計 -1.5-2.5% wallclock 改善余地確定、卒論 §6 future work 候補と pilot 実装目標。backward SIMD reduction は既に default 有効 (rasterize.rs:642、2.43× win 享受中で確認済)、SSIM は eval-only で training 直接寄与なしのため Tier 3。Phase D 完遂 (8 scene mean 33.49 dB / brush +0.63 dB / wallclock -61%) 後、clean profile baseline (single-process、p1-profiling-clean) の 5 候補 kernel を Explore subagent で実装まで降りて audit。最大の発見は emit_pairs_simd PSO が既に実装済、gate off で 30k validation 後 true 化予定 と comment 明記、Phase D 30k 完遂で 即 flip 可能な zero-risk 改善 (-0.7-1.0% wallclock)。Tier 1 (即 actionable gate flip)、Tier 2 (Phase E scope の構造改善)、Tier 3 (低 ROI / 卒論 narrative 価値) の 3 段階で優先順位確定。
tile_bin.rs:86-87 に use_simd_emit: Cell::new(false) と「30k validation 後 default true 化予定 (現在 false で慎重に)」comment。emit_pairs_simd kernel は既に shader (tile_bin.metal:119) + PSO (tile_bin.rs:79) 実装済、SIMD 32 thread で simd_prefix_exclusive_sum による atomic 削減 (1M atomic op → ~30k SIMD group atomic、32× 削減)。Phase D 30k validation 完遂で本 gate を true 化する structural prerequisite は満たされた。PSNR risk LOW (atomic order の permutation のみ、pair count / key 値は不変)、実装 cost 1 行変更 + 5k smoke で gate flip 完了。同様の機会: SPLAT_F16_FORWARD=1 env で f16 forward kernel 切替 (A/B test で PSNR 検証必須、MED-HIGH risk)。
| # | kernel | share | 主 bottleneck | Apple 特化候補 (top) | PSNR risk | 推定 wallclock % | 実装 cost | 備考 |
|---|---|---|---|---|---|---|---|---|
| 1 | **emit_pairs** | 14.2% | atomic counter contention (1M ops/iter) | SIMD prefix sum reduction (既実装!) | LOW | **-0.7〜-1.0%** | **1 line** | **flag flip 即可、Tier 1** |
| 2 | ts_fwd_radix_sort | 13.6% | 16-pass CPU-GPU sync round-trip | GPU prefix sum (no-CPU radix) | LOW | -0.54〜-0.82% | 4-5h | Phase E scope |
| 3 | ts_backward_raster | 13.4% | per-pixel × per-splat 9 atomic (32M ops/iter) | **imageblock + TBDR tile-local accumulator** | MED-HIGH | -0.67〜-1.07% | 6-8h | TBDR ↔ Kahan summation 必要 |
| 4 | ts_ssim_fwd_grad | 7.8% | window read bandwidth + kernel separation | forward+backward kernel fusion | LOW | -0.16〜-0.23% | 3-4h | eval-only、training 直接寄与なし |
| 5 | ts_fwd_rasterize | 6.1% | global splat batch load + barrier overhead | f16 accumulator (既実装!) / TBDR imageblock | MED-HIGH | -0.03〜-0.12% | 0.5h / 3-4h | f16 は env gate、A/B 必須 |
tile_bin.rs:87 の use_simd_emit: Cell::new(false) → true、5k smoke で pair count + sort key の bit-exact 確認 + 30k Lego で PSNR ±0.05 dB 検証。期待 -0.7-1.0% wallclock、zero risk。Phase D 30k 完遂で gate 開放条件達成SPLAT_F16_FORWARD=1 で render_splats_f16 kernel 有効化 (rasterize.rs:147)。5k smoke で PSNR 計測、underflow regime (T < 6e-5) で drift 観察、30k Lego で ±0.05 dB 内なら本採用。期待 -0.03-0.06% wallclock、risk MED-HIGH (fp16 underflow)、cost 0.5hBackwardKind::Simd が rasterize.rs:642, 683 で default、2.43× win を Phase D 30k 結果で享受中。No further action、ただし axis 1 narrative の「既存 Apple 最適化」として卒論記述extract_offsets_from_buf tile_bin.rs:449-506、forward_from_buf / backward_from_buf rasterize.rs:192-465)。trainer 統合 pending、async command buffer overlap が主 benefit (per-kernel speedup ではない)、本 audit 5 候補と orthogonal で独立進行| 順 | task | scope | expected wallclock | PSNR risk | cost | 前提条件 |
|---|---|---|---|---|---|---|
| 1 | **emit_pairs_simd gate flip + smoke** | tile_bin.rs:87 false → true, 5k smoke + 30k Lego A/B | **-0.7〜-1.0%** | LOW | 1 line + 1 run | Phase D 完遂 ✓ (gate 開放条件達成済) |
| 2 | f16 forward A/B test | SPLAT_F16_FORWARD=1, 5k smoke 全 8 scene PSNR 計測 | -0.03〜-0.06% | MED-HIGH | 0.5h + 8 runs | Tier 1、underflow 検証必須 |
| 3 | radix_sort GPU prefix sum 実装 | all-GPU scan kernel + dispatch loop refactor | -0.54〜-0.82% | LOW | 4-5h | Tier 1 完了後 (累積 wallclock 測定可能) |
| 4 | backward_raster imageblock+TBDR prototype | tile-local accumulator + Kahan summation + tile flush | -0.67〜-1.07% | MED-HIGH | 6-8h | Tier 1 完了後、5k smoke で PSNR drift 計測 |
| 5 | Final bench: 全 Tier 1+2 適用 30k full + 8 scene | Phase D re-chain と同 protocol で再測、wallclock 累積効果 + PSNR 全項目維持確認 | **-1.5〜-2.5%** | LOW (検証のみ) | 1 day (re-chain script) | Tier 1-4 完了後 |
p1-profiling-cleanp1-axis1-target-cachep1-e-refine-gpu-smokea-6-f16-packed-rebenchp1-d-multi-scene-rechain