松田研究室
FindingID: p2-w1-warp-sparse-skip
Status: stable / task 2026-08 1× 工程表 v2 W1
← Findings Index
1× 工程表 v2 · W1 · backward/forward skip

W1 warp sparse skip + exp-skip — backward -35% / replay -11.2% (bit-exact)

backward Simd に (1) <code>sigma >= 5.55</code> の exp-skip (α = color_a·exp(-σ) ≤ exp(-5.55) ≈ 0.003887 < 1/255 — 既存 α<1/255 分岐で必ず落ちる iteration の前倒し skip) と (2) <code>simd_any(contrib)</code> による all-invalid warp skip (9 simd_sum + lane0 の atomic_fetch_add(+0.0) の静的削除) を追加、forward にも同じ sigma skip (W1b、無条件)。どちらも <strong>bit-exact</strong> (single-pixel fixture の byte equality で証明)。replay bench で <strong>final regime 21.72 → 19.30 ms/iter = -11.2% / iter5000 regime 19.98 → 17.76 = -11.1%</strong>、backward_raster 7.18 → 4.65 ms/call (<strong>-35.2%</strong>、GPU 部 -42〜43%)。12.5k full gate n=3: wallclock mean 261.55 → <strong>241.41s (-7.7%)</strong>、PSNR mean <strong>36.201 dB</strong> (基準 36.148 比 +0.053、guard ±0.1 内) → default flip。msplat 同日等価 gap 1.56× → <strong>1.44×</strong>。

positiverank: highw1-adopted-default-flip-warp-any第 1 軸1x-roadmap-v2w1warp-sparse-skipexp-skipbackwardforwardsimd-anyfunction-constantbit-exactlego
Δ PSNR
12.5k gate n=3: 36.209 / 36.201 / 36.193 dB → mean 36.201 dB = 基準 36.148 (S1 n=3 mean) 比 +0.053 dB (guard ±0.1 内、n=3 mean 判定 — S1 の教訓に従い n=1 判定なし)
Δ Wallclock
replay bench final regime: 21.724 → 19.300 ms/iter = **-11.16%** (閾値 max(2σ,1%)=2.7%)。iter5000 regime: 19.984 → 17.759 = **-11.13%** (閾値 3.1%)。backward_raster: 7.183 → 4.652 ms/call (**-35.2%**、GPU 部 5.963 → 3.437 = -42.4%)。12.5k full run n=3: 239.74 / 246.93 / 237.57s → mean **241.41s** (S1 基準 261.55s 比 **-7.7%**)
Impact
1× 工程表 v2 の第 1 波。msplat / Inria / brush の 3 実装が持ち本実装だけ欠落していた backward の 2 つの skip を、bit-exact の等価性論証つきで移植した。backward_raster は LC (2-BWD) 後の 7.2ms/call から 4.65ms/call へ -35.2% (kernel share 13.1% に低下)、replay 全体で -11.2%。12.5k full run は 261.55 → 241.41s で msplat 同日等価 gap は 1.56× → 1.44× に縮小。数学的同値の施策のみの累計は 766.07 → 241.41s = -68.5% になった。次の律速は forward (23.6%) / radix (15.0%) で、W2 (encoder/CB 統合) と計測 (counter session) が次段。
01

本文

HW 4 軸調査 #1 (他実装 HW 技法比較) で、backward rasterize の inner loop に msplat / Inria 3DGS / brush の 3 実装すべてが持つ 2 つの skip が本実装だけ欠けていると特定した (msplat 実測では evaluation の 94% が non-contributing)。(1) exp-skip: splat の color_a は projection の sigmoid 出力 ∈ (0,1) なので α = color_a·exp(-σ) ≤ exp(-5.55) ≈ 0.003887 < 1/255 ≈ 0.003922 — sigma ≥ 5.55 の iteration は既存の α < 1/255 分岐で v_* = 0 のまま必ず落ちる。これを exp 評価前に落としても実行される演算列は不変 (bit-exact)。(2) warp sparse skip: all-invalid warp では 9 本の simd_sum が全て +0.0 → lane0 の atomic_fetch_add(+0.0) になるため、simd_any(contrib) で reduction ごと省略しても最終 splats_grad は順序非依存で bit-exact。simd_any は simd-uniform を返すので non-divergent、done フラグ遷移と end = simd_max(my_stop) bound (LC) は不変。

1. 実装 (`raster_backward_sparse = { off, warp_any }`)

項目内容
W1a backward (rasterize_backwards.metal)`rasterize_backwards_simd` のみ。lane ごとに `bool contrib` を立て、状態更新 (pix_acc / T / done) 完了後・reduction 直前に `if (!simd_any(contrib)) continue;`。exp-skip は `sigma >= 0 && sigma < 5.55` への条件強化。Tg variant (#5.33c reject 系) には適用しない
variant 解決Metal 第 3 条準拠: function constant `USE_WARP_SPARSE_SKIP_FC` (index 1、LC の `USE_LAST_CONTRIBUTOR_FC` と同じ流儀) で PSO specialize。Simd × {off, warp_any} × {full_range, last_contributor} の 2 PSO 追加 (計 8 backward PSO)、kernel 内 runtime 分岐なし
W1b forward (rasterize.metal)`render_splats_f32` / `f16` の `if (sigma < 0)` を `if (sigma < 0 || sigma >= 5.55)` に (同じ論証で bit-exact、stop_idx / final_T も不変)。分岐 1 個の追加なので flag なしの無条件変更
config 配線`BackendConfig.raster_backward_sparse = { off, warp_any }`、apply_backend_config の exhaustive destructuring に配線。Simd 専用 (backward = original/tg との併用は validate が stderr warning、PSO は off が選ばれる)
parity — atomic の影響を受けない byte equality まで証明

(1) synthetic fixture (24 splat 重ね) で Off vs WarpAny の勾配 tolerance 一致 (abs/rel 1e-4、C7 体系) — FullRange / LastContributor 両スタック。(2) dldr を 1 pixel だけ非ゼロにした fixture で Off と WarpAny の勾配が bit 一致 (`backward_warp_sparse_byte_equality_single_pixel`、両スタック) — warp skip が「+0.0 atomic add の静的削除」、exp-skip が「必ず落ちる iteration の前倒し」であることの直接証明。(3) trainer-level parity (`splat bench --parity`、production-scale Lego): tile_offsets byte 一致 + 全 grad buffer tolerance PASS (残差 max 1.0e-5 は既知の atomic 順序非決定性)。

2. replay bench A/B (final + iter5000 regime、各 n=3、baseline 同日取り直し)

metricoff (baseline)warp_anyΔ
**final regime total**21.724 ms/iter (σ 1.35%)19.300 ms/iter (σ 0.17%)**-11.16%** (閾値 2.7%)
final ts_backward_raster7.183 ms/call4.652 ms/call**-35.2%**
final ts_raster_bwd_gpu5.963 ms/call3.437 ms/call**-42.4%**
**iter5000 regime total**19.984 ms/iter (σ 1.57%)17.759 ms/iter (σ 0.69%)**-11.13%** (閾値 3.1%)
iter5000 ts_backward_raster6.336 ms/call4.106 ms/call**-35.2%**
iter5000 ts_raster_bwd_gpu5.237 ms/call2.971 ms/call**-43.3%**
他 kernel (forward/radix/ssim/adam)——±3.3% 以内 (noise 圏、期待どおり不変)
計測 note — config 非依存の interference window を除外

計 8 invocation 中 2 window で全 kernel が一様に +5〜25% 遅くなる slow mode を観測 (off / warp_any の両方に発生、backward だけは slow window 内でも -35% を維持)。config 非依存の系統外 interference と判定し、σ が正常な batch (off σ ≤1.6% / warp_any σ ≤0.7%) を採用した。全 batch の median 帯: off 21.27〜21.72 vs warp_any 19.19〜19.73 (final) / off 19.71〜20.03 vs warp_any 17.76〜18.57 (iter5000) で判定は不変。

3. 12.5k full gate (n=3、PSNR guard は n=3 mean 判定)

repwallclock (training)PSNR (100 views)final splatsts_backward_raster
rep1239.74s36.209 dB410,4464.531 ms/call (13.1%)
rep2246.93s36.201 dB406,7704.721 ms/call (13.2%)
rep3237.57s36.193 dB411,2384.476 ms/call (13.1%)
**n=3 mean****241.41s****36.201 dB**—**4.58 ms/call**
S1 baseline (n=3 mean)261.55s36.148 dB——
**Δ****-7.7%**+0.053 dB (guard ±0.1 内)——
verdict: 採用 — `raster_backward_sparse` default を WarpAny に flip

replay 有意閾値 max(2σ,1%) を 4 倍超過、PSNR guard は n=3 mean で通過 (S1 の教訓に従い n=1 判定なし、3 rep とも歴代分布 36.05-36.23 の上側で安定)。backward 期待帯 -25〜50% のど真ん中 (-35.2%)、total 期待帯 -5〜10% を上回る -11.2% (replay)。W1b (forward sigma skip) は無条件変更として同梱 — 同日 S1 post replay (22.06 ms/iter) と W1 off baseline (21.27〜21.72) の差 -1.5〜-3.6% が W1b + 日内変動に相当するが、bit-exact のため単独 gate は不要。Off は A/B baseline 用に enum 保持。

4. msplat gap の現在地

時点Lego 12.5kmsplat 同日実測比 (167.7s)備考
S1 (pipeline 全域 resident 化)261.55s1.56×p2-s1-pipeline-resident
**+ W1 (warp sparse skip + exp-skip)****241.41s****1.44×**本 finding、-7.7% — 全て数学的同値の施策のみで累計 766.07 → 241.41s = **-68.5%**
次段 — W2 (encoder/CB 統合) + counter session

W1 後 breakdown の上位は forward 23.6% / radix_sort 15.0% / backward_raster 13.1% / SSIM ~7% — backward はもはや dominant ではない。1× 工程表 v2 の順序どおり W2 (Stage A: adam CB 統合 + setBytes 化) に進み、W1/W2 着弾後に counter session で limiter を確定する。

02

関連する run

この finding が観測された / 言及している実験 run。

03

関連 finding

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