[{"data":1,"prerenderedAt":442},["ShallowReactive",2],{"finding:p3-kernel-share-drums":3,"finding-runs:p3-kernel-share-drums":372,"finding-related:p3-kernel-share-drums":398},{"meta":4,"impact":37,"sections":43},{"id":5,"title":6,"subtitle":7,"eyebrow":8,"date":9,"status":10,"category":11,"polarity":12,"axes":13,"tags":16,"task_code":23,"commit":24,"branch":25,"config_paths":26,"related_runs":30,"related_findings":34},"p3-kernel-share-drums","drums (998k splats @30k, in-window 749k @12.5k) per-kernel share 実測 — share 構造は Lego とほぼ不変 (backward_raster 40.09% vs 40.07%)、絶対 ms\u002Fiter 差は binary vintage (S4b+C2) で汚染","`splat\u002Fconfigs\u002F2026-08-31-c1-drums-12500-off-prof.toml` (submission=per_kernel\u002Fforward_submission=per_stage\u002Fpipelining=off、[backend] は c1v2 Lego config を移植) で drums 12.5k を 1 run。leaf 9 label の gpu_ms 合計 170.414242s は末尾 `[gpu] busy 170.414s` と\u003Cstrong>誤差 0.24ms で一致\u003C\u002Fstrong> (leaf 判定は union との一致で検算、p3-kernel-share-post-s3 と同じ規約)。\u003Cstrong>backward_raster(+project_back) 40.09%\u003C\u002Fstrong> > rasterize 14.94% > adam 15.52% > ssim 12.75% > radix 11.37% — Lego v2 (40.07\u002F14.13\u002F15.28\u002F13.12\u002F12.01%) と\u003Cstrong>share は ±1.5pt 以内でほぼ一致\u003C\u002Fstrong>。ただし in-window (12.5k 時点) の splat 数は drums 748,708 \u002F Lego 404,652 で比 1.850倍 (30k 収束時の 998k\u002F400k≈2.5倍とは別の数字)。ms\u002Fiter は全 kernel が drums で 1.17〜1.93倍に増加しており、splat-count に無関係なはずの ssim_fwd_grad も 1.446倍増 (1.202→1.738 ms\u002Fiter) — comparison 対象の binary vintage 差 (Lego v2 は a446f2c、drums は HEAD 3db33a8、間に S4b ssim_reduce=gpu default flip と C2 計装追加が入っている) による系統的な底上げが疑われ、絶対値比較は汚染されている。","次フェーズ タスクリスト · 多 scene per-kernel share 検証 (drums)","2026-08-31","stable","measurement","mixed",[14,15],1,3,[5,17,18,19,20,21,22],"multi-scene","drums","per-kernel-gpu-ms","kernel-share","gpu-gate","binary-vintage-caveat","次フェーズ タスクリスト — 多 scene 検証 (drums per-kernel share)","3db33a802265","main",[27,28,29],"splat\u002Fconfigs\u002F2026-08-31-c1-drums-12500-off-prof.toml","splat\u002Fconfigs\u002F2026-08-30-c1v2-12500-off-prof.toml","splat\u002Fconfigs\u002F2026-08-31-c1v3-12500-off-prof.toml",[31,32,33],"c1-drums-12500-off-prof","c1v2-12500-off-prof","c1v3-12500-off-prof",[35,36],"p3-kernel-share-post-s3","p1-axis1-phase-g-pareto-landscape",{"summary":38,"rank":39,"verdict":40,"delta_psnr":41,"delta_wallclock":42},"Lego で判断された今日の最適化候補が drums (998k splats @30k、Lego の 2.5倍) でも同じ share 構造で有効かを判定した。drums 12.5k を Lego v2 と同一 regime (submission=per_kernel\u002Fforward_submission=per_stage\u002Fpipelining=off) で 1 run 実測した結果、\u003Cstrong>per-kernel share は Lego v2 とほぼ同一\u003C\u002Fstrong> (backward_raster 40.09% vs 40.07%、adam 15.52% vs 15.28%、rasterize 14.94% vs 14.13%、ssim 12.75% vs 13.12%、radix 11.37% vs 12.01% — 全 kernel で Δ≤1.5pt)。\u003Cstrong>splat 数が 1.85倍 (in-window 748,708 vs 404,652) 違っても share 順位・構造がほぼ動かない\u003C\u002Fstrong>という結果は、Lego で優先度付けした施策 (M3 系 backward・M4 radix・S4b ssim 等) の相対重要度が drums でも維持されることを示唆する。\u003Cstrong>ただし絶対 ms\u002Fiter の比較は binary vintage 差で汚染されている\u003C\u002Fstrong> — 比較対象の Lego v2 は commit a446f2c、drums は HEAD 3db33a8 で、間に S4b (ssim_reduce=gpu default flip) と C2 計装 (全 CB へ kernel timestamp 収集追加) が入っている。splat 数と無関係なはずの ssim_fwd_grad が 1.446倍 (1.202→1.738 ms\u002Fiter) 増えている一方、全 9 leaf kernel が揃って 1.17〜1.93倍という比較的均一な増加を示しており、これは\u003Cstrong>純粋な splat-count scaling では説明しにくく、binary vintage (S4b\u002FC2) 由来の系統的な底上げが乗っている可能性が高い\u003C\u002Fstrong>。よって「share の相対構造」は信頼できるが「ms\u002Fiter の絶対値・scaling 係数」は次ラウンドで Lego 側も HEAD で撮り直すまで確定できない。","medium","share-structure-invariant-under-1.85x-splat-scale \u002F absolute-ms-comparison-contaminated-by-binary-vintage","n\u002Fa (drums self-eval mean val PSNR 24.518 dB @12.5k — non-converged 途中経過、多 scene 退行チェックの正式値ではない。参照: multiscene-drums-30k baseline は 30k 収束時 27.217 dB)","drums: train elapsed 249.77s (n=1) \u002F Lego v2: 174.57s (n=1)。**両方とも production baseline とは比較しない** — submission=per_kernel\u002Fforward_submission=per_stage\u002Fpipelining=off の 3 重に非 production な測定専用 regime (busy% drums 68.3%、Lego v2 65.6%)。意味があるのは kernel 単体の gpu_ms とその share のみ",[44,47,50,68,70,84,150,152,223,228,232,234,248,250,256,258,282,360,363,367],{"type":45,"text":46},"lead","drums (nerf_synthetic, 998k splats @30k 収束時 — Lego 30k の約 2.5倍、p1-axis1-phase-g-pareto-landscape §2) は本日の全最適化判断の根拠になった Lego per-kernel share (p3-kernel-share-post-s3 §6 v2) と splat 数の regime が大きく異なる。\u003Cstrong>share 構造が splat 数に対して不変か\u003C\u002Fstrong> — つまり Lego で優先した施策の順位が drums でも成り立つか — を 1 run 実測で判定する。",{"type":48,"text":49},"heading","0. 計測 regime — c1v2 (Lego) と同一の逸脱・同一の理由",{"type":51,"items":52},"kv",[53,56,59,62,65],{"key":54,"value":55},"base config","`runs\u002Fmultiscene-drums-30k\u002Fconfig.toml` (drums, G.3-alone 30k recipe) — [data]\u002F[output]\u002F[trainer]\u002F[refine]\u002F[adam] を継承",{"key":57,"value":58},"[backend] の出自","`2026-08-30-c1v2-12500-off-prof.toml` (Lego, M4\u002FA7 後の per-kernel share 計測 config) の [backend] 節をそのまま移植: `submission = per_kernel` \u002F `forward_submission = per_stage` \u002F `pipelining = off` \u002F `profile = true` \u002F `binning = resident` \u002F `raster_backward_range = last_contributor` \u002F `radix_scan = gpu_hierarchical`",{"key":60,"value":61},"変更点","`[trainer] max_steps` を drums base の 30000 から **12500** に変更 (Lego c1v2 と同じ measurement window に揃える — 「drums 12.5k」)。`[refine] stop_iter` は drums base の 15000 のまま (15000 > 12500 なので measurement window 全域で refine が active、c1v2 の stop_iter=12500=max_steps と実質同じ状態)",{"key":63,"value":64},"run 実行","`splat check` で config 検証後、nohup + disown で background 起動 (DONE sentinel は run 側では書かれないため呼び出し側の shell wrapper で `echo done > *.DONE` を追加)。foreground `until` loop で能動待機、249.77s で完了 (exit=0)",{"key":66,"value":67},"flag 実測確認","run log の `[backend] BackendConfig { … }` 行で `radix_scatter: SimdBallot` \u002F `refine_scratch_persist: true` \u002F `refine_direct_write: true` \u002F `ssim_reduce: Gpu` \u002F `submission: PerKernel` \u002F `forward_submission: PerStage` \u002F `pipelining: Off` \u002F `binning: Resident` を確認 (意図した regime で走っていることの直接証拠)",{"type":48,"text":69},"1. drums per-kernel gpu_ms 表 (leaf のみ、二重計上を除去)",{"type":51,"items":71},[72,75,78,81],{"key":73,"value":74},"leaf 判定の検算","9 leaf label (backward_raster \u002F adam \u002F fwd_rasterize \u002F ssim_fwd_grad \u002F fwd_radix_sort \u002F fwd_project \u002F fwd_emit_pairs \u002F l1_combine_ssim \u002F fwd_extract_off) の gpu_ms 合計 **170,414.242ms = 170.414242s** が、run 末尾の `[gpu] busy 170.414s` と**誤差 0.24ms (0.00014%) で一致** — c1v2 v2 と同じ検算が drums でも通る",{"key":76,"value":77},"ts_forward は集計 label (leaf から除外)","`ts_forward` (gpu_ms 51,751.594) = `fwd_project(4,921.986) + fwd_emit_pairs(1,763.565) + fwd_radix_sort(19,382.967) + fwd_rasterize(25,457.227) + fwd_extract_off(225.849)` の和と**bit 一致**。c1v2 v2 §6 の callout と同じ現象 (host 計測目的の子スコープ)",{"key":79,"value":80},"ts_project_back の二重計上","`ts_project_back` (gpu_ms 68,320.800) は `ts_backward_raster` (同 68,320.800) と bit 同値。c1v2\u002Fcounter-session と同一現象、1 行に統合",{"key":82,"value":83},"0 に落ちる label","`ts_raster_bwd_gpu` \u002F `ts_project_back_gpu` \u002F `ts_project_soa_gpu` \u002F `ts_refine_accumulate` \u002F `ts_refine` \u002F `ts_opacity_decay` \u002F `ts_zero_grads` \u002F 各 `*_alloc`\u002F`*_upload`\u002F`*_readback` は gpu_ms 0.000 (非ブロッキング harvest が親 label に帰属する既知の限界、p3-kernel-share-post-s3 §1 と同一機構)。leaf 集合から除外",{"type":85,"columns":86,"align":91,"rows":94},"table",[87,88,89,90],"kernel (leaf label)","gpu_ms (12,500 iter)","gpu_ms\u002Fiter","share",[92,93,93,93],"left","right",[95,100,105,110,115,120,125,130,135,140,145],[96,97,98,99],"**`ts_backward_raster` (+`ts_project_back`)**","68,320.800","**5.466**","**40.09%**",[101,102,103,104],"`ts_adam`","26,451.188","2.116","15.52%",[106,107,108,109],"`ts_fwd_rasterize`","25,457.227","2.037","14.94%",[111,112,113,114],"`ts_ssim_fwd_grad`","21,721.819","1.738","12.75%",[116,117,118,119],"`ts_fwd_radix_sort`","19,382.967","1.551","11.37%",[121,122,123,124],"`ts_fwd_project`","4,921.986","0.394","2.89%",[126,127,128,129],"`ts_l1_combine_ssim`","2,168.841","0.173","1.27%",[131,132,133,134],"`ts_fwd_emit_pairs`","1,763.565","0.141","1.04%",[136,137,138,139],"`ts_fwd_extract_off`","225.849","0.018","0.13%",[141,142,143,144],"**leaf 合計**","**170,414.242**","**13.633**","**100%**",[146,147,148,149],"(参照) `[gpu] busy` union","170,414.0 (170.414s)","13.633","—",{"type":48,"text":151},"2. Lego v2 との並記 — share 構造はほぼ不変、ms\u002Fiter は全 kernel が 1.17〜1.93倍",{"type":85,"columns":153,"align":161,"rows":162},[154,155,156,157,158,159,160],"kernel","Lego v2 ms\u002Fiter (a446f2c)","drums ms\u002Fiter (3db33a8)","ms\u002Fiter 比","Lego v2 share","drums share","share Δ (pt)",[92,93,93,93,93,93,93],[163,171,177,183,189,195,201,207,213,219],[164,165,166,167,168,169,170],"backward_raster (+project_back)","3.670","5.466","1.489×","40.07%","40.09%","+0.02",[172,173,103,174,175,104,176],"adam","1.400","1.511×","15.28%","+0.24",[178,179,108,180,181,109,182],"rasterize","1.295","1.573×","14.13%","+0.81",[184,185,113,186,187,114,188],"ssim (`ts_ssim_fwd_grad`)","1.202","**1.446×**","13.12%","-0.37",[190,191,118,192,193,119,194],"radix","1.100","1.410×","12.01%","-0.64",[196,197,123,198,199,124,200],"project","0.271","1.451×","2.96%","-0.07",[202,203,128,204,205,129,206],"l1_combine_ssim","0.090","**1.928×**","0.98%","+0.29",[208,209,133,210,211,134,212],"emit_pairs","0.121","1.167×","1.32%","-0.28",[214,215,138,216,217,139,218],"extract_off","0.011","1.616×","0.12%","+0.01",[141,220,143,221,222,222,149],"**9.161**","**1.488×**","100%",{"type":224,"label":225,"variant":226,"text":227},"callout","share は Δ≤1.5pt に収まる — splat 数 1.85倍でも構造はほぼ不変","success","9 kernel すべてで share の差は \u003Cstrong>1.5pt 未満\u003C\u002Fstrong> (最大は project の -0.07pt〜rasterize の +0.81pt)。\u003Cstrong>backward_raster が単独最大ブロックであること (40%強)、2 位が adam\u002Frasterize (15%前後)、3 位がssim\u002Fradix (11-13%) という順位・大まかな比率は drums でも維持されている\u003C\u002Fstrong>。Lego の per-kernel share に基づいて優先付けた施策 (backward_raster 系が最優先、radix\u002Fadam\u002Frasterize\u002Fssim が僅差の次点) の相対順位は、splat 数が 1.85倍の drums でも覆らない、というのが本 run の一次的な結論。",{"type":224,"label":229,"variant":230,"text":231},"ms\u002Fiter 絶対値は binary vintage (S4b + C2 計装) で汚染 — ssim アンカーが検出","warning","本比較の Lego v2 (a446f2cacb5a) と drums (HEAD 3db33a802265) の間には 34 commit (非 doc-only 12 commit) が splat\u002F に入っている。特に \u003Cstrong>S4b (`4405bb4`, ssim_reduce=Gpu default flip、12.5k production -1.43%)\u003C\u002Fstrong> と \u003Cstrong>C2 計装追加 (`9deb14a`, 全 CB に kernel_start\u002Fkernel_end timestamp 収集を追加)\u003C\u002Fstrong> が per-kernel gpu_ms の絶対値に影響しうる。`ts_ssim_fwd_grad` は 800×800 固定解像度・window 7 の純粋 per-pixel kernel であり \u003Cstrong>理論上 splat 数に依存しないはず\u003C\u002Fstrong>だが、実測は 1.202→1.738 ms\u002Fiter (\u003Cstrong>+44.6%\u003C\u002Fstrong>) と大きく増加している。しかも \u003Cstrong>9 leaf 全体が 1.17〜1.93倍というかなり均一な増加\u003C\u002Fstrong>を示しており (leaf 合計の増加倍率 1.488× に近い値へ多くの kernel が収束している)、これは純粋な splat-count scaling (kernel ごとに増加率が大きく異なるはず — adam\u002Fradix は O(splats)、rasterize は O(tile-splat pairs)、ssim\u002Fproject\u002Fextract_off は O(pixels) でほぼ一定のはず) では説明しにくい。\u003Cstrong>S4b の ssim_reduce=Gpu が l1_combine_ssim (1.928×) 側に主な増分を持ち込み、C2 計装の全 CB 追加オーバーヘッドが残り 8 kernel を系統的に底上げしている可能性が高い\u003C\u002Fstrong> — ただし本 run 単独では S4b\u002FC2\u002Fthermal\u002F純粋な splat scaling を分離できない (n=1、対照実験なし)。\u003Cstrong>ms\u002Fiter の絶対値・scaling 係数は次ラウンドで Lego 側も HEAD (3db33a8) で撮り直すまで確定させない\u003C\u002Fstrong>。",{"type":48,"text":233},"3. in-window splat 数 — 「2.5倍」は 30k 収束時の数字、12.5k 時点では 1.85倍",{"type":51,"items":235},[236,239,242,245],{"key":237,"value":238},"drums final splats @12,500 iter","**748,708** (result.toml, `[curve.splats]` — iter1: 5,207 → iter12,500: 748,708、末尾でも +30\u002Fiter で**まだ急成長中**、収束していない)",{"key":240,"value":241},"Lego v2 final splats @12,500 iter","**404,652** (`runs\u002Fc1v2-12500-off-prof\u002Fresult.toml`、末尾は +1.44\u002Fiter でほぼ plateau)",{"key":243,"value":244},"in-window ratio","748,708 \u002F 404,652 = **1.850倍** (タスク記述の「2.5倍」は drums 30k 収束時の 998k splats\u002FLego 30k baseline との比較であり、本 run の 12.5k window の実際の splat 数比とは異なる — 訂正)",{"key":246,"value":247},"capacity cap の影響","`capacity = 1,000,000` — drums 748,708 \u002F Lego 404,652 とも上限未到達、cap による頭打ちはこの window では発生していない",{"type":48,"text":249},"4. 規約 \u002F 次段への含意",{"type":251,"items":252},"list",[253,254,255],"**Lego で優先付けした施策の相対順位は drums (splat 数 1.85倍) でも share 構造上は維持される** — backward_raster が単独最大 (40%強) で最優先、adam\u002Frasterize が次点 (15%前後)、radix\u002Fssim が僅差の 3位 (11-13%) という構造に Δ≤1.5pt しか動きがなく、Lego で棄却した施策 (M3 per-splat backward 系、A7 refine 3-pass 等) が drums で急に有効化する可能性は share 構造だけからは示唆されない — ただし splat 数比例で絶対 gpu_ms\u002Fiter 自体は増えている (adam 1.511×、radix 1.410×) ため、絶対 wallclock 削減効果 (ms 単位) は drums の方が大きい可能性がある。","**A7 refine \u002F sparse Adam の不可視率仮説は本 run では検証不能** — refine tick の gpu_ms は本 regime でも 0.000 に落ちる (非ブロッキング harvest の既知の限界、§1) ため、drums で refine コストが Lego と比べて相対的に重くなっているかどうかは per-kernel share 表からは読めない。host 時間 (ts_refine 総 host time) を drums\u002FLego で比較する追加解析、または C2 計装 (§8 実装済み) を使った refine tick 専用の gap 分解が必要。","**次ラウンドで per-kernel share を再測る際は Lego 側も同一 binary (HEAD) で撮り直すこと** — 本 finding は Lego v2 (a446f2c) と drums (3db33a8) の binary vintage が 34 commit 分ずれており、ssim\u002Fl1_combine_ssim 等で系統的な底上げ (S4b + C2 計装) が疑われる。scene 間の絶対 ms\u002Fiter 比較を厳密に行う場合は、両 scene を同一 commit の release binary で 1 セッション内に測り直す必要がある (share の相対構造比較は本 finding のままで妥当)。**2026-08-31 追記: この切り分けは §5 で実施済み — 判定 (a)、疑いは取り下げ。**",{"type":48,"text":257},"5. Lego 同 binary 再計測による切り分け (2026-08-31 追記) — 判定 (a): drums の差は scene 由来、profile 経路の系統的退行ではない",{"type":51,"items":259},[260,263,266,269,272,274,276,279],{"key":261,"value":262},"目的","§2\u002F§4 で疑った「S4b (`4405bb4`, ssim_reduce=Gpu default flip) \u002F C2 計装 (`9deb14a`, 全 CB に kernel_start\u002Fend timestamp 収集を追加) による profile=on 経路の系統的な底上げ」が、Lego v2 (`a446f2c`) → drums (`3db33a8`) 間の binary vintage 差 (34 commit) に起因するのか、それとも drums scene 自体 (splat 数 1.85倍、画像内容差) に起因するのかを、\u003Cstrong>scene を Lego に固定したまま同じ binary vintage 差だけを再現\u003C\u002Fstrong>して切り分ける",{"key":264,"value":265},"事前条件確認","`pmset -g batt`: AC 接続・100% 充電確認。`pgrep -fl \"target\u002Frelease\u002Fsplat\"`: 空 (実行中の splat process なし)。`uptime`: load1 2.43→(60秒待機後) 1.90 と \u003C 4 を確認",{"key":267,"value":268},"config","`splat\u002Fconfigs\u002F2026-08-31-c1v3-12500-off-prof.toml` — `2026-08-30-c1v2-12500-off-prof.toml` (§0\u002F§6 で Lego v2 に使った config) を run 名のみ `c1v2-12500-off-prof` → `c1v3-12500-off-prof` に置換して複製 (`[experiment].name` と `[output].run_dir` の 2 行のみ差分、[backend] を含むそれ以外は完全一致)",{"key":270,"value":271},"binary","現行 main HEAD **`a556b78835d8`** (2026-08-31) の release binary をそのまま使用 (再ビルドなし)。比較対象の Lego v2 (`a446f2c`) との間には S4b (`4405bb4`) \u002F C2 計装 (`9deb14a`) を含む多数の commit が入っており、drums finding §2 が疑った binary vintage 差そのものを再現している。drums run 自体の `3db33a8` よりもさらに新しい HEAD だが、`git merge-base --is-ancestor {3db33a802265,4405bb4,9deb14a} a556b78` を実行しいずれも exit 0 (祖先) であることを確認済み — drums run に効いていた commit 集合 (S4b\u002FC2 含む) はすべて `a556b78` に部分集合として含まれる。加えて run log の `[backend] BackendConfig { …, ssim_reduce: Gpu, … }` (S4b の default flip が実際に効いている直接証拠) と、末尾の `=== C2 gap report ===` ブロック (C2 計装が実際に active であり値を出力している直接証拠) の 2 点を実測で確認しており、ancestry 論証より強い経験的証拠として §0 の「flag 実測確認」に記載済み",{"key":63,"value":273},"`splat check` で config 検証後、nohup + disown で background 起動 (呼び出し側 shell wrapper で完了時に `*.DONE` sentinel を書く)。foreground `until`-loop で能動待機 (15秒間隔ポーリング)、**174.71s** で完了 (exit=0)",{"key":66,"value":275},"run log の `[backend] BackendConfig { … }` 行で `radix_scatter: SimdBallot` \u002F `refine_scratch_persist: true` \u002F `refine_direct_write: true` \u002F `ssim_reduce: Gpu` \u002F `submission: PerKernel` \u002F `forward_submission: PerStage` \u002F `pipelining: Off` \u002F `binning: Resident` \u002F `profile: true` を確認 (v2\u002Fdrums と同じ regime で走っていることの直接証拠)。ログ末尾に C2 gap report (`=== C2 gap report (CB 間 driver-latency \u002F scheduling 分解) ===`) が出力されており、profile=on 経路で C2 計装が実際に active であることも確認済み",{"key":277,"value":278},"結果サマリ","train elapsed **174.71s** (v2 174.57s とほぼ同一)、self-eval mean val PSNR **36.190dB** (v2 36.201dB)、final splats **409,702** (v2 404,652、ほぼ同水準)。`[gpu] busy 114.881s \u002F wall 174.623s = 65.8%` (v2 は busy 114.508s \u002F wall 174.57s = 65.6%、ほぼ同一)",{"key":280,"value":281},"leaf 検算","leaf 9 label (backward_raster(+project_back)\u002Fadam\u002Ffwd_rasterize\u002Fssim_fwd_grad\u002Ffwd_radix_sort\u002Ffwd_project\u002Fl1_combine_ssim\u002Ffwd_emit_pairs\u002Ffwd_extract_off) の gpu_ms 合計 **114,880.732ms = 114.880732s** が run 末尾 `[gpu] busy 114.881s` と\u003Cstrong>誤差 0.268ms (0.00023%) で一致\u003C\u002Fstrong> — v1\u002Fv2\u002Fdrums と同じ検算がここでも通る。`ts_forward` (gpu_ms 34,978.817) = `fwd_project(3,430.628) + fwd_emit_pairs(1,453.624) + fwd_radix_sort(13,788.972) + fwd_rasterize(16,163.920) + fwd_extract_off(141.674)` の和と一致 (集計 label、leaf から除外)。`ts_project_back` (46,157.186) は `ts_backward_raster` (同 46,157.186) と bit 同値 (v1\u002Fv2\u002Fdrums と同じ二重計上、1 行に統合)",{"type":85,"columns":283,"align":291,"rows":292},[87,284,285,286,287,288,289,290,160],"v2 gpu_ms (a446f2c)","v3 gpu_ms (a556b78, 同 Lego scene)","v2 ms\u002Fiter","v3 ms\u002Fiter","v3\u002Fv2 比","v2 share","v3 share",[92,93,93,93,93,93,93,93,93],[293,300,307,315,322,330,338,343,350,355],[164,294,295,165,296,297,168,298,299],"45,877.989","46,157.186","3.693","1.006×","40.18%","+0.11",[172,301,302,173,303,304,175,305,306],"17,502.128","17,695.339","1.416","1.011×","15.40%","+0.12",[308,309,310,179,311,312,181,313,314],"rasterize (`ts_fwd_rasterize`)","16,185.077","16,163.920","1.293","0.999×","14.07%","-0.06",[184,316,317,185,318,319,187,320,321],"15,025.375","14,924.969","1.194","0.993×","12.99%","-0.13",[323,324,325,191,326,327,193,328,329],"radix (`ts_fwd_radix_sort`)","13,749.681","13,788.972","1.103","1.003×","12.00%","-0.01",[331,332,333,197,334,335,199,336,337],"project (`ts_fwd_project`)","3,391.138","3,430.628","0.274","1.012×","2.99%","+0.03",[202,339,340,203,203,341,205,205,342],"1,124.633","1,124.420","1.000×","0.00",[344,345,346,209,347,348,211,129,349],"emit_pairs (`ts_fwd_emit_pairs`)","1,511.105","1,453.624","0.116","0.962×","-0.05",[351,352,353,215,215,354,217,217,342],"extract_off (`ts_fwd_extract_off`)","140.612","141.674","1.008×",[141,356,357,220,358,359,222,222,149],"**114,507.738**","**114,880.732**","**9.190**","**1.003×**",{"type":224,"label":361,"variant":226,"text":362},"判定 (a) 確定 — 全 9 leaf が v2 と ±5% 以内、profile 経路の系統的底上げは棄却","同じ Lego scene・同じ [backend] regime のまま binary だけを `a446f2c` → `a556b78` (S4b + C2 計装 + それ以降の全 commit を含む) に進めても、9 leaf すべてが v2 比 \u003Cstrong>0.962×〜1.012×\u003C\u002Fstrong> (leaf 合計 1.003×) に収まった。最大逸脱は emit_pairs の \u003Cstrong>-3.80%\u003C\u002Fstrong>、次点は §2 で名指しした ssim (`ts_ssim_fwd_grad`) の \u003Cstrong>-0.67%\u003C\u002Fstrong> (むしろ微減) — drums で見られた +44.6% (1.202→1.738ms\u002Fiter) とは方向すら逆であり、\u003Cstrong>ssim_fwd_grad の増加は binary vintage (S4b の ssim_reduce=Gpu) では説明できない\u003C\u002Fstrong>。share Δ も全 kernel ±0.13pt 以内で、backward_raster 単独最大 (40%強)・adam\u002Frasterize 次点 (15%前後)・ssim\u002Fradix 僅差の 3位 (12-13%) という構造も完全に維持されている。\u003Cstrong>結論: S4b・C2 計装を含む binary vintage 差は per-kernel gpu_ms を系統的には底上げしていない\u003C\u002Fstrong> — §2\u002F§4 で報告した「profile=on 経路の系統的な底上げ」疑いは本 run により\u003Cstrong>反証され、取り下げる\u003C\u002Fstrong>。加えて、drums run (`cb=187501`) と v3 run (`cb=187501`) は\u003Cstrong>iteration あたりの CB 数が完全に一致\u003C\u002Fstrong> (187,501÷12,500 ≈ 15.00\u002Fiter、両者とも submission=per_kernel\u002Fforward_submission=per_stage という同一 regime なので当然ではあるが)、C2 は全 CB に一様に kernel_start\u002Fend timestamp を挿すだけの計装であるため、\u003Cstrong>C2 の per-CB オーバーヘッドは drums と Lego で iteration あたり同一のはず\u003C\u002Fstrong>であり、drums の splat 数 (≒per-iteration の実 kernel dispatch 数) が多い分だけ C2 が「相対的に」より多く効く、という交互作用 (interaction effect) の可能性も本 CB 数一致によって別途排除できる。drums で観測された全 9 leaf 1.17〜1.93倍の増加 (leaf 合計 1.488×) は、\u003Cstrong>drums scene 自体\u003C\u002Fstrong> (in-window splat 数 1.85倍 [§3]、nerf_synthetic 内の画像内容差・tile occupancy パターンの違いなど) に起因すると判定する。ただし本 run が確定させたのは\u003Cstrong>「vintage 由来ではない」ことのみ\u003C\u002Fstrong>であり、scene 由来の内訳 (splat 数 vs 画像内容) と drums run 固有の測定環境 (thermal 等、§4 が挙げていたが本 run では制御していない要因) の寄与は未分離のまま残る。",{"type":224,"label":364,"variant":365,"text":366},"ssim_fwd_grad の +44.6% は再考が必要 — 「splat 数に無関係」という前提そのものを疑うべき","info","§2 は `ts_ssim_fwd_grad` が「800×800 固定解像度・window 7 の純粋 per-pixel kernel であり理論上 splat 数に依存しないはず」という前提で drums の +44.6% を binary vintage 汚染の傍証として扱った。本 run (v3) は同じ Lego scene で binary vintage 差を再現しても ssim_fwd_grad が -0.67% (実質不変、むしろ微減) だったため、\u003Cstrong>+44.6% が binary vintage 由来ではないことが確定した\u003C\u002Fstrong>。これにより「ssim_fwd_grad は splat 数に依存しないはず」という §2 の前提こそが\u003Cstrong>実測によって反証された\u003C\u002Fstrong> (vintage 差では説明できない以上、splat 数または splat 数と相関する何か — 画像内容・rasterize 出力の統計的性質 — が ssim_fwd_grad の gpu_ms に影響している、と読み替える必要がある)。残る説明候補は (1) drums の画像内容 (nerf_synthetic 内での高周波成分・輝度分布の違いによる SSIM window 内の分岐\u002F早期終了パターン差)、(2) `ssim_reduce = Gpu` (S4b default、`SsimReduceKind::Gpu`) の reduce kernel 自体が完全に splat 数非依存ではなく、上流の rasterize 出力 (splat 数に依存するタイル占有率・アルファブレンド深度) の統計的性質に応じて GPU 側のメモリアクセスパターン\u002Foccupancy が変わる、のいずれか。次段で drums 側の ssim_fwd_grad 単体を `ssim_reduce = \"host\"`\u002F`\"gpu\"` (`SsimReduceKind::Host`\u002F`Gpu`、`splat\u002Fcrates\u002Fsplat-train-v1\u002Fsrc\u002Fconfig.rs` 参照。**`Cpu` という variant は存在しない**) の A\u002FB で切り分けるか、drums の rasterize 出力統計 (per-pixel contributor 数分布) を Lego と比較すれば追加の手がかりが得られる (本 finding のスコープ外、実施していない)。",{"type":251,"items":368},[369,370,371],"**判定 (a) — drums finding §2\u002F§4 の「profile=on 経路の系統的な底上げ」疑いは取り下げ**。同一 Lego scene・同一 backend regime で binary vintage 差 (S4b + C2 計装含む) のみを再現しても全 9 leaf が ±5% 以内に収まったため、S4b\u002FC2 が per-kernel gpu_ms を系統的に底上げしている証拠はない。","**drums の絶対 ms\u002Fiter 差 (1.17〜1.93倍) は binary vintage (S4b\u002FC2) 由来ではないと確定** — §4 の「絶対値比較は汚染されている」という留保は撤回してよい。本 run が確定させたのは「vintage 由来ではない」ことのみであり、残る主因は drums scene 自体 (splat 数、画像内容、tile occupancy 等) と推定されるが、「scene のどの性質が主因か」の内訳、および drums run 固有の測定環境 (thermal 等、n=1・対照なし) の寄与は本 finding のスコープ外で未分離のまま (§3 で in-window splat 比 1.85倍を報告済みだが、それだけで 9 kernel 一様 1.17〜1.93倍を説明できるかは検証していない)。","**§1 の drums per-kernel share 表・§2 の share 構造比較 (backward_raster 40.09% vs 40.07% 等) はそのまま有効** — 本追記は絶対 ms\u002Fiter 比較の解釈のみを訂正するものであり、share の相対構造比較の結論 (splat 数 1.85倍でも share 構造はほぼ不変) には影響しない。",[373,382,393],{"id":31,"title":31,"subtitle":374,"date":9,"workspace":375,"tags":376,"verdict":377,"psnr":378,"psnr_unit":-1,"wallclock":379,"splats":380,"summary_url":381,"detail_path":381},"drums (998k splats) per-kernel gpu_ms share 計測。Lego v2 (p3-kernel-share-post-s3 §6) の測定 regime を drums dataset で再現し、splat 数 regime の違いが share 構造に影響するかを判定する","splat",[5,17,18,19,21],"partial",24.517929077148438,"4m 9s",748708,"\u002Fruns\u002Fc1-drums-12500-off-prof\u002F",{"id":32,"title":32,"subtitle":383,"date":384,"workspace":375,"tags":385,"verdict":377,"psnr":389,"psnr_unit":-1,"wallclock":390,"splats":391,"summary_url":392,"detail_path":392},"M7: per-kernel gpu_ms 再々計測 v2 (submission=per_kernel \u002F forward_submission=per_stage \u002F pipelining=off、M4 radix simd_ballot + A7 refine 3-pass 後の kernel)","2026-08-30",[35,386,21,387,388],"m7","lego","v2",36.20126724243164,"2m 54s",404652,"\u002Fruns\u002Fc1v2-12500-off-prof\u002F",{"id":33,"title":33,"subtitle":383,"date":384,"workspace":375,"tags":394,"verdict":377,"psnr":395,"psnr_unit":-1,"wallclock":390,"splats":396,"summary_url":397,"detail_path":397},[35,386,21,387,388],36.18955612182617,409702,"\u002Fruns\u002Fc1v3-12500-off-prof\u002F",[399,420],{"id":35,"title":400,"date":384,"status":10,"polarity":12,"category":11,"axes":401,"tags":402,"task_code":411,"related_runs":412,"delta_psnr":414,"delta_wallclock":415,"rank":416,"verdict":417,"impact_summary":418,"detail_path":419},"M1\u002Fv2 — post-S2\u002FS3 per-kernel share 再計測: backward_raster 33.9%→40.1% (M4\u002FA7 後)、radix 26.4%→12.0% (M4 の絶対削減を反映) → M3 GO 判定は不変。C2 残差 4.54s は driver latency \u002F CB gap に分解不能 (計装欠如、file:line 提案のみ)",[14,15],[403,386,404,20,19,405,406,407,408,387,409,388,410],"m1","seminar05-milestones","backward-raster","m3-go-gate","residual-bubble","gputime","post-s2-s3","post-m4-a7","2026-09-seminar05-milestones M1 (C1 per-kernel 再計測 + C2 残差 bubble 帰属)",[413,32],"c1-12500-off-prof","n=1: 36.087 dB (self-eval val mean, 100 views)。p2-s3 の off\u002Fdepth2 n=3 mean (36.185 \u002F 36.202 dB) の guard 内。本 run は submission=per_kernel\u002Fforward_submission=per_stage という別 regime なので PSNR の直接比較は非対象 (kernel は bit-exact のため理論上は同水準になるはず、というだけの参考値)","train elapsed 205.78s (n=1)。**production baseline (depth2 default, 151.70s) や S3 off baseline (185.21s) と直接比較しない** — per_kernel\u002Fper_stage submission は CB 数が既定の 15〜27\u002Fiter → 15 CB\u002Fiter 超 (最終 15,001 cb from iter1 window 相当) に増え、busy% が 68.9% まで下がる**測定専用 regime**であり、本 run の wallclock 自体に意味はない。意味があるのは kernel 単体の gpu_ms とその share のみ","high","m3-go-backward-raster-33.9pct \u002F c2-instrumentation-gap-proposal-only","M3 (per-splat backward, brush PR #401 型) の GO\u002FNO-GO 閾値「backward_raster share ≥ 25%」を判定した。post-S2\u002FS3 kernel (hierarchical radix scan \u002F resident binning) を submission=per_kernel\u002Fforward_submission=per_stage\u002Fpipelining=off (per-kernel breakdown が測れる唯一の regime) で 1 run 実測した結果 \u003Cstrong>backward_raster (+project_back 統合) share 33.86%\u003C\u002Fstrong> で \u003Cstrong>閾値を大きく超過 → M3 は GO\u003C\u002Fstrong>。\u003Cstrong>share × 0.25 (brush の -25% 主張をそのまま適用したナイーブな期待値) = 8.47%\u003C\u002Fstrong>。ただしこれは本 run の GPU busy (68.9%、production の 91.3% とは別 regime) に対する share であり、production (depth2 default) の wallclock に対する期待 Δ は \u003Cstrong>33.86% × 91.3% × 0.25 ≈ 7.7%\u003C\u002Fstrong> とみるほうが妥当 (kernel 自体の gpu_ms は submission wrapping にほぼ不変という counter-session の事後検証はあるが、n=1 点推定であることと合わせて上限値として扱う)。\u003Cstrong>pre-S2\u002FS3 (counter-session) との比較では share 構成はほぼ不変\u003C\u002Fstrong> (backward_raster 33.6%→33.86%、radix 26.3%→26.40%、rasterize 11.9%→11.64%、adam 13.8%→12.68%、ssim 10.0%→10.95%) — S2 のhierarchical scan は「radix の CB\u002Fwait 数」を畳んだだけで kernel 自体の GPU 時間配分は変えていない、という roadmap の当初の想定を実測で裏づけた。C2 は M0 の並行会計訂正 (encode(B) 4.66→3.41s、残差 3.28→4.54s、nested label 二重計上の是正) を踏まえ、\u003Cstrong>残差 4.54s (depth2 sync-tax の 32%) を driver 投入 latency と CB 間 gap に分解しようとしたが、既存計装 (`gputime.rs`) は `kernelStartTime`\u002F`kernelEndTime` を objc bind しているのみで収集しておらず、per-CB の生 interval 列も外部に露出していない\u003C\u002Fstrong> ため\u003Cstrong>分解不能\u003C\u002Fstrong>と判明した。file:line 付きの追加案を §C2 に残す (実装はしていない、GPU run はこれ以上起動していない)。","\u002Ffindings\u002Fp3-kernel-share-post-s3\u002F",{"id":36,"title":421,"date":422,"status":10,"polarity":423,"category":424,"axes":425,"tags":426,"task_code":435,"related_runs":436,"delta_psnr":437,"delta_wallclock":438,"rank":416,"verdict":439,"impact_summary":440,"detail_path":441},"Phase G omnibus — 速度改善 4 candidate × 8 scene の Pareto landscape 確定、**G.3 alone 30k = universal quality improvement** (+0.107 dB \u002F +10% wall)","2026-05-26","positive","audit",[14],[427,428,429,430,431,432,433,17,434],"p1-axis1","phase-g","omnibus","pareto-front","sh-progressive","early-stop","brush-comparison","calibration","P1 Phase G omnibus",[],"**G.3 alone 30k = +0.107 dB universal mean** (7\u002F8 scene improve)、Lego +0.278 \u002F mic +0.244 \u002F chair +0.142 \u002F materials +0.125","**G.3 alone 30k = +10.2%** (mean、scene 依存 +5-50%)、G.1 stop15k = -62%、G.1+G.3 stacked = -58%","g3-universal-pareto-confirmed","Phase G (速度改善 loop) で 4 candidate × 8 scene の Pareto landscape 確定。\u003Cstrong>結論\u003C\u002Fstrong>: **G.3 alone 30k = universal quality improvement** (8 scene mean **33.592 dB**、Phase D 33.485 比 **+0.107 dB**、7\u002F8 scene で win、wallclock +10.2%、splats +29%)、特に **mic は stacked で -6.05 dB だったが G.3 alone なら +0.244 dB 救済**。\u003Cstrong>G.1 stop15k\u003C\u002Fstrong> は dense scene で acceptable (Lego\u002Fchair\u002Fhotdog で Phase D 比 -0.5 dB 圏内) も sparse scene で大幅劣化 (mic -5.84\u002Fficus -1.79)、8 scene mean -1.39 dB で Pareto worse、brush parity (32.86) を -0.76 dB 下回り。\u003Cstrong>G.1+G.3 stacked\u003C\u002Fstrong> は Lego-specific Pareto sweet spot (16m13s \u002F 36.254 dB \u002F +0.15 dB) だが multi-scene mean 31.998 dB で stacked \u003C G.1 alone、SH warmup の効果が early stop で truncate されて sparse scene で逆効果 (ficus -3.15、mic -6.05)。\u003Cstrong>G.2 audit\u003C\u002Fstrong> は 4.7× gap が architectural dispatch (Burn\u002FCubeCL 内部 batching vs Metal 直 per-kernel sync) と判明、Phase F 5 連続 falsification への統一的説明、kernel\u002Falgorithm 軸では覆せない構造的 finding。\u003Cstrong>axis 1 future work ROI 階層\u003C\u002Fstrong>: \u003Cstrong>algorithmic compute reduction > architectural dispatch > kernel-level micro-opt\u003C\u002Fstrong>。Phase G が axis 1 「Apple Silicon native 最適化の ROI 階層」を構造的に確定、卒論 §5.4 narrative の集大成。","\u002Ffindings\u002Fp1-axis1-phase-g-pareto-landscape\u002F",1790227327655]