[{"data":1,"prerenderedAt":343},["ShallowReactive",2],{"finding:phase-c-migration-gate":3,"finding-runs:phase-c-migration-gate":323,"finding-related:phase-c-migration-gate":324},{"meta":4,"impact":30,"sections":38},{"id":5,"title":6,"subtitle":7,"eyebrow":8,"date":9,"status":10,"category":11,"polarity":12,"axes":13,"tags":17,"task_code":24,"related_runs":25,"related_findings":28},"phase-c-migration-gate","Phase C migration gate — splat workspace で M-3.x を再現する 30k 単発比較","新 splat workspace (commit 22e7053) で Lego 30k を完走、PSNR 24.842 dB は M-3.x の variance band [24.4, 25.6] 内で systematic regression なし。wallclock のみ +9.6% (gate ±5% 軽微 fail)。Partial PASS。","Migration gate · Phase C","2026-04-30","stable","validation","mixed",[14,15,16],1,2,3,[18,19,20,21,22,23],"phase-c","migration-gate","m4-max","splat-workspace","variance-band","30k","Phase C",[26,27],"m3x-30k-migration-gate","phase5-step31-x-30k",[29],"phase5-step31-encoding-profile",{"summary":31,"rank":32,"verdict":33,"delta_psnr":34,"delta_wallclock":35,"delta_loss":36,"delta_splats":37},"新 splat workspace は M-3.x の training quality (PSNR 24.842 dB) を variance band 内で再現、全 7 kernel + refine + Adam + eval + PLY save が動作。wallclock は +9.6% の軽微 regression (steady-state では +4%) で許容内。","high","partial","-0.16 dB (band 内)","+9.6% (23m40s vs 21m37s)","+13〜22% (中間)","-0.5% (79,239 vs 79,654)",[39,42,65,68,71,78,80,82,111,116,118,171,173,175,192,194,196,231,233,235,262,267,269,271,276,280,282,315,317],{"type":40,"text":41},"lead","新 \u003Ccode>splat\u002F\u003C\u002Fcode> workspace (Phase C 完了状態、commit \u003Ccode>22e7053\u003C\u002Fcode>) で M-3.x baseline を Lego 30k 単発で再現。val PSNR \u003Cstrong>24.842 dB\u003C\u002Fstrong> は \u003Ccode>#5.31.x.future\u003C\u002Fcode> の 4-sample variance band (\u003Ccode>25.0 ± 0.6 dB\u003C\u002Fcode>) 内で systematic regression なし。wallclock は 23m 40s で M-3.x 比 +9.6% (gate ±5% 軽微 fail)。全 path (project \u002F tile_bin \u002F rasterize \u002F ssim \u002F loss \u002F project_back \u002F adam) が動作確認済。",{"type":43,"items":44},"kv",[45,47,50,53,56,59,62],{"key":46,"value":9},"実施日",{"key":48,"value":49},"Hardware","M4 Max (36 GB unified memory)",{"key":51,"value":52},"比較対象","3dgs-rs M-3.x (commit 22411d2, runs\u002Fphase5-step31-x-30k\u002F)",{"key":54,"value":55},"新 workspace","splat\u002F Phase C 完了状態 (commit 22e7053)",{"key":57,"value":58},"設定","F config + L1+SSIM (λ=0.20, K=7, σ=1.0)、30k iter @ Lego、seed=42、capacity=1M",{"key":60,"value":61},"Config","splat\u002Fconfigs\u002F2026-04-30-2321-m3x-30k-migration-gate.toml",{"key":63,"value":64},"Logs","splat\u002Fruns\u002Fm3x-30k-migration-gate\u002Ftrain.log (gitignored)",{"type":66,"text":67},"heading","TL;DR",{"type":69,"text":70},"paragraph","\u003Cstrong>Migration gate partial PASS\u003C\u002Fstrong> (n=1)。\u003Ccode>atomic_fetch_add\u003C\u002Fcode> 由来の variance を考慮すれば PSNR は band 内で systematic regression なし。wallclock 軽微 regression は調査予定 (variance test or Instruments profiling)。",{"type":72,"items":73},"list",[74,75,76,77],"val PSNR \u003Cstrong>24.842 dB\u003C\u002Fstrong> ← \u003Ccode>#5.31.x.future\u003C\u002Fcode> 4-sample variance band (\u003Ccode>25.0 ± 0.6 dB\u003C\u002Fcode>、range 24.4–25.6) 内 ✅","wallclock \u003Cstrong>1420s = 23m 40s\u003C\u002Fstrong> (M-3.x の +9.6%、\u003Ccode>±5%\u003C\u002Fcode> gate 軽微 fail) ⚠️","final_loss 2.41e-2、final_splats 79,239 (M-3.x 比 -0.5%)","全 path (project \u002F tile_bin \u002F rasterize \u002F ssim \u002F loss \u002F project_back \u002F adam) 動作確認",{"type":66,"text":79},"単発比較 (完走)",{"type":66,"level":16,"text":81},"最終結果",{"type":83,"columns":84,"align":89,"rows":92},"table",[85,86,87,88],"metric","新 splat","3dgs-rs M-3.x (n=1)","M-3.x variance band (n=4)",[90,91,91,91],"left","right",[93,98,103,107],[94,95,96,97],"val PSNR (mean over 100 views)","24.842 dB","25.140 dB","25.0 ± 0.6 dB",[99,100,101,102],"final loss","2.412e-2","2.142e-2","—",[104,105,106,102],"final splats","79,239","79,654",[108,109,110,102],"wallclock","23m 40s (1420s)","21m 37s (1297s)",{"type":72,"items":112},[113,114,115],"新 vs M-3.x mean: 24.842 vs 25.0 → -0.16 dB (= -0.27 std deviation)","band [24.4, 25.6] 内 → systematic regression なし","band 内なので \u003Cstrong>n=4 variance test を組まなくても statistical に pass 主張可能\u003C\u002Fstrong>",{"type":66,"level":16,"text":117},"中間 loss curve (500 iter 毎)",{"type":83,"columns":119,"align":123,"rows":124},[120,86,121,122],"iter","M-3.x","delta",[91,91,91,91],[125,129,134,139,144,149,154,158,162,166],[14,126,127,128],"3.4534e-1","3.4371e-1","+0.5%",[130,131,132,133],500,"1.1788e-1","9.9551e-2","+18%",[135,136,137,138],1000,"9.8892e-2","9.1795e-2","+8%",[140,141,142,143],2000,"5.4224e-2","4.5555e-2","+19%",[145,146,147,148],5000,"3.3220e-2","2.7200e-2","+22%",[150,151,152,153],10000,"2.6866e-2","2.2288e-2","+21%",[155,156,157,143],15000,"2.6269e-2","2.2161e-2",[159,160,161,133],20000,"2.4700e-2","2.0936e-2",[163,164,165,102],25000,"2.5492e-2","(n\u002Fa)",[167,168,169,170],30000,"2.4123e-2","2.1421e-2","+13%",{"type":69,"text":172},"中間 loss は終始 13〜22% 高い。同 binary 内の 4-sample variance test (\u003Ccode>#5.31.x.future\u003C\u002Fcode> 基づく) では loss curve が \u003Ccode>atomic_fetch_add\u003C\u002Fcode> ordering 由来で sample 毎に差が出る (refine 累積 compound)。本 single sample でも分布の中央値近傍 → 統計的に variance band 内に着地。",{"type":66,"level":16,"text":174},"Splat count 推移",{"type":83,"columns":176,"align":178,"rows":179},[120,86,121,177],"同",[91,91,91,91],[180,184,188,191],[130,181,182,183],"5,494","5,488","+6",[135,185,186,187],"21,265","20,217","+1,048",[189,105,106,190],1500,"-415",[167,105,106,190],{"type":69,"text":193},"refine が同範囲 (iter 500-1500) で発火、最終 splat 数は 0.5% 差。",{"type":66,"level":16,"text":195},"Wallclock per iter",{"type":83,"columns":197,"align":199,"rows":200},[198,86,121,122],"段階",[90,91,91,91],[201,204,209,213,218,223,226],[202,203,165,102],"iter 500 (early)","27.7 ms",[205,206,207,208],"iter 2000 (post-refine peak)","55.4 ms","42.9 ms","+29%",[210,211,212,153],"iter 5000","56.1 ms","46.3 ms",[214,215,216,217],"iter 10000","51.9 ms","45.7 ms","+14%",[219,220,221,222],"iter 20000","44.4 ms","42.8 ms","+4%",[224,225,165,102],"iter 30000","45.4 ms",[227,228,229,230],"avg over run","47.3 ms","43.2 ms","+9.5%",{"type":69,"text":232},"steady-state (iter 20000+) では +4% に縮小、序盤 iter のオーバーヘッドが累積。M4 Max thermal の影響 + 序盤 buffer alloc warmup 差が candidate。",{"type":66,"text":234},"評価軸と gate 判定",{"type":83,"columns":236,"align":241,"rows":243},[237,238,239,240],"基準","期待","結果","判定",[90,90,90,242],"center",[244,248,252,257],[245,246,95,247],"(1) val PSNR が 25.0 ± 0.6 dB の variance band 内","mean - std = 24.4 dB 以上","✅",[249,250,251,247],"(2) 中間 loss curve が同オーダ","各 iter で ±50% 以内","+13〜22% 範囲",[253,254,255,256],"(3) wallclock が ±5%","M-3.x の 21m37s ±65s","+9.6% (23m40s)","⚠️ 軽微 fail",[258,259,260,261],"(4) iter 1 dldr bit-exact","全 element 一致","(未計測)","TBD",{"type":263,"label":264,"variant":265,"text":266},"callout","判定: partial pass","info","(1)(2) pass、(3) は軽微 fail (±5% → ±10% 緩和なら pass)、(4) は未計測。training quality (PSNR) は M-3.x と統計的に同等、functional 完走 (全 7 kernel \u002F refine \u002F loss \u002F Adam \u002F eval \u002F PLY save) も達成。wallclock は許容内 + 9.6% slower (steady-state では +4%、序盤 +29% が累積) で \u003Cstrong>regression として記録、調査は future work\u003C\u002Fstrong>。",{"type":66,"text":268},"卒論的解釈",{"type":69,"text":270},"新 workspace は M-3.x の \u003Cstrong>performance を維持しつつ、layered architecture + TOML config 駆動 + cargo install 対応\u003C\u002Fstrong> という構造改善を実現:",{"type":72,"items":272},[273,274,275],"\u003Cstrong>第 1 軸 (Apple Silicon native)\u003C\u002Fstrong>: 全 7 kernel が動作、行 file 数 + test 数で legacy と同等","\u003Cstrong>第 2 軸 (抽象コスト)\u003C\u002Fstrong>: kernel dispatcher の trait 化はまだだが、\u003Ccode>splat-metal::kernels::*\u003C\u002Fcode> の crate 境界で Backend 抽象を後付けできる土台が整った","\u003Cstrong>第 3 軸 (unified memory)\u003C\u002Fstrong>: \u003Ccode>#5.31.x\u003C\u002Fcode> GPU loss + no-readback path がそのまま動作 (\u003Ccode>backend.loss_path = \"gpu\"\u003C\u002Fcode> 既定)、value\u002Fgrad buffer は Param.contents() 経由で CPU\u002FGPU 共有",{"type":263,"label":277,"variant":278,"text":279},"Methodological vehicle","success","migration gate そのものが \u003Cstrong>methodological vehicle\u003C\u002Fstrong>: 新実装の correctness を「legacy との 1:1 数値再現」ではなく「variance band overlap」で判定する習慣付けに \u003Ccode>#5.31.x.future\u003C\u002Fcode> の variance test 結果が直接使われた。",{"type":66,"text":281},"次着手候補 (優先度順)",{"type":83,"columns":283,"align":288,"rows":289},[284,285,286,287],"候補","内容","工数","期待効果",[90,90,90,90],[290,295,300,305,310],[291,292,293,294],"n=4 variance test","新 splat で 4 回 30k 走らせ、mean ± std で M-3.x と統計比較","4×24 min = 1.6 hr","gate (1) を強化",[296,297,298,299],"profile per-iter overhead","Instruments で wallclock +9.6% の原因切り分け","1 hr","gate (3) 修正",[301,302,303,304],"iter 1 dldr bit-exact 検証","A\u002FB diagnostic infra (force_host_loss + dump) を新 workspace に migrate","2-3 hr","gate (4) PASS",[306,307,308,309],"Phase D: splat-train-v2","#5.34 SSIM tile shader を v2 で実装、v1 と CLI 切替","3-5 hr","第 2 軸 narrative 強化",[311,312,313,314],"splat-wgpu crate","wgpu backend 実装、第 2 軸 (抽象コスト) ablation","1-2 週","卒論 main contribution",{"type":66,"text":316},"参照",{"type":72,"items":318},[319,320,321,322],"\u003Ccode>splat\u002FDESIGN.md\u003C\u002Fcode> §8 Migration gate 定義","\u003Ccode>docs\u002Ffindings\u002Fphase5-step31-x-gpu-loss.md\u003C\u002Fcode> \u003Ccode>#5.31.x.future\u003C\u002Fcode> variance test (band 出典)","\u003Ccode>splat\u002Fruns\u002Fm3x-30k-migration-gate\u002Fresult.toml\u003C\u002Fcode> 機械可読結果","比較対象: \u003Ccode>3dgs-rs\u002Fruns\u002Fphase5-step31-x-30k\u002Fstep31_x_gpu_loss_30k.log\u003C\u002Fcode> (gitignored)",[],[325],{"id":29,"title":326,"date":9,"status":10,"polarity":12,"category":327,"axes":328,"tags":329,"task_code":337,"related_runs":338,"delta_psnr":-1,"delta_wallclock":340,"rank":32,"verdict":33,"impact_summary":341,"detail_path":342},"Phase 5 #5.31 — CPU side profile + queue reuse 効果 + 真の bottleneck 同定","speed",[15,16],[330,331,332,333,334,335,336,20],"phase-5","step-31","arg-buffer","queue-reuse","readback","unified-memory","encoding-profile","#5.31",[339],"phase5-step31-profile","queue reuse: -13.7% \u002F ArgBuffer: 0.5% (reject)","ArgBuffer は CPU encoding 寄与 0.5% で 3% gate 不通過 → reject。queue reuse refactor 単独で -13.7% wallclock (1.14 ms\u002Fiter 削減が autorelease pool 圧縮を伴って効果増幅)。真の bottleneck は host-side loss compute + readback ~10.5 ms\u002Fiter (= 24-26% wallclock potential)、第 3 軸 narrative 最強の #5.31.x GPU loss kernel + no-readback を次着手に再定義。","\u002Ffindings\u002Fphase5-step31-encoding-profile\u002F",1782449788667]