[{"data":1,"prerenderedAt":310},["ShallowReactive",2],{"finding:p1-profiling-clean":3,"finding-runs:p1-profiling-clean":212,"finding-related:p1-profiling-clean":222},{"meta":4,"impact":32,"sections":37},{"id":5,"title":6,"subtitle":7,"eyebrow":8,"date":9,"status":10,"category":11,"polarity":12,"axes":13,"tags":15,"task_code":24,"related_runs":25,"related_findings":27},"p1-profiling-clean","P1 clean single-process profile baseline — radix_sort 27% → 13.6%、emit_pairs 6.5% → 14.2% の share 大幅 shift、axis 1 真の ROI 上限確定","Phase D 全 process (re-chain、subagent、decay sweep) 完了後に single-process で取り直した per-kernel timing baseline。前 profile baseline (p1-profiling-baseline、multi-process contention 中) と比較すると share が大幅 shift: ts_fwd_radix_sort 27.0% → **13.6%** (-13.4 pt)、ts_fwd_emit_pairs 6.5% → **14.2%** (+7.7 pt)、ts_forward 全体 60.1% → **36.7%** (-23.4 pt)。これは前 profile の share が contention で over-state されていた決定的証拠で、target_upload subagent (share 5.6% → 実 ROI 0.23% \u002F 1\u002F25) の経験を kernel level でも再現。新 axis 1 ROI 上限: emit_pairs 改善 -14% \u002F radix_sort -13% \u002F backward_raster -13% \u002F ssim_fusion -7-8%、いずれも卒論 future work として価値あり。","P1 axis 1 · clean profile baseline · share over-state correction","2026-05-25","stable","audit","neutral",[14],1,[16,17,18,19,20,21,22,23],"p1-profile","axis-1","clean-baseline","kernel-share","single-process","premultiplied","lego-5k","share-correction","P1 axis 1 profile re-baseline",[26],"lego-profile-clean-5k",[28,29,30,31],"p1-profiling-baseline","p1-axis1-target-cache","p1-e-refine-gpu-smoke","p1-d-stage2-30k-results",{"summary":33,"rank":34,"verdict":35,"delta_psnr":36,"delta_wallclock":36},"clean single-process で per-kernel share を取り直し、前 profile baseline (multi-process contention 中) と比較すると \u003Cstrong>share が大幅 shift\u003C\u002Fstrong>: ts_fwd_radix_sort 27.0% → **13.6%** (-13.4 pt)、ts_fwd_emit_pairs 6.5% → **14.2%** (+7.7 pt)、ts_forward 全体 60.1% → **36.7%** (-23.4 pt)。これは前 profile の share が contention で over-state されていた決定的証拠 (target_upload subagent の share 5.6% → 実 ROI 0.23% を kernel level で再現)。新 axis 1 ROI 上限: emit_pairs 改善 -14% \u002F radix_sort -13% \u002F backward_raster -13% \u002F ssim_fusion -7-8%。Phase E (refine GPU 化) の ROI 仮説 -5x は元々 share 2.6% で 1\u002F40 過大評価だったが、本 clean baseline でも refine 0.2% に縮小、棄却強化。target_upload は本 clean baseline で完全消滅 (cache 化済)。","high","audit-complete-share-correction","N\u002FA (audit)",[38,41,46,49,130,132,177,179,189,191,197,199,203,205],{"type":39,"text":40},"lead","Phase D 全 process (multi-scene re-chain、subagent worktree、decay sweep) 完了後に \u003Cstrong>single-process で profile を取り直し\u003C\u002Fstrong>、前 baseline (multi-process contention 中) と比較。\u003Cstrong>share の大幅 shift を確認\u003C\u002Fstrong>: radix_sort 27% → 13.6%、emit_pairs 6.5% → 14.2%、forward 60% → 37%。これは contention 中の share が systematic に over-state されていた決定的証拠で、target_upload subagent (share 5.6% → 実 ROI 0.23%) の経験を kernel level でも再現。",{"type":42,"label":43,"variant":44,"text":45},"callout","Headline (share over-state correction)","warning","\u003Cstrong>前 profile baseline (p1-profiling-baseline、multi-process contention 中) の share data は systematic に over-state されていた\u003C\u002Fstrong>。clean baseline で radix_sort share は \u003Cstrong>27% → 13.6%\u003C\u002Fstrong> に半減、forward 全体は \u003Cstrong>60% → 37%\u003C\u002Fstrong> に大幅縮小、一方 emit_pairs は \u003Cstrong>6.5% → 14.2%\u003C\u002Fstrong> に倍増。これは axis 1 ROI 推定の前提を変える: 前 \"radix_sort -14-17%\" は ceiling -13%、emit_pairs は新しい高優先 candidate (-14% 上限)。卒論 axis 1 narrative では \u003Cstrong>profile baseline は contention 状態を明記\u003C\u002Fstrong> + clean baseline で再評価が必須の方法論として記述。",{"type":47,"text":48},"heading","1. Per-kernel share 比較 table",{"type":50,"columns":51,"align":58,"rows":61,"caption":129},"table",[52,53,54,55,56,57],"rank","kernel","clean share","旧 profile share","shift (pt)","shift 解釈",[59,60,59,59,59,60],"right","left",[62,69,76,83,90,97,104,110,116,123],[63,64,65,66,67,68],"1","**ts_forward (全体)**","**36.7%**","60.1%","**-23.4**","forward が contention で大幅誇張",[70,71,72,73,74,75],"2","**ts_fwd_emit_pairs**","**14.2%**","6.5%","**+7.7**","emit_pairs が contention で under-state、真の bottleneck candidate",[77,78,79,80,81,82],"3","**ts_fwd_radix_sort**","**13.6%**","27.0%","**-13.4**","radix_sort 半減、前 baseline の最大 candidate は over-state",[84,85,86,87,88,89],"4","ts_backward_raster","13.4%","13.5%","±0","唯一 stable な share (contention 影響小)",[91,92,93,94,95,96],"5","ts_ssim_fwd_grad","7.8%","15.6%","-7.8","SSIM も contention で 2x 誇張",[98,99,100,101,102,103],"6","ts_fwd_rasterize","6.1%","9.4%","-3.3","",[105,106,107,108,109,103],"7","ts_adam","3.0%","5.6%","-2.6",[111,112,113,108,114,115],"8","ts_target_upload","**0% (消滅)**","-5.6","**target_upload cache subagent で完全除去済**",[117,118,119,120,121,122],"9","ts_refine","0.2%","2.6%","-2.4","Phase E refine GPU 化の ROI 仮説 -5x の 1\u002F250 縮小",[124,125,126,127,88,128],"10","ts_opacity_decay","0.0%","0.001%","no-op 確定","全 kernel で share が変化 (backward_raster のみ stable)。contention 中は forward 系 kernel が誇張され、emit_pairs だけが under-state されていた (interesting!)。emit_pairs が clean baseline で第 1 候補に浮上。",{"type":47,"text":131},"2. 修正された axis 1 ROI ランキング (clean baseline 基準)",{"type":50,"columns":133,"align":138,"rows":139,"caption":176},[134,135,54,136,137],"#","改修","完璧改善時 wallclock ROI 上限","備考",[59,60,59,59,60],[140,144,149,152,156,159,163,167,172],[63,141,72,142,143],"**emit_pairs 高速化**","**-14%**","新候補、前 profile では under-state されていた",[70,145,146,147,148],"radix_sort 改善","13.6%","-13%","前 profile -14-17% から下方修正",[77,150,86,147,151],"backward_raster 高速化","唯一 stable な share、確実な ROI",[84,153,93,154,155],"SSIM fusion","-7-8%","前 profile -5-7% に近い",[91,157,100,158,103],"fwd_rasterize 高速化","-6%",[98,160,107,161,162],"adam batching","-2-3%","Phase E subagent 提案、ROI 低",[105,164,119,165,166],"refine GPU 化 (Phase E)","-0.2%","**棄却強化** (前 profile 2.6% で既に -1.3% 上限、clean で 1\u002F13)",[111,168,169,170,171],"f16 packed (A.6)","—","-1.7-2.2%","**棄却維持** (memory bandwidth bound 不発)",[117,173,126,174,175],"opacity_decay GPU 化","0%","**no-op 確定**","clean baseline で emit_pairs が第 1 候補に浮上、refine は完全棄却。axis 1 future work 優先順位は 1-4 (emit_pairs \u002F radix_sort \u002F backward \u002F ssim) で合計 -47% wallclock 改善余地、ただし実装 cost も大。",{"type":47,"text":178},"3. 構造的気づき (axis 1 narrative core)",{"type":180,"ordered":181,"items":182},"list",true,[183,184,185,186,187,188],"\u003Cstrong>profile share は contention 状態に依存\u003C\u002Fstrong>: 単独 single-process で取り直すまでは share data を ROI 上限として使うべきでない","\u003Cstrong>contention 中の under-state も発生\u003C\u002Fstrong>: emit_pairs が +7.7 pt 増加、これは contention 中に他 process が GPU を占めている間に emit_pairs が \"待ち時間\" として cumulative 計測されなかった可能性","\u003Cstrong>backward_raster は contention 影響を受けない唯一の kernel\u003C\u002Fstrong>: per-pixel atomic 中心で synchronous な処理、contention に関係なく GPU 時間を消費","\u003Cstrong>target_upload は async commit overlap で実 ROI 1\u002F25 だった\u003C\u002Fstrong>: clean baseline で完全消滅、kernel 除去自体は構造的成果として確定","\u003Cstrong>refine は contention でも clean でも \u003C 3%\u003C\u002Fstrong>: Phase E hypothesis 棄却が clean でも維持、refine 系は narrative 価値のみで実用 ROI なし","\u003Cstrong>新 axis 1 future work 候補\u003C\u002Fstrong>: emit_pairs 高速化が第 1 候補、ただし implementation 詳細は別途検証必要 (sort key 生成の Apple MPS 化 or kernel fusion 等)",{"type":47,"text":190},"4. 卒論への含意 (§5.4.4 + §6 future work)",{"type":180,"items":192},[193,194,195,196],"\u003Cstrong>§5.4.4 \"axis 1 Metal kernel ROI 上限実測\"\u003C\u002Fstrong>: 前 profile baseline + clean baseline 両方を掲載、share over-state correction を方法論として記述","\u003Cstrong>Phase E refine GPU 化の narrative 強化\u003C\u002Fstrong>: 仮説 -5x → 前 profile で -1.3% → clean profile で -0.2% と 3 段階で棄却強度を上げる流れ、卒論 \"axis 1 ROI 上限の honest reporting\" として強い","\u003Cstrong>§6 future work 優先順位\u003C\u002Fstrong>: emit_pairs (-14%) \u002F radix_sort (-13%) \u002F backward_raster (-13%) \u002F ssim_fusion (-7-8%) の 4 つを high-ROI 候補として明記、各 kernel の implementation 詳細を future work として残す","\u003Cstrong>profile baseline 取得方法の方法論\u003C\u002Fstrong>: \"single-process で取り直すまでは ROI 推定に使うべきでない\" を §3 evaluation methodology に追加検討",{"type":47,"text":198},"5. 実測手順 (再現可能性)",{"type":200,"lang":201,"text":202},"code","bash","# 前提: 他の bench\u002Fsubagent が全て完了し、single-process な GPU\u002FCPU 状態\ncd splat\n.\u002Ftarget\u002Frelease\u002Fsplat train --config configs\u002F2026-05-25-0600-lego-profile-clean-5k.toml\n# → runs\u002Flego-profile-clean-5k\u002F{result.toml, final.ply (not saved)}\n# → mean val PSNR 31.511 dB \u002F wallclock ~2m \u002F splats 84,831\n# → [profile] kernel timing が log に出力、grep ts_ で抽出\n",{"type":47,"text":204},"6. 関連",{"type":180,"items":206},[207,208,209,210,211],"前 profile baseline (multi-process contention 中): \u003Ccode>p1-profiling-baseline\u003C\u002Fcode>","target_upload cache (share 5.6% → 実 ROI 0.23% の経験): \u003Ccode>p1-axis1-target-cache\u003C\u002Fcode>","Phase E refine GPU 化 (仮説 -5x 棄却の data point): \u003Ccode>p1-e-refine-gpu-smoke\u003C\u002Fcode>","A.6 f16 packed (orientation halt): \u003Ccode>a-6-f16-packed-rebench\u003C\u002Fcode>","Phase D Stage 2 (Lego val 36.106 dB の root): \u003Ccode>p1-d-stage2-30k-results\u003C\u002Fcode>",[213],{"id":26,"title":26,"subtitle":214,"date":9,"workspace":215,"tags":216,"verdict":217,"psnr":218,"psnr_unit":-1,"wallclock":219,"splats":220,"summary_url":221,"detail_path":221},"Clean single-process profile baseline 取り直し (contention 解消後)","splat",[16,17,18,22,21,20],"partial",31.51144027709961,"1m 55s",84831,"\u002Fruns\u002Flego-profile-clean-5k\u002F",[223,243,270,292],{"id":29,"title":224,"date":9,"status":10,"polarity":12,"category":225,"axes":226,"tags":227,"task_code":234,"related_runs":235,"delta_psnr":237,"delta_wallclock":238,"rank":239,"verdict":240,"impact_summary":241,"detail_path":242},"P1 axis 1 target_upload cache — kernel 除去は成功、wallclock ROI は host\u002FGPU overlap で予想の 1\u002F25","optimization",[14],[228,17,229,230,231,232,233,22],"p1","target-cache","kernel-removal","host-gpu-overlap","low-roi","apples-to-apples-ab","P1 axis 1 target upload cache",[236],"lego-target-cache-5k","+0.14 dB (seed同一、RNG drift、許容範囲)","-0.23% (apples-to-apples A\u002FB、env toggle 同一 binary)","low","accepted-cleanup-keep-merged","Per-iter target upload kernel を完全除去 (5000 calls → 0)、構造的には kernel 一つ消えた成果。 だが wallclock ROI は **予想 -5.5% に対し実測 -0.23%** (-1\u002F25)、profile baseline の \"5.6% share\" は GPU contention 3x 環境での host stall 値で、平常 contention では host upload は既に GPU 計算と overlap していた。 PSNR は seed 同一でも +0.14 dB drift (Metal driver の buffer 配置順序差 → atomic ordering 差 → refine.split RNG 経由)、5k smoke の noise floor 内。 実装は trivial (train_loop entry で `Vec\u003CBuffer>` 構築、train_step に `Option\u003C&Buffer>` 追加)、commit 残しておく価値はあるが、roadmap 上の位置付けは \"deprioritize \u002F cleanup level\" に修正。 **真の優先順位は radix_sort 改善 (27% share) と A.7 ICB batching tail に集中すべき**。","\u002Ffindings\u002Fp1-axis1-target-cache\u002F",{"id":31,"title":244,"date":9,"status":10,"polarity":245,"category":246,"axes":247,"tags":250,"task_code":260,"related_runs":261,"delta_psnr":265,"delta_wallclock":266,"rank":34,"verdict":267,"impact_summary":268,"detail_path":269},"P1.D Stage 2 — Lego brushcompat + opacity decay 30k = 36.106 dB、splats -56% \u002F wallclock -32%","positive","experiment",[14,248,249],2,3,[228,251,252,253,254,255,21,256,257,258,259],"phase-d","milestone-m5","opacity-decay","brush-parity","win-win-win","lego-30k","stage-2","splat-efficient","axis-1-prep","P1.D Stage 2 (M5 Lego val pass)",[262,263,264],"lego-brushcompat-opacdecay-30k","lego-brushcompat-base-30k","lego-brushcompat-opacdecay-5k","+0.92 dB vs baseline 30k (35.184 → 36.106)","-32% vs baseline 30k (1h 02m 18s → 41m 54s)","accepted-decisive-win","Lego brushcompat + opacity decay 30k で training-time eval 36.106 dB (val 100 view, brush convention, raw)、independent eval 36.163 dB (brush q8)。baseline 30k (35.184 dB) を **+0.92 dB 上回り**、splats を 846,689 → 375,146 に **-55.6% 削減**、wallclock を 1h 02m → 41m 54s に **-32% 短縮**。これは trade-off と想定していた PSNR\u002Fsplats\u002Fwallclock が **完全 win-win-win** に。M5 個別 scene gate (Lego brush conv > 36 dB) を val で達成、brush 自身 val 32.038 dB を +4.07 dB 上回り、本実装が brush を decisive に超えた。test subset (n=36) も +0.75 dB 改善 (33.315 → 34.065)、brush paper test 37.40 との gap を -3.34 dB まで縮小。Stage 1 smoke 推定 (splats -11.6%) を 30k で -56% に拡大、opacity decay の効果は iter 累積で増大することを実証。次 step は multi-scene Phase D 7 scene re-chain (chain 完了後 schedule)、低 wallclock + 低 splats での M5 multi-scene parity 完遂を狙う。","\u002Ffindings\u002Fp1-d-stage2-30k-results\u002F",{"id":30,"title":271,"date":9,"status":10,"polarity":272,"category":246,"axes":273,"tags":274,"task_code":282,"related_runs":283,"delta_psnr":287,"delta_wallclock":288,"rank":34,"verdict":289,"impact_summary":290,"detail_path":291},"P1.E refine GPU 化 hypothesis を SPLAT_TIMING profile で falsified — refine 寄与は \u003C1%、真の bottleneck は forward 60% + loss 28%","negative",[14],[228,275,276,277,278,279,280,281,22],"phase-e","refine-gpu","negative-finding","kernel-profile","axis-1-limit","opacity-decay-gpu","kernel-plumbing","P1.E refine GPU 化 (axis 1 core contribution)",[284,285,286],"p1-e-profile-1k","p1-e-profile-5k","p1-e-gpu-decay-5k","-0.21 dB (CPU 31.92 → GPU 31.71、5k smoke、bit-close 内 RNG cascade)","+1.4% (CPU 144.32s → GPU 146.32s、5k smoke、opacity_decay は 0.005% で誤差)","accepted-negative-redirect-phase-f","Phase D 30k 実測 wallclock 41m54s vs brush 9m08s = -4.6x gap の原因について、task は `splat process CPU 63.4% = 1 core only` → 「refine の host RMW loop が CPU 1-thread bound」と仮説立てた。本 Phase E ではこの仮説を SPLAT_TIMING profile で実測。5k smoke (84k splats、p1-e-profile-5k.toml) の kernel breakdown: **ts_forward 60.1% (123s) \u002F ts_loss_gpu 28.0% (57s) \u002F ts_adam 4.8% (9.9s) \u002F ts_target_upload 3.9% (8.1s) \u002F ts_project_back 2.3% (4.75s) \u002F ts_refine_compact 0.6% (1.14s, 103ms\u002Fcall × 11) \u002F ts_refine_accumulate 0.3% (605ms) \u002F ts_opacity_decay 0.0046% (957µs)**。**refine 全体で \u003C1%** = refine を完璧に GPU 化しても全体 wallclock は -1% も短縮されない。代わりに demo kernel として `refine_opacity_decay.metal` を実装し、kernel + Rust pipeline + `refine.gpu_path` flag plumbing pattern を validate (CPU vs GPU max diff 1.5e-5、5k full PSNR delta -0.21 dB = 許容内)。Phase F の真の target は (a) forward subdivision で判明した tile-binning chain (`ts_fwd_sort 15.5% + ts_fwd_emit 12.8%`)、(b) Adam の 5x sequential `cmd.wait_until_completed` (1 cmd buffer 化で ~5% 削減期待)、(c) target_upload preload (~4% 削減期待) の 3 つ。","\u002Ffindings\u002Fp1-e-refine-gpu-smoke\u002F",{"id":28,"title":293,"date":9,"status":10,"polarity":12,"category":294,"axes":295,"tags":296,"task_code":302,"related_runs":303,"delta_psnr":305,"delta_wallclock":306,"rank":34,"verdict":307,"impact_summary":308,"detail_path":309},"P1 profiling baseline — radix_sort 27% \u002F ssim 16% \u002F backward 14% が三大 bottleneck、refine は僅か 2.6%","investigation",[14,249],[228,297,298,275,299,259,300,301],"profiling","kernel-timing","a-6","lego-smoke","host-instant-proxy","P1 profiling baseline",[304],"lego-profile-smoke-1500","(n\u002Fa — 計測のみ、PSNR 不変)","(n\u002Fa — 計測 instrumentation のみ、 default OFF)","accepted-roadmap-pivot","Phase D Lego brushcompat 30k で wallclock 42m \u002F brush 9m gap (-4.6x) の真の bottleneck を per-kernel host Instant 計測で数値化。**仮説 (refine host RMW dominant) は棄却**、refine は 2.6% に過ぎず Phase E GPU 化の ROI は ~3% (期待していた -25% の 1\u002F8)。実 dominant は radix_sort 27% \u002F ssim 16% \u002F backward 14%。優先順位を **target_upload キャッシュ (即時 -5.6%) → radix_sort 改善 (-10〜15% 期待) → A.7 ICB batching tail (-5% 期待) → Phase E は卒論後** に反転すべき。","\u002Ffindings\u002Fp1-profiling-baseline\u002F",1782449788654]