wip(standalone): GPU step 20 -- detail band batched by 8 columns; gap instrumented
ApplyDetailBand claims eight adjacent columns per batch, keeping each column's scalar order: shape stage ~586 -> ~566 ms in Luna's profile. Hashes w1/w8 identical. My runs outside the sandbox (Step20.exe, marker removed first, interleaved): CPU 1.319 / 1.287 / 1.288 s GPU 1.320 (marker miss, 0 GPU tiles) / 1.244 / 1.215 / 1.219 s (match, ~1,400 GPU) Shape compile 549-570 ms in both modes. The 669-821 ms gap in cached runs is still there: export starts only after [ChunkCrossingWork] reports the ~840 CPU tiles (LOD0-2) finished, so GPU export waits behind CPU meshing on the shared workers. Slowest GPU tile 1.7 / 18.4 / 27.3 ms in runs b/c/d. Audits: hashes, walk 5,642/5,642, near 960 / far 1,114 0 diffs vs CPU and WARP, thin 353, survival 6.14 GB, ten captures as step 18. Far vertex-distance diagnostic: 247 bound failures (max 64.56 cm), unchanged since step 16. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
1 parent
89fd9a0021
commit
2cb3344e1b
6 files changed
+146
-18
No files matched your search
@@ -3390,7 +3390,9 @@ private:
|
||||
CandidateCount.fetch_add(LocalCandidates,std::memory_order_relaxed);
|
||||
ProxyCount.fetch_add(LocalProxies,std::memory_order_relaxed);
|
||||
FlipCount.fetch_add(LocalFlips,std::memory_order_relaxed);
|
||||
},&Timing,&WorkerActiveSeconds);
|
||||
// Each X/Y column is independent. Claim eight adjacent columns at a time to
|
||||
// reduce scheduler atomics while preserving per-column scalar evaluation order.
|
||||
},&Timing,&WorkerActiveSeconds,8);
|
||||
Stats.SurfaceCandidates=CandidateCount.load(std::memory_order_relaxed);
|
||||
Stats.SurfaceProxyNodes=ProxyCount.load(std::memory_order_relaxed);
|
||||
Stats.DetailFlips=FlipCount.load(std::memory_order_relaxed);
|
||||
|
||||
Reference in new issue
Block a user