松田研究室
FindingID: p1-axis1-metal-opt-audit
Status: stable / task P1 axis 1 Metal kernel audit
← Findings Index
P1 axis 1 · Metal 最適化 audit · 5 候補 + gate flip 機会

P1 axis 1 Metal 最適化候補 audit — 5 候補 + 既実装 gate flip 機会、Tier 1 -1.0% wallclock 即時 actionable

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)。

positiverank: highdesign-complete-actionable第 1 軸p1-profileaxis-1metal-optimizationkernel-audittbdrsimd-reductionapple-silicongate-flip
Δ PSNR
N/A (audit)
Δ Wallclock
estimated -1.5 〜 -2.5% (Tier 1+2)
Impact
5 kernel (clean baseline share 合計 55.1%) を Explore subagent で構造的 audit、Apple Silicon 特化最適化候補を kernel 単位で 2-4 個ずつ抽出。最大の発見: **emit_pairs_simd PSO は既に実装済**、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。
01

本文

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 段階で優先順位確定。

Headline (即 actionable 発見)

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)。

1. 5 候補 kernel summary (share + bottleneck + 改善上限)

#kernelshare主 bottleneckApple 特化候補 (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**
2ts_fwd_radix_sort13.6%16-pass CPU-GPU sync round-tripGPU prefix sum (no-CPU radix)LOW-0.54〜-0.82%4-5hPhase E scope
3ts_backward_raster13.4%per-pixel × per-splat 9 atomic (32M ops/iter)**imageblock + TBDR tile-local accumulator**MED-HIGH-0.67〜-1.07%6-8hTBDR ↔ Kahan summation 必要
4ts_ssim_fwd_grad7.8%window read bandwidth + kernel separationforward+backward kernel fusionLOW-0.16〜-0.23%3-4heval-only、training 直接寄与なし
5ts_fwd_rasterize6.1%global splat batch load + barrier overheadf16 accumulator (既実装!) / TBDR imageblockMED-HIGH-0.03〜-0.12%0.5h / 3-4hf16 は env gate、A/B 必須
全 5 候補で wallclock 推定改善上限を share × per-kernel 改善率で算出。最大 ROI は emit_pairs (gate flip 1 行で -1.0%) と backward imageblock+TBDR (-1.07%、高 cost & 中-高 risk)。SSIM は 7.8% share だが eval-only のため training 効果直接寄与なし。

2. Tier 1: 即 actionable (既実装 code の gate flip)

  1. emit_pairs_simd (1 行 flip): tile_bin.rs:87use_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 開放条件達成
  2. f16 forward (env flip + A/B test): SPLAT_F16_FORWARD=1render_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.5h
  3. backward SIMD reduction (既 default 有効、確認): BackwardKind::Simd が rasterize.rs:642, 683 で default、2.43× win を Phase D 30k 結果で享受中。No further action、ただし axis 1 narrative の「既存 Apple 最適化」として卒論記述

3. Tier 2: Phase E scope (構造改善、Phase D 30k 後の axis 1 future work)

  1. radix_sort GPU prefix sum: 現状 16 pass × (CPU prefix scan + GPU dispatch) sync round-trip → all-GPU prefix scan kernel で CPU sync 除去。期待 -0.54-0.82% wallclock、cost 4-5h、PSNR risk LOW (順序保存)。MPS sort 置換 (-1.9-2.2% combined with emit_pairs SIMD) は Tier 4 で別途検討
  2. backward_raster imageblock + TBDR: 現状 per-pixel × per-splat × 9 atomic (32M ops/iter)、SIMD reduction で 32× 削減済も atomic 残存。imageblock_data + TBDR で tile-local (16x16 pixel × ~40 splat × 9 grad = ~40KB) 累積 → tile 境界で global 書き戻し 1 回、threadgroup memory 96KB 制約内に収まる (M4 Max 検証済)。期待 -0.67-1.07% wallclock、cost 6-8h、PSNR risk **MED-HIGH** (Kahan summation 必要、累積順序変更で fp32 drift 観察)

4. Tier 3: 低 ROI / narrative 価値

  • SSIM forward+backward kernel fusion: 7.8% share だが eval-only (training 直接寄与なし)、期待 -0.16-0.23% wallclock、cost 3-4h、PSNR risk LOW。卒論 axis 1 narrative としては A.1 SSIM TBDR の延長
  • fwd_rasterize imageblock TBDR: 6.1% share、期待 -0.06-0.12% wallclock、cost 3-4h、PSNR risk LOW。Tier 1 f16 と stack 可能だが ROI 限定的
  • MPS sort (vendor-optimized 置換): emit_pairs + radix_sort 合計 27.8% share を MPS で一括置換、期待 -1.9-2.2% wallclock combined、cost 5-6h、PSNR risk MED (tie-breaking 安定性検証必須)。Tier 2 の純自作改修と排他的、ROI 大だが research narrative ("vendor 依存") に注意

5. 既排除 / 再帰評価 (A.6 / A.7 / A.1)

  • A.6 f16 packed Splat: feat_g_f16_packed_roi.md で -1% ROI 実測済、Phase D 後 forward 6.1% share と orthogonal (buffer layout 変更 vs kernel compute)。**re-attack で >0.1% gain は見込めず**、棄却維持
  • A.7 ICB (MTLIndirectCommandBuffer): 既部分実装 (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 で独立進行
  • A.1 SSIM TBDR: Phase 5 探索済、本 audit の Tier 3 ssim_fwd_grad imageblock+TBDR と本質同じ。SSIM eval-only のため training 効果なし、卒論 narrative 価値のみ

6. 推奨 sequence (next session 用 task list)

taskscopeexpected wallclockPSNR riskcost前提条件
1**emit_pairs_simd gate flip + smoke**tile_bin.rs:87 false → true, 5k smoke + 30k Lego A/B**-0.7〜-1.0%**LOW1 line + 1 runPhase D 完遂 ✓ (gate 開放条件達成済)
2f16 forward A/B testSPLAT_F16_FORWARD=1, 5k smoke 全 8 scene PSNR 計測-0.03〜-0.06%MED-HIGH0.5h + 8 runsTier 1、underflow 検証必須
3radix_sort GPU prefix sum 実装all-GPU scan kernel + dispatch loop refactor-0.54〜-0.82%LOW4-5hTier 1 完了後 (累積 wallclock 測定可能)
4backward_raster imageblock+TBDR prototypetile-local accumulator + Kahan summation + tile flush-0.67〜-1.07%MED-HIGH6-8hTier 1 完了後、5k smoke で PSNR drift 計測
5Final bench: 全 Tier 1+2 適用 30k full + 8 scenePhase D re-chain と同 protocol で再測、wallclock 累積効果 + PSNR 全項目維持確認**-1.5〜-2.5%**LOW (検証のみ)1 day (re-chain script)Tier 1-4 完了後
Tier 1 (順 1-2) は即 actionable、Tier 2 (順 3-4) は Phase E scope。順 5 で累積効果を確定。期待 total -1.5-2.5% wallclock、PSNR 維持 (8 scene mean 33.49 dB 死守)。

7. 卒論 narrative 価値

  • §5.4 axis 1 native Metal narrative 強化: 「既実装 SIMD reduction を 30k validation gate 通過で flip → 即 actionable な構造改善」という engineering discipline narrative
  • §6 future work 4 候補: emit_pairs SIMD (gate flip 済み前提)、radix_sort GPU prefix、backward TBDR、SSIM fusion を「Phase D 完遂後の axis 1 ROI 上限と未踏可能性」として明記
  • A.6 / A.7 / A.1 の再帰評価 history: 過去の探索結果を本 audit で再 ground、卒論 negative findings 章 (chapter-5-4-negative-findings.md) に追記候補
  • profile share の動的性質: clean baseline で share が大幅 shift (radix 27% → 13.6%、emit 6.5% → 14.2%) を踏まえた「ROI 推定は contention 状態で over/under-state」方法論を §3 evaluation methodology に追記検討

8. 関連

  • 本 audit の baseline data: p1-profiling-clean
  • target_upload cache の経験 (async commit overlap で ROI 1/25): p1-axis1-target-cache
  • Phase E refine GPU 化棄却 (ROI 仮説 -5x → 実測 0.2% share): p1-e-refine-gpu-smoke
  • f16 packed ROI -1% 実測 (re-attack 棄却): a-6-f16-packed-rebench
  • Phase D 完遂で gate flip 開放条件達成: p1-d-multi-scene-rechain
03

関連 finding

© 2026 大竹律輝 — 松田研究室