[{"data":1,"prerenderedAt":529},["ShallowReactive",2],{"finding:p2-flag-revisit-sweep":3,"finding-runs:p2-flag-revisit-sweep":334,"finding-related:p2-flag-revisit-sweep":384},{"meta":4,"impact":67,"sections":72},{"id":5,"title":6,"subtitle":7,"eyebrow":8,"date":9,"status":10,"category":11,"polarity":12,"axes":13,"tags":16,"task_code":26,"commit":27,"branch":28,"config_paths":29,"related_runs":52,"related_findings":59},"p2-flag-revisit-sweep","保持 flag 全数再 gate sweep — 8 維持 \u002F 1 flip (loss_path -26.5%) + bench validate 抜けを発見","C0\u002FS1\u002FW1\u002FW2\u002FS2 でコスト構造が 5 段変わったことを受け、\u003Ccode>BackendConfig\u003C\u002Fcode> 全 16 field を機械走査して保持 variant を再判定。実測 9 件のうち \u003Cstrong>8 件は verdict 維持\u003C\u002Fstrong>、\u003Cstrong>1 件 (\u003Ccode>loss_path = \"gpu\"\u003C\u002Fcode>) が flip\u003C\u002Fstrong> — replay final regime で \u003Cstrong>-26.5%\u003C\u002Fstrong> (21.210 → 15.591 ms\u002Fiter、sync-tax 9.20 → 2.96)、iter5000 で -29.6%。残り 7 件は validate hard error による構造的非互換 \u002F 禁忌リスト \u002F harness 非対応で「判定不能」を理由付きで記録した。副産物として \u003Ccode>splat bench\u003C\u002Fcode> が \u003Ccode>BackendConfig::validate\u003C\u002Fcode> を呼んでおらず、\u003Ccode>forward_submission=\"chained\"\u003C\u002Fcode> + \u003Ccode>tile_sort=\"tile_counting\"\u003C\u002Fcode> のような無効組合せを \u003Cstrong>exit 0 で黙って別経路実行\u003C\u002Fstrong>していたことを発見し修正。","P2 · flag revisit · 全数再 gate","2026-08-16","stable","performance","positive",[14,15],1,3,[17,18,19,20,21,22,23,24,25],"flag-revisit","gate-sweep","loss-path","backend-config","validate","regression-guard","lego","stop-the-pop","default-flip","保持 flag 全数再 gate sweep (2026-08-16 GPU 専有タスク)","2582ca249d8a","main",[30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"splat\u002Fconfigs\u002F2026-08-16-revisit-base-gpu-final-r1.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-base-gpu-final-r2.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-base-gpu-final-r3.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-base-host-final.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-stp-final.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-stp-final-n10.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-base-gpu-final-n10.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-bwd-original-final.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-bwd-tg-final.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-targetcache-off-final.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-sparse-off-final.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-range-full-final.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-sub-perkernel-final.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-fwdsub-perstage-final.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-losspath-host-iter5000.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-losspath-gpu-iter5000.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-losspath-host-12500-r1.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-losspath-host-12500-r2.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-losspath-host-12500-r3.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-losspath-gpu-12500-r1.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-losspath-gpu-12500-r2.toml","splat\u002Fconfigs\u002F2026-08-16-revisit-losspath-gpu-12500-r3.toml",[53,54,55,56,57,58],"revisit-losspath-host-12500-r1","revisit-losspath-host-12500-r2","revisit-losspath-host-12500-r3","revisit-losspath-gpu-12500-r1","revisit-losspath-gpu-12500-r2","revisit-losspath-gpu-12500-r3",[60,61,62,63,64,65,66],"p2-s2-forward-chained","p2-w2-chained-submission","p2-w1-warp-sparse-skip","p2-c0-resident-binning","p2-c3-tile-counting","p2-last-contributor","p2-bench-harness-calibration",{"summary":68,"rank":69,"verdict":70,"delta_wallclock":71},"\u003Ccode>BackendConfig\u003C\u002Fcode> 全 16 field を機械走査し、default 以外の variant を全数再判定。実測 9 件のうち \u003Cstrong>8 件は verdict 維持\u003C\u002Fstrong>、\u003Cstrong>1 件 (\u003Ccode>loss_path\u003C\u002Fcode>) が flip\u003C\u002Fstrong>。\u003Ccode>loss_path = \"gpu\"\u003C\u002Fcode> は replay final regime \u003Cstrong>21.210 → 15.591 ms\u002Fiter (-26.5%)\u003C\u002Fstrong> \u002F iter5000 \u003Cstrong>-29.6%\u003C\u002Fstrong>、12.5k full gate (同一 session 交互 A\u002FB、n=3) で \u003Cstrong>283.00 → 183.00s (-35.3%)\u003C\u002Fstrong>・PSNR \u003Cstrong>36.142 → 36.188 dB (+0.047、guard ±0.1 内)\u003C\u002Fstrong>。ただし \u003Cstrong>この flip は公式数値を 1 つも動かさない hygiene\u003C\u002Fstrong> — 全 237 config が \u003Ccode>loss_path\u003C\u002Fcode> を明示指定済みで 12.5k gate 系は例外なく \u003Ccode>\"gpu\"\u003C\u002Fcode>、enum default だけが 2026-04-30 以来実運用から取り残されていた。残り 7 件は validate hard error による構造的非互換 (5) \u002F 禁忌リスト (2) \u002F harness 非対応 (1) \u002F 非 perf variant (3) として理由付きで判定不能を記録。副産物として \u003Ccode>splat bench\u003C\u002Fcode> の \u003Ccode>validate()\u003C\u002Fcode> 抜け (無効組合せが exit 0 で silent 別経路実行) を発見・修正した。","high","accepted","loss_path flip: replay -26.5% (final) \u002F -29.6% (iter5000)、12.5k gate -35.3% — ただし公式 config は既に gpu 明示のため公表値は不変 (hygiene flip)",[73,76,81,85,88,91,206,208,210,248,250,252,258,260,264,266,271,273,281,283,323,327,330,332],{"type":74,"text":75},"lead","2026-08-16 の 1 日で default スタックのコスト構造は C0 (resident binning) → S1 (pipeline 全域 resident) → W1 (warp sparse skip) → W2 (chained submission) → S2 (forward 1 CB 化) と 5 段変わった。`BackendConfig` の保持 variant はいずれもこれ以前の環境で verdict が付いており、規約 (敗者 variant も enum に残し、コスト構造が変わったら再判定する) に従って全 16 field を機械走査し、default 以外の variant を全数再判定した。判定は `splat bench` の fixed-workload replay (Lego final checkpoint 409,660 splats、warmup 20 \u002F iters 200) で行い、有意閾値は harness calibration の規約どおり \u003Ccode>max(2σ, 1%)\u003C\u002Fcode>。",{"type":77,"label":78,"variant":79,"text":80},"callout","Headline (8 維持 \u002F 1 flip、loss_path -26.5%)","success","実測できた 9 flag のうち \u003Cstrong>8 flag は verdict 維持\u003C\u002Fstrong>、\u003Cstrong>1 flag が flip\u003C\u002Fstrong>。flip したのは \u003Ccode>loss_path\u003C\u002Fcode> で、enum default の \u003Ccode>Host\u003C\u002Fcode> に対し \u003Ccode>Gpu\u003C\u002Fcode> が replay final regime \u003Cstrong>21.210 → 15.591 ms\u002Fiter (-26.5%)\u003C\u002Fstrong>、iter5000 regime \u003Cstrong>20.712 → 14.592 (-29.6%)\u003C\u002Fstrong>。機構は GPU busy \u003Cstrong>56.6% → 81.0%\u003C\u002Fstrong> \u002F sync-tax \u003Cstrong>9.20 → 2.96 ms\u002Fiter\u003C\u002Fstrong> が直接示す — \u003Ccode>submission = \"chained\"\u003C\u002Fcode> (W2) の Stage B (loss chain 1 CB 統合) は \u003Cstrong>GPU loss 経路にしか効かない\u003C\u002Fstrong>設計なので、\u003Ccode>loss_path = Host\u003C\u002Fcode> の default は W2 の主要部分を丸ごと取りこぼしていた。残り 7 flag は validate hard error による構造的非互換 (5)・禁忌リスト (2)・harness 非対応 (1)・非 perf variant (3) で判定不能とし、理由を enum doc と下表に記録した。",{"type":77,"label":82,"variant":83,"text":84},"副産物: `splat bench` の validate 抜け (修正済み)","warning","再判定の非互換確認中に、\u003Ccode>splat bench\u003C\u002Fcode> が \u003Ccode>BackendConfig::validate()\u003C\u002Fcode> を一度も呼んでいないことが判明した (呼んでいたのは \u003Ccode>train\u003C\u002Fcode> 側の \u003Ccode>FullConfig::validate\u003C\u002Fcode> のみ)。このため \u003Ccode>forward_submission = \"chained\"\u003C\u002Fcode> + \u003Ccode>tile_sort = \"tile_counting\"\u003C\u002Fcode> のような \u003Cstrong>validate が hard error で禁じている組合せが exit 0 で通り、22.770 ms\u002Fiter という「もっともらしい数字」を吐いていた\u003C\u002Fstrong>。実体は \u003Ccode>encode_forward_chained\u003C\u002Fcode> が \u003Ccode>use_tile_counting_sort\u003C\u002Fcode> を一切参照せず global radix を走らせていただけで、\u003Cstrong>flag が silent に無視された default と同じ測定\u003C\u002Fstrong>だった。これは validate が hard error として防ぐことを目的にしていた silent override そのもの。\u003Ccode>bench.rs\u003C\u002Fcode> の config load と \u003Ccode>--parity\u003C\u002Fcode> candidate 読み込みの 2 箇所に \u003Ccode>validate()\u003C\u002Fcode> を追加して塞ぎ、あわせて取り残されていた C3 bench 用 config 4 本 (S2 の default flip 時に train 側 config だけ修復されていた) に当時の実効値 \u003Ccode>forward_submission = \"per_stage\"\u003C\u002Fcode> \u002F \u003Ccode>radix_scan = \"cpu\"\u003C\u002Fcode> を明示した。",{"type":86,"text":87},"heading","1. 全 flag × Δ 表 (BackendConfig 全 16 field)",{"type":89,"text":90},"paragraph","「default 以外の variant を持つか」で機械走査し、持つものは全て下表に載せた。\u003Ccode>判定\u003C\u002Fcode> 列の \u003Ccode>維持\u003C\u002Fcode> は再判定しても既存 verdict が変わらないこと、\u003Ccode>flip\u003C\u002Fcode> は default 交代、\u003Ccode>判定不能\u003C\u002Fcode> は測定が原理的に取れないことを指す。Δ は replay final regime n=3、baseline は sweep 内 3 点の実行位置線形補間 (§3 参照)。",{"type":92,"columns":93,"align":101,"rows":104,"caption":205},"table",[94,95,96,97,98,99,100],"field","再判定した variant","Δ (final, n=3)","σ","閾値","判定","根拠",[102,102,103,103,103,102,102],"left","right",[105,113,121,128,133,140,146,152,158,165,171,175,179,182,186,190,194,198,201],[106,107,108,109,110,111,112],"`loss_path`","`gpu`","**-26.49%**","2.12%","1.92%","**flip**","12.5k gate 済 (§2)。W2 Stage B は GPU loss 経路専用",[114,115,116,117,118,119,120],"`emit_pairs`","`stop_the_pop`","-0.05% (n=10)","1.11%","2.22%","維持 (棄却)","n=3 で -1.39% と閾値近傍 → n=10 に escalate して null 確定",[122,123,124,125,126,119,127],"`backward`","`original`","+13.26%","2.33%","4.66%","warp_any は Simd 専用のため W1 喪失分を含む合成 Δ",[122,129,130,131,110,119,132],"`tg`","+63.61%","0.31%","同上。禁忌 `!33c` だが依頼の明示指定で 1 判定のみ実施",[134,135,136,137,110,138,139],"`raster_backward_sparse`","`off`","+16.21%","0.17%","維持 (敗退)","W2\u002FS2 後は busy 律速寄りで W1 の効きは gate 時 (-11.2%) より **拡大**",[141,142,143,144,110,138,145],"`raster_backward_range`","`full_range`","+5.30%","0.26%","W1 が backward 定数コストを先に削ったぶん gate 時 (-14.98%) より縮小",[147,148,149,150,110,138,151],"`forward_submission`","`per_stage`","+4.82%","0.12%","両 arm で hierarchical scan 固定 → **1 CB 化単独の寄与 ≈ -4.8%**",[153,154,155,156,110,138,157],"`submission`","`per_kernel`","+3.59%","0.54%","gate 時 -13.7% から 1\u002F4 に縮小 (S2 と回収先が一部重複)",[159,160,161,162,110,163,164],"`target_cache`","`false`","(-0.70%)","0.58%","判定不能","**harness 非対応** — bench は `train_step` 直叩きで target を事前 upload、flag が no-op",[166,167,168,168,168,169,170],"`tile_sort`","`tile_counting`","—","判定不能 (skip)","validate hard error (S2 は global_radix 必須)。再判定仮説は falsified (§4)",[172,173,168,168,168,169,174],"`dispatch`","`batched_tail`","validate hard error — S2 が A.7 の統合対象を包含し排他化",[176,177,168,168,168,169,178],"`radix_scan`","`cpu`","validate hard error (S2 は per-pass host 往復を許さない)",[176,180,168,168,168,169,181],"`gpu` (F.3 flat)","同上",[183,184,168,168,168,169,185],"`binning`","`per_iter_alloc`","validate hard error (chained は resident arena 前提)",[114,187,168,168,168,188,189],"`simd`","再判定せず","**禁忌リスト** `!33b` SIMD prefix (禁忌はコスト構造変化の例外)",[191,192,168,168,168,188,193],"`forward`","`f16`","**禁忌リスト** feat.G f16 forward",[195,160,168,168,168,196,197],"`shader_fast_math`","対象外","perf variant ではなく IEEE 準拠 bit-repro 用 (設計上遅い)",[199,160,168,168,168,196,200],"`queue_reuse`","documented no-op (M-3 で per-iter queue 経路は消滅)",[202,203,168,168,168,196,204],"`profile`","`true`","計測用 instrumentation であって perf variant ではない","BackendConfig 全 16 field の再判定結果。実測 9 \u002F 構造的非互換 5 \u002F 禁忌 2 \u002F 非 perf variant 3 \u002F harness 非対応 1 (field 単位では 16、variant 単位では 19 行)。",{"type":86,"text":207},"2. flip した唯一の flag: `loss_path = \"gpu\"`",{"type":89,"text":209},"\u003Ccode>LossPathKind::Gpu\u003C\u002Fcode> の verdict は 2026-04-30 以来「検証中 (30k validation 未確定)」のまま据え置かれており、今日の 5 段のコスト構造変化をどれも通っていない唯一の flag だった。しかも \u003Ccode>SubmissionKind::Chained\u003C\u002Fcode> (W2、今日 default 化) の doc が明記するとおり \u003Cstrong>Stage B (ssim → loss → backward → adam の 1 CB 連結) は GPU loss 経路にしか効かない\u003C\u002Fstrong>。つまり enum default (\u003Ccode>Host\u003C\u002Fcode>) のままだと W2 の主要部分が無効化される状態が今日ずっと続いていた。",{"type":92,"columns":211,"align":216,"rows":217,"caption":247},[212,213,214,215,97,98,99],"regime","host (enum default)","gpu (候補)","Δ",[102,103,103,103,103,103,102],[218,223,230,236,241],[219,220,221,108,109,110,222],"final (409,660 splats)","21.210 ms\u002Fiter","15.591","有意 (13.8x)",[224,225,226,227,109,228,229],"iter5000 (373,933 splats)","20.712 ms\u002Fiter","14.592","**-29.55%**","4.24%","有意 (7.0x)",[231,232,233,234,168,168,235],"GPU busy (final)","56.6%","81.0%","+24.4pp","機構",[237,238,239,240,168,168,235],"sync-tax (final)","9.204 ms\u002Fiter","2.961","**-67.8%**",[242,243,244,245,168,168,246],"GPU busy ms\u002Fiter (final)","12.007","12.605","+0.60","GPU 実仕事はほぼ不変","loss_path replay A\u002FB。busy ms\u002Fiter が +0.60 しか増えないのに wallclock が -5.6 ms\u002Fiter 縮む = 削れたのは純粋に同期税で、GPU 側の仕事は増えていない。",{"type":86,"text":249},"3. 方法論: baseline drift 2.46% と位置補間",{"type":89,"text":251},"sweep の冒頭 \u002F 中間 \u002F 末尾に同一 default baseline を 3 回挟んだところ \u003Cstrong>15.566 → 15.714 → 15.954 ms\u002Fiter と単調増加 (spread 2.46%)\u003C\u002Fstrong> の thermal drift が出た。閾値 1.92% と同オーダーなので、pooled mean を基準にすると sweep 後半の arm が一律に不利化する。そこで各 arm の Δ は \u003Cstrong>実行位置による baseline の線形補間\u003C\u002Fstrong>に対して算出した。影響が大きいのは後半に測った 2 件 (\u003Ccode>submission = per_kernel\u003C\u002Fcode> +3.59%、\u003Ccode>forward_submission = per_stage\u003C\u002Fcode> +4.82%) で、pooled baseline だと +4.4% \u002F +7.1% と過大評価される。いずれも符号と結論は変わらないが、卒論に載る数字としては補間後を採る。",{"type":253,"items":254},"list",[255,256,257],"\u003Cstrong>n=3 は screen、n=10 が確定\u003C\u002Fstrong>: harness calibration の運用ガイド (gate 判定は n>=10 推奨) に従い、n=3 で閾値近傍 (|Δ| が閾値の 1\u002F1.5 超) に落ちた \u003Ccode>stop_the_pop\u003C\u002Fcode> のみ n=10 へ escalate した。結果 n=3 の -1.39% は n=10 で \u003Cstrong>-0.05%\u003C\u002Fstrong> に収束し、ノイズだったことが確定 (両 arm を隣接実行して drift も抑えた)。","\u003Cstrong>parity は 7 件実施し全 PASS\u003C\u002Fstrong>: `bwd-original` \u002F `bwd-tg` \u002F `targetcache-off` \u002F `sparse-off` \u002F `range-full` \u002F `sub-perkernel` \u002F `fwdsub-perstage` で grad 5 種 (tol 1e-4) + `tile_offsets` byte 一致。`sorted_idx` は既知の tie-order 非決定性 (~0.2%) のため informational。","\u003Cstrong>parity を skip した 2 件と理由\u003C\u002Fstrong>: `stop_the_pop` は品質影響系 (数値同値性が成り立たない設計) のため規約どおり replay のみ。`loss_path` は `--parity` が GPU loss 経路専用で host 側を比較できないため \u003Cstrong>構造的に parity 不能\u003C\u002Fstrong> — 品質証拠は 12.5k の PSNR 対比のみで、bit-exact 系の他 flag と証拠の質が違う点は明記しておく。",{"type":86,"text":259},"4. 再判定仮説が falsified された 2 件",{"type":253,"items":261},[262,263],"\u003Cstrong>`tile_sort = \"tile_counting\"` (C3)\u003C\u002Fstrong>: 「敗因だった CPU scan 同期が S2 の hierarchical scan 環境で消えた可能性」という仮説は \u003Cstrong>成り立たない\u003C\u002Fstrong>。S2 の hierarchical scan が GPU 化したのは \u003Cem>radix histogram\u003C\u002Fem> の prefix scan (整数和なので block 分割に依存せず bit-exact 化できた) であって、C3 が要求する \u003Cem>per-tile count → exclusive scan → scatter\u003C\u002Fem> の host 同期ではない。後者は tile 境界の確定に host 介在が要るため S2 の 1 CB forward と原理的に両立せず、`validate` が hard error にしている (実測確認済み)。加えて per-tile bitonic の O(n log²n) 劣位も不変。","\u003Cstrong>`dispatch = \"batched_tail\"` (A.7)\u003C\u002Fstrong>: 「chained submission との相互作用が未計測」という動機は、\u003Cstrong>相互作用の余地ではなく機能重複による排他化\u003C\u002Fstrong>だった。S2 は A.7 が統合対象にしていた extract_offsets + rasterize を既に同一 CB に含んでおり、`validate` が「S2 subsumes the A.7 batched tail」として hard error にする。a-7 の scene 依存 -1.6〜-18.6% は S2 未導入時の値として保存する。",{"type":86,"text":265},"5. 再判定で判明した既存 verdict の帰属訂正",{"type":253,"items":267},[268,269,270],"\u003Cstrong>W2 と S2 は「直交」ではなく利得が一部重複する\u003C\u002Fstrong>: W2 gate は per-kernel 帰属 (`ts_chain_commit_wait` が S2 前後で不変) から両者を直交と記述したが、default 交代の利得としては重複する。S2 後に `submission = per_kernel` へ戻した Δ は \u003Cstrong>+3.59%\u003C\u002Fstrong> で、W2 gate 時の -13.7% の約 1\u002F4 しかない。S2 が forward 側の CB\u002Fwait を先に畳んだぶん、W2 が回収できる残りの同期税が減ったため。","\u003Cstrong>S2 の「1 CB 化単独の寄与」が測れた\u003C\u002Fstrong>: S2 gate は forward 1 CB 化と hierarchical scan をセットで A\u002FB したため単独寄与が未計測だった。本 sweep は両 arm で `radix_scan = \"gpu_hierarchical\"` を固定して `forward_submission` だけを振っており、\u003Cstrong>1 CB 化それ自体は約 -4.8%、残り (gate 全体 -12.3% との差) は hierarchical scan 側\u003C\u002Fstrong>と分解できる。per-stage 経路でも hierarchical が実際に走ることは `radix_sort_core` の分岐で確認済み (silent fallback なし)。","\u003Cstrong>W1 の効きは gate 時より拡大した\u003C\u002Fstrong>: `raster_backward_sparse = off` の Δ は +16.21% で、W1 gate 時の -11.2% より大きい。W2\u002FS2 が同期税を削って GPU busy 律速 (busy 81%) に寄った結果、GPU 実行時間を削る最適化の相対価値が上がったため。逆に `raster_backward_range = full_range` は +5.30% と gate 時 (-14.98%) より縮んでおり、W1 が backward の定数コストを先に削ったぶん range 打ち切りの取り分が減ったことを示す。",{"type":86,"text":272},"6. 関連",{"type":253,"items":274},[275,276,277,278,279,280],"flag 定義と verdict 3 点セット: \u003Ccode>splat\u002Fcrates\u002Fsplat-train-v1\u002Fsrc\u002Fconfig.rs\u003C\u002Fcode> (各 enum に「2026-08-16 S2 後再判定」行を追記)","bench validate 修正: \u003Ccode>splat\u002Fcrates\u002Fsplat-cli\u002Fsrc\u002Fcmd\u002Fbench.rs\u003C\u002Fcode> (`BenchTomlConfig::from_path` + `run_parity`)","取り残されていた C3 bench config の修復: \u003Ccode>splat\u002Fconfigs\u002F2026-08-16-c3-bench-*-tile_counting.toml\u003C\u002Fcode> \u002F \u003Ccode>2026-08-16-c3-parity-candidate.toml\u003C\u002Fcode>","harness 規約 (σ \u002F 閾値 \u002F n の運用): \u003Ccode>docs\u002Ffindings\u002Fp2-bench-harness-calibration.toml\u003C\u002Fcode>","BackendConfig 規約: \u003Ccode>docs\u002Farchitecture\u002Fbackend-and-compiler-conventions.md\u003C\u002Fcode>","禁忌リスト: \u003Ccode>docs\u002Fstrategy\u002F2026-08-msplat-gap-sweep.md\u003C\u002Fcode> 大原則 4",{"type":86,"text":282},"7. loss_path 12.5k full gate (同一 session 交互 A\u002FB、n=3)",{"type":92,"columns":284,"align":292,"rows":293,"caption":322},[285,286,287,288,289,290,291],"arm","r1","r2","r3","mean","sd","median",[102,103,103,103,103,103,103],[294,301,308,315],[295,296,297,298,299,300,296],"host wallclock [s]","265.0","262.0","322.0","**283.00**","33.81",[302,303,304,305,306,307,305],"gpu wallclock [s]","179.0","186.0","184.0","**183.00**","3.61",[309,310,311,312,313,314,312],"host PSNR [dB]","36.176","36.101","36.148","**36.142**","0.038",[316,317,318,319,320,321,319],"gpu PSNR [dB]","36.114","36.240","36.211","**36.188**","0.066","12.5k full gate。wallclock mean -35.3% \u002F median -30.6%、PSNR +0.047 dB (guard ±0.1 内)。host r3 (322s) が外れ値で host 側 sd が 33.8s と大きい (gpu は 3.6s) ため median も併記したが、結論は不変。",{"type":77,"label":324,"variant":325,"text":326},"この flip は公式数値を動かさない (hygiene flip)","info","\u003Ccode>splat\u002Fconfigs\u002F\u003C\u002Fcode> の \u003Cstrong>全 237 config が \u003Ccode>loss_path\u003C\u002Fcode> を明示指定\u003C\u002Fstrong>しており、default 依存の config は \u003Cstrong>0 件\u003C\u002Fstrong>。とくに卒論に載る 12.5k gate 系 (C0\u002FS1\u002FW1\u002FW2\u002FS2 の \u003Ccode>*-12500-*.toml\u003C\u002Fcode>) は例外なく \u003Ccode>loss_path = \"gpu\"\u003C\u002Fcode> を書いていた。したがって本 flip で挙動が変わる既存 run は 1 つも無く、\u003Cstrong>公表済み wallclock \u002F PSNR は一切変更されない\u003C\u002Fstrong>。変わるのは「config で明示しなかった場合の既定値」だけであり、その意味でこれは性能改善の主張ではなく \u003Cstrong>enum default を実運用の実態に揃える hygiene\u003C\u002Fstrong> である。逆に言えば、default が Host のままだと W2 Stage B を取りこぼした構成が「既定」として提示され続けるという実害があった。",{"type":77,"label":328,"variant":83,"text":329},"品質証拠の質は他の default flip と異なる","C0 \u002F W1 \u002F W2 \u002F S2 の default flip はいずれも \u003Cstrong>bit-exact 主張\u003C\u002Fstrong>を伴い、\u003Ccode>bench --parity\u003C\u002Fcode> や単体 fixture の byte equality で裏付けられていた。\u003Ccode>loss_path\u003C\u002Fcode> は違う — host と GPU で SSIM の計算経路そのものが異なり、しかも \u003Ccode>--parity\u003C\u002Fcode> は GPU loss 経路専用なので \u003Cstrong>構造的に parity 比較ができない\u003C\u002Fstrong>。品質証拠は 12.5k の PSNR 対比 (Δ +0.047 dB) のみである。補強として既存の Lego 12.5k \u002F \u003Ccode>loss_path = Gpu\u003C\u002Fcode> の run \u003Cstrong>19 本が PSNR 36.183 ± 0.045 dB\u003C\u002Fstrong> の帯を成しており、本 gate の host arm (36.142) \u002F gpu arm (36.188) はいずれも帯の内側。なお \u003Ccode>phase5-step31-x-gpu-loss.md\u003C\u002Fcode> はこの比較で n=1 の PSNR -0.65 dB regression を報告し 4-sample variance test で撤回した経緯がある — 「撤回」は差が無いことの証明ではないので、n=3 の spread (host sd 0.038 \u002F gpu sd 0.066 dB) まで見て guard 内と判断した。",{"type":86,"text":331},"8. 計測衛生 (自己申告)",{"type":89,"text":333},"本タスクは GPU 専有条件で実施したが、作業中に \u003Cstrong>2 回この条件を自分で破った\u003C\u002Fstrong>: (1) validate 制約の網羅確認のため committed config を全件 `splat bench` に通したところ、これが実際に bench を実行し 12.5k gate の `gpu-r1` と競合した。(2) `cargo test` を gate 実行中に走らせ `host-r2` と競合した。とくに (2) は host loss 経路が host 側 SSIM で \u003Cstrong>CPU 律速\u003C\u002Fstrong>であるため、CPU 競合が host arm の wallclock を膨らませ \u003Cstrong>「gpu が速い」という自分の仮説に有利な方向\u003C\u002Fstrong>にバイアスする。両 run は無効として破棄し、全 job 停止後に単独で取り直した clean run で置き換えた (上表の r1 host 側以外はすべて clean)。以後の validate 網羅確認は GPU を使わない静的 TOML 解析で行い、全 237 config が制約を満たすことを確認した。",[335,348,355,362,370,377],{"id":56,"title":56,"subtitle":336,"date":9,"workspace":337,"tags":338,"verdict":343,"psnr":344,"psnr_unit":-1,"wallclock":345,"splats":346,"summary_url":347,"detail_path":347},"保持 flag 再 gate sweep: loss_path = gpu の 12.5k full run repeat 1 (同一 session 交互 A\u002FB)","splat",[5,19,339,340,341,342],"gpu-gate","no-profile","lego-12500","gpu","partial",36.11384582519531,"2m 59s",405911,"\u002Fruns\u002Frevisit-losspath-gpu-12500-r1\u002F",{"id":57,"title":57,"subtitle":349,"date":9,"workspace":337,"tags":350,"verdict":343,"psnr":351,"psnr_unit":-1,"wallclock":352,"splats":353,"summary_url":354,"detail_path":354},"保持 flag 再 gate sweep: loss_path = gpu の 12.5k full run repeat 2 (同一 session 交互 A\u002FB)",[5,19,339,340,341,342],36.23956298828125,"3m 6s",407822,"\u002Fruns\u002Frevisit-losspath-gpu-12500-r2\u002F",{"id":58,"title":58,"subtitle":356,"date":9,"workspace":337,"tags":357,"verdict":343,"psnr":358,"psnr_unit":-1,"wallclock":359,"splats":360,"summary_url":361,"detail_path":361},"保持 flag 再 gate sweep: loss_path = gpu の 12.5k full run repeat 3 (同一 session 交互 A\u002FB)",[5,19,339,340,341,342],36.2110710144043,"3m 4s",406723,"\u002Fruns\u002Frevisit-losspath-gpu-12500-r3\u002F",{"id":53,"title":53,"subtitle":363,"date":9,"workspace":337,"tags":364,"verdict":343,"psnr":366,"psnr_unit":-1,"wallclock":367,"splats":368,"summary_url":369,"detail_path":369},"保持 flag 再 gate sweep: loss_path = host の 12.5k full run repeat 1 (同一 session 交互 A\u002FB)",[5,19,339,340,341,365],"host",36.17603302001953,"4m 25s",407181,"\u002Fruns\u002Frevisit-losspath-host-12500-r1\u002F",{"id":54,"title":54,"subtitle":371,"date":9,"workspace":337,"tags":372,"verdict":343,"psnr":373,"psnr_unit":-1,"wallclock":374,"splats":375,"summary_url":376,"detail_path":376},"保持 flag 再 gate sweep: loss_path = host の 12.5k full run repeat 2 (同一 session 交互 A\u002FB)",[5,19,339,340,341,365],36.10091018676758,"4m 22s",409864,"\u002Fruns\u002Frevisit-losspath-host-12500-r2\u002F",{"id":55,"title":55,"subtitle":378,"date":9,"workspace":337,"tags":379,"verdict":343,"psnr":380,"psnr_unit":-1,"wallclock":381,"splats":382,"summary_url":383,"detail_path":383},"保持 flag 再 gate sweep: loss_path = host の 12.5k full run repeat 3 (同一 session 交互 A\u002FB)",[5,19,339,340,341,365],36.147926330566406,"5m 22s",411270,"\u002Fruns\u002Frevisit-losspath-host-12500-r3\u002F",[385,403,427,447,466,492,511],{"id":66,"title":386,"date":9,"status":10,"polarity":12,"category":387,"axes":388,"tags":389,"task_code":397,"related_runs":398,"delta_psnr":-1,"delta_wallclock":400,"rank":69,"verdict":70,"impact_summary":401,"detail_path":402},"splat bench harness 実装 + calibration — σ_replay 0.83%、full run 比 ~6x ノイズ削減","tooling",[14,15],[390,391,392,393,394,395,396,23],"bench-harness","calibration","variance","reproducibility","c7","fixed-workload","gate-infra","splat bench harness (2026-08-16 GPU 専有タスク)",[399],"lego-bench-calib-checkpoints","σ_replay 0.83% (n=10, final-scale workload) vs full run 実測 ~10% — 約 6x ノイズ削減","`splat bench --config bench.toml` を実装し、同一 config n=10 replay で \u003Cstrong>σ_replay = 0.234 ms\u002Fiter (mean 28.339 ms 比 0.83%)\u003C\u002Fstrong> を実測。full training run で観測されていた ~10% 分散に対し \u003Cstrong>約 6x のノイズ削減\u003C\u002Fstrong>。3-regime (iter 1000 \u002F 5000 \u002F final checkpoint、各 n=5) でも σ 1.2-4.6% の範囲に収まり、splat 数が少ない早期 regime ほど相対分散が大きい傾向を確認。有意判定閾値を \u003Ccode>max(2σ, 1%)\u003C\u002Fcode> と規約化し、以後の gate 判定をこの harness の計測に載せ替える。付随して `--parity` (kernel variant 間の勾配 \u002F binning 一致検証) と `[output] save_ply_at` (checkpoint 保存) を実装、parity mode の実測で production-scale シーンの `sorted_idx` tie-order 非決定性 (~0.2%、真の非決定性であって variant 差ではない) を発見し gate から除外した。","\u002Ffindings\u002Fp2-bench-harness-calibration\u002F",{"id":63,"title":404,"date":9,"status":10,"polarity":12,"category":405,"axes":406,"tags":407,"task_code":416,"related_runs":417,"delta_psnr":422,"delta_wallclock":423,"rank":69,"verdict":424,"impact_summary":425,"detail_path":426},"P2 gap sweep Phase 2 — C0 resident arena + C1 pass skip で -48.4% (bit-exact)","experiment",[14,15],[408,409,410,411,412,413,414,415,23],"gap-sweep","phase-2","c0-resident-arena","c1-radix-pass-skip","binning","bit-exact","unified-memory","page-fault","2026-08 msplat gap sweep Phase 2 C0\u002FC1",[418,419,420,421],"lego-c0-day0-attrib-1k","lego-c0-ab-periter-1k","lego-c0-ab-resident-1k","lego-c0-resident-12500","12.5k gate: 36.216 → 36.183 dB = -0.033 dB (bit-exact 実装、atomic 非決定性 guard ±0.1 内で通過)","12.5k gate: 766.07 → 395.59s = **-48.4%** (emit -98% \u002F radix -53% \u002F extract -81%)","c0-c1-adopted-default-flip-minus-48-percent","\u003Cstrong>単発 -48.4% は本 project 最大の 1 施策改善\u003C\u002Fstrong>で、msplat 実測 gap (11m48s vs 3m40s ≈ 3.2×、Lego 30k) を大幅に詰める lever が確定。766.07 → 395.59s は kernel を 1 行も触らず host 側 buffer 管理だけで達成 (bit-exact)。emit_pairs は 38.2% → 1.2% に消滅し、新 bottleneck は backward_raster 31.4% (→ 2-BWD last_contributor の trigger 25% を初超過) と radix_sort 11.7% (GPU compute 本体)。STP (feat.F) は emit の alloc 成分が消えた今、相対効果の再 bench が必要 (Phase 1a の -7.45% は大半が同じ page fault の削減で C0 と重複していた可能性が高い)。教訓: unified memory 環境の profiling では「GPU 時間」に host メモリ管理コストが化ける — per-kernel wallclock だけでなく buffer lifecycle を疑うこと。","\u002Ffindings\u002Fp2-c0-resident-binning\u002F",{"id":64,"title":428,"date":9,"status":10,"polarity":429,"category":405,"axes":430,"tags":431,"task_code":438,"related_runs":439,"delta_psnr":441,"delta_wallclock":442,"rank":443,"verdict":444,"impact_summary":445,"detail_path":446},"C3 per-tile counting sort — parity PASS \u002F PSNR guard PASS だが replay 有意差なしで棄却 (数値つき)","negative",[14],[408,409,432,433,434,435,339,436,390,23,437],"c3","tile-binning","counting-sort","bitonic-sort","rejected","determinism","C3 per-tile counting sort worktree 統合 + GPU gate (2026-08-16 GPU 専有タスク)",[440,399],"lego-c3-tile-counting-12500","12.5k full run PSNR guard: 36.226 → 36.190 dB = -0.036 dB (±0.1 dB guard 内、PASS)","replay bench final n=10: GlobalRadix 32.383ms\u002Fiter (σ2.23%) vs TileCounting 33.403ms\u002Fiter (σ4.60%) = **+3.15% (非有意、閾値 4.45%)**。iter5000 n=3: +0.38% (非有意)。radix_sort kernel 単体: final n=10 で 5721us→6151us (+7.5%)。full run 単体 (n=1): 360.96s→329.11s (-8.8%、非有意判定と矛盾、confound と判断し不採用)","medium","rejected-no-significant-speedup-flag-retained","別 worktree で実装済みだった C3 (per-tile counting sort) を main の util.rs 分割後の構造 (bench harness commit fe68cfa 由来) に手で移植し統合。smoke compile + unit test 6 本 + 既存 106 test 全 pass、build warning 0。\u003Ccode>splat bench --parity\u003C\u002Fcode> で数学的正しさを確認 (tile_offsets byte-exact、5 grad buffer tol 1e-4 以内 PASS)。しかし fixed-workload replay (final checkpoint n=10) では \u003Cstrong>+3.15%\u003C\u002Fstrong> ― 閾値 max(2σ,1%)=4.45% 未満で有意な高速化なし。radix_sort kernel 単体も +7.5% 遅い。12.5k full run の PSNR guard は通過 (-0.036 dB) したが、同じ full run の wallclock は -8.8% と replay の非有意判定に矛盾しており、これは既知の full-run 分散 confound と判断し gate 判定には採用しない (むしろ bench harness の存在意義を裏付ける実例)。default flip は見送り、TileCounting は BackendConfig flag として保持 (正しさは証明済みなので将来 CPU scan を GPU 化する等の改良余地があれば再挑戦可能)。副次効果として sort key \u003Ccode>(depth_bits&lt;&lt;32)|splat_idx\u003C\u002Fcode> により depth-tie 非決定性を解消した。","\u002Ffindings\u002Fp2-c3-tile-counting\u002F",{"id":65,"title":448,"date":9,"status":10,"polarity":12,"category":405,"axes":449,"tags":450,"task_code":455,"related_runs":456,"delta_psnr":461,"delta_wallclock":462,"rank":69,"verdict":463,"impact_summary":464,"detail_path":465},"P2 gap sweep Phase 2 — 2-BWD last_contributor で -15.0% (数学的同値)、STP 再判定は棄却",[14],[408,409,451,452,24,453,454,23],"2-bwd-last-contributor","backward","re-eval","function-constant","2026-08 msplat gap sweep Phase 2 2-BWD \u002F STP 再判定",[457,458,459,460],"lego-lc-smoke-1k","lego-p2lc-12500","lego-stp-c0-12500","lego-stack-lc-stp-12500","LC 12.5k gate: 36.183 → 36.191 dB = +0.008 dB (数学的同値実装、atomic 非決定性 guard ±0.1 内)","LC 12.5k gate: 395.59 → 336.33s = **-14.98%** (backward_raster -40.3%)。STP: -2.51% (gate 未達)、LC+STP スタック: 343.63s (LC 単独より +2.2%)","lc-adopted-minus-15-percent-stp-rejected-final","C0 (-48.4%) に続く Phase 2 第 2 弾で、backward 31.4% の新 bottleneck を kernel 側から -40.3% 削減。\u003Cstrong>Lego 12.5k = 336.33s で msplat 30K (220s) 比 1.53× まで縮小\u003C\u002Fstrong>し、gap sweep の目標 (≤2.0×) を達成した。実装は「forward が既に知っている打ち切り位置を backward に伝えるだけ」で数学的同値 — 品質を 1 bit も動かさずに backward の replay 計算量を ~40% 削った。STP 再判定は負の結果だが価値が高い: Phase 1a の -7.45% の正体が C0 と同じ page fault 削減だったことを分離実証し、「効果の重複を疑って再 bench する」protocol の正しさを裏付けた。次の bottleneck は forward rasterize 9.8% \u002F radix 13.5% \u002F SSIM 7.5% でいずれも trigger 25% 未達 — Phase 2 はここで完了、Phase 3 (再計測 + Pareto v3) へ。","\u002Ffindings\u002Fp2-last-contributor\u002F",{"id":60,"title":467,"date":9,"status":10,"polarity":12,"category":405,"axes":468,"tags":469,"task_code":479,"related_runs":480,"delta_psnr":487,"delta_wallclock":488,"rank":69,"verdict":489,"impact_summary":490,"detail_path":491},"S2 forward 1 CB 化 — replay -12〜13% \u002F busy 69 → 80% (default flip)",[14,15],[470,471,472,473,474,475,476,477,478,413,23,414],"1x-roadmap-v2","s2","forward-chained","command-buffer","hierarchical-scan","indirect-dispatch","radix-sort","gpu-busy","sync-tax","2026-08 1× 工程表 v2 — AC 復帰後 計測 queue #2 (S2 gate)",[481,482,483,484,485,486],"s2-12500-noprof-r1","s2-12500-noprof-r2","s2-12500-noprof-r3","s2gate-base-12500-r1","s2gate-base-12500-r2","s2gate-base-12500-r3","12.5k **同一 session 交互 A\u002FB** n=3 mean: S2 **36.167 dB** (36.154 \u002F 36.192 \u002F 36.155) vs default **36.160 dB** (36.107 \u002F 36.167 \u002F 36.205) = **+0.007 dB** (guard ±0.1 内、n=3 mean 判定 — n=1 判定なし)。S2 は prefix scan 部分こそ bit-exact だが end-to-end では既存の atomic 順序非決定性を継承するため、この guard は実質的な検査として機能している (default arm 自身の run 間振れ幅が ±0.05 dB ある)","replay bench (σ ≤1.5% の clean block、ABBA 交互 2 round): final regime **17.833 → 15.637 ms\u002Fiter = -12.3%**、iter5000 regime **16.600 → 14.395 = -13.3%** (有意閾値 max(2σ,1%) = 1.0〜1.8%)。頑健性確認の min-to-min 推定でも -10.6% \u002F -13.6%。12.5k full run **同一 session 交互 A\u002FB n=3 mean: 208.26 → 187.65s = -9.9%** (training elapsed では 205.10 → 184.61s = -10.0%)。参考値として counter session 当日 baseline 216.12s 比では -13.2%","s2-adopted-default-flip-chained-forward-and-hierarchical-scan","1× 工程表 v2 の並列性能軸で\u003Cstrong>本命に格上げ\u003C\u002Fstrong>されていた S2 を gate し、採用した。W2 が backward\u002Floss chain を 1 CB に畳んだのに対し S2 は forward 側を畳む — radix の per-pass CPU prefix scan を hierarchical GPU scan (bit-exact な整数 prefix sum) に、pair_count の host readback を indirect dispatch に置き換え、forward 全段を \u003Cstrong>1 CB \u002F 1 encoder \u002F 末尾 1 wait\u003C\u002Fstrong> に連結した。replay \u003Cstrong>final -12.3% \u002F iter5000 -13.3%\u003C\u002Fstrong> (閾値 1.0〜1.8% の 8〜13 倍)、12.5k full run は\u003Cstrong>同一 session 交互 A\u002FB (ABBAAB) n=3 で 208.26 → 187.65s = -9.9%\u003C\u002Fstrong>。\u003Cstrong>counter session が積み残した「busy 68.9%」は 79.8% まで回復\u003C\u002Fstrong>し、sync-tax は 5.21 → 2.86 ms\u002Fiter (-45%)。roadmap が注目トレードに挙げた「dispatch 26 → ~60 の overhead」は \u003Cstrong>busy ms\u002Fiter +0.20 = 回収額の 1\u002F11〜1\u002F24\u003C\u002Fstrong> と定量的にケリがつき、follow-up (radix reduce の histogram fold) は\u003Cstrong>総額 -1.1% 未満と判明したため S3 の後ろに defer\u003C\u002Fstrong>。\u003Cstrong>full run の Δ (-9.9%) が replay の Δ (-12.3%) を下回る一方、iteration 別に見ると -24.7% (iter1000) → -10.0% (iter12500) と単調に縮む\u003C\u002Fstrong> — S2 が削るのが\u003Cstrong>splat 数に依らない固定の per-iter host コスト\u003C\u002Fstrong>であることの直接証拠で、W1\u002FW2 (GPU 仕事量に比例する施策) とは pass-through の性質が異なる。msplat 同日等価 gap は \u003Cstrong>1.273× → 1.105×\u003C\u002Fstrong>。累計 (数学的同値の施策のみ) 766.07 → 187.65s = \u003Cstrong>-75.5%\u003C\u002Fstrong>。","\u002Ffindings\u002Fp2-s2-forward-chained\u002F",{"id":62,"title":493,"date":9,"status":10,"polarity":12,"category":405,"axes":494,"tags":495,"task_code":501,"related_runs":502,"delta_psnr":506,"delta_wallclock":507,"rank":69,"verdict":508,"impact_summary":509,"detail_path":510},"W1 warp sparse skip + exp-skip — backward -35% \u002F replay -11.2% (bit-exact)",[14],[470,496,497,498,452,499,500,454,413,23],"w1","warp-sparse-skip","exp-skip","forward","simd-any","2026-08 1× 工程表 v2 W1",[503,504,505],"lego-w1-warpany-12500","lego-w1-warpany-12500-rep2","lego-w1-warpany-12500-rep3","12.5k gate n=3: 36.209 \u002F 36.201 \u002F 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 判定なし)","replay bench final regime: 21.724 → 19.300 ms\u002Fiter = **-11.16%** (閾値 max(2σ,1%)=2.7%)。iter5000 regime: 19.984 → 17.759 = **-11.13%** (閾値 3.1%)。backward_raster: 7.183 → 4.652 ms\u002Fcall (**-35.2%**、GPU 部 5.963 → 3.437 = -42.4%)。12.5k full run n=3: 239.74 \u002F 246.93 \u002F 237.57s → mean **241.41s** (S1 基準 261.55s 比 **-7.7%**)","w1-adopted-default-flip-warp-any","1× 工程表 v2 の第 1 波。msplat \u002F Inria \u002F brush の 3 実装が持ち本実装だけ欠落していた backward の 2 つの skip を、bit-exact の等価性論証つきで移植した。backward_raster は LC (2-BWD) 後の 7.2ms\u002Fcall から 4.65ms\u002Fcall へ -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%) \u002F radix (15.0%) で、W2 (encoder\u002FCB 統合) と計測 (counter session) が次段。","\u002Ffindings\u002Fp2-w1-warp-sparse-skip\u002F",{"id":61,"title":512,"date":9,"status":10,"polarity":12,"category":405,"axes":513,"tags":514,"task_code":519,"related_runs":520,"delta_psnr":524,"delta_wallclock":525,"rank":69,"verdict":526,"impact_summary":527,"detail_path":528},"W2 encoder\u002FCB 統合 — replay -13.7% \u002F 12.5k -9.1% (bit-exact、default flip)",[14,15],[470,515,516,473,517,518,413,23,414],"w2","chained-submission","encoder","set-bytes","2026-08 1× 工程表 v2 W2",[521,522,523],"lego-w2-chained-12500","lego-w2-chained-12500-rep2","lego-w2-chained-12500-rep3","12.5k gate n=3: 36.160 \u002F 36.203 \u002F 36.146 dB → mean 36.170 dB = W1 基準 36.201 (n=3 mean) 比 -0.031 dB (guard ±0.1 内、n=3 mean 判定 — n=1 判定なし)","replay bench final regime: 20.869 → 18.005 ms\u002Fiter = **-13.7%** (clean batch 帯 -13.7〜-16.2%、閾値 max(2σ,1%)=1.9%)。iter5000 regime: clean 帯 18.60〜19.76 → 16.56〜16.61 = **-10.7〜-15.9%** (閾値 ≤2.8%)。12.5k full run n=3: 213.42 \u002F 224.83 \u002F 220.27s → mean **219.51s** (W1 基準 241.41s 比 **-9.1%**)","w2-adopted-default-flip-chained","1× 工程表 v2 の第 2 波。HW 4 軸調査 #2 の CB\u002Fwait 監査 (本実装 ~21 CB \u002F ~11 wait vs msplat 1 CB \u002F 0 wait) を受け、submission 戦略を BackendConfig の enum variant として実装・gate した。同一 CB 内の連続 encoder は firmware が CPU 介在なしに back-to-back 実行するため、per-kernel の commit + waitUntilCompleted (0.1〜1 ms 級の full round trip) が丸ごと消える。replay 全体で -13.7% (final)、12.5k full run は 241.41 → 219.51s で msplat 同日等価 gap は 1.44× → 1.31× に縮小。累計 (数学的同値の施策のみ) は 766.07 → 219.51s = -71.3%。expected gate 帯 -5〜15% (F.3 overlap 割引済) のほぼ上限で着弾し、F.3 (radix GPU scan) が単独敗北した『wait 除去』が、chain 全体の統合では大きく勝つことを示した — 部分 wait 除去と全 chain 統合の ROI 差は axis 3 (unified memory \u002F submission 論) の narrative 素材。次の律速は forward 30% (radix 18% 内数) \u002F chain GPU 26%。","\u002Ffindings\u002Fp2-w2-chained-submission\u002F",1790227326539]