Files
VoxelForge/Standalone/Research/WorldAssemblerM3/Linux83/REPORT.md
T
Fr0zkaandClaude Opus 5.5 a81b5b7d06 passages: contiguous BVH node ranges + child-bound reuse (L83); scaling and serial floor measured
Exact through LOD2 (all near tile hashes equal L82). W8 LOD0-2: SW 1.09->1.06, FI 2.47->2.34,
TN 2.39->2.43 (noise), VS 1.20->1.18 s. Fast tier PASS.
Scaling W4/W8/W12/W16 (LOD0-2, FI): 3.59 / 2.48 / 2.33 / 2.34 s - flattens past W8-W12.
Estimated infinite-worker floor ~1.0 s FI/TN = shape compile (0.35-0.41 s, not overlapped:
no shape-free tiles in these views) + slowest single LOD0 tile service (0.51-0.59 s).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
2026-10-28 00:24:49 +01:00

76 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Linux L83 — passage CPU and worker scaling
Base was L82 (`f572108`); the retained code is the exact L83 candidate. Logs and machine-readable results are under `Saved/Linux/l83/`. Every benchmark/headless process used CPUs 0–11; headless runs had a 6 GiB address-space cap and a 1,740 s timeout. This Intel i9-12900H host exposes six P cores / twelve P-core threads on that mask, so W16 is oversubscription. The Ryzen 5800X3D target was not measured directly.
## L77 near-LOD census
Three L77 samples per world and version. Passage phase is the share of all near-LOD0–2 samples. Term shares use passage plus support-phase samples; these are PC/source-line attribution estimates, not subroutine wall-clock timers. `unresolved` is code without a resolved source-line term.
| Term share | FI before → after | TN before → after |
|---|---:|---:|
| Carve distance evaluation | 45.1% → 41.5% | 43.5% → 39.2% |
| Support restoration / columns | 16.6% → 14.9% | 16.2% → 13.5% |
| Mouth shaping | 4.3% → 4.2% | 4.0% → 4.5% |
| Smooth joins / Catmull–Rom | 0.7% → 0.8% | 1.2% → 1.3% |
| Remaining relief | 18.9% → 21.3% | 19.7% → 23.7% |
| Other passage work | 9.3% → 11.5% | 10.2% → 11.5% |
| Unresolved passage body | 5.1% → 5.8% | 5.1% → 6.3% |
Passage phase itself was FI 58.76% → 58.75%, TN 58.51% → 59.11% of near-LOD samples. Top exclusive symbols (% of passage-phase samples):
| World/version | Top symbols |
|---|---|
| FI before | `VisitNearestPassageSpatialNode` 24.3%; `ApplyResolvedStratePassageCarves` 21.4%; `VF_FieldCachedValueNoise` 18.7%; `PassagePotentialWithinNode` 17.5%; carve lambda 10.2% |
| FI after | `ApplyResolvedStratePassageCarves` 21.3%; `VF_FieldCachedValueNoise` 20.8%; `VisitNearestPassageSpatialNode` 20.3%; `PassagePotentialWithinNode` 12.7%; carve lambda 11.8% |
| TN before | `VisitNearestPassageSpatialNode` 25.9%; `ApplyResolvedStratePassageCarves` 21.3%; `VF_FieldCachedValueNoise` 19.2%; `PassagePotentialWithinNode` 14.2%; carve lambda 12.3% |
| TN after | `VF_FieldCachedValueNoise` 22.8%; `ApplyResolvedStratePassageCarves` 21.8%; `VisitNearestPassageSpatialNode` 20.8%; carve lambda 13.1%; `PassagePotentialWithinNode` 10.5% |
## Exact cut and W8 readiness
Marked BVH nodes whose segment indices form a contiguous range, then skipped repeated `lower_bound`/membership work for those nodes. The nearest-node traversal now passes each already-computed child distance bound into recursion instead of calculating that bound again. A mask-only reachability trial was exact but showed mixed timing, so it was discarded.
L80 protocol: one warmup, then three interleaved L82/L83 pairs per stratum at W8. Cells show L82 → L83 median seconds; parentheses show the median of paired deltas.
| Strate | LOD0–2 ready | Whole view |
|---|---:|---:|
| SW | 1.088 → 1.058 (−0.021) | 2.323 → 2.249 (−0.074) |
| FI | 2.474 → 2.341 (−0.133) | 3.756 → 3.591 (−0.165) |
| TN | 2.386 → 2.431 (+0.058) | 3.542 → 3.534 (−0.008) |
| VS | 1.197 → 1.181 (−0.043) | 2.233 → 2.171 (−0.109) |
The cut is exact through LOD2: every near tile hash and the aggregate hash matched L82, with zero mismatches. Whole hashes (density / mesh / payload / topology):
| Strate | L82 = L83 whole hash |
|---|---|
| SW (1,408 tiles) | `4889b882f274930e / cafd187b455569f1 / 09e265430de5d9c8 / 498dc21d1fb4100e` |
| FI (1,216 tiles) | `3175bceb00bfc76c / d1dabfba70a95d8a / b23900f97cfbb2cf / 3967a02b7c1ae1c8` |
| TN (1,344 tiles) | `6b3e9f38209c1d8f / efa0d7b993928cbc / ede5b7bf3a771552 / 798dc428930aa2e2` |
| VS (1,344 tiles) | `e0c51b07a9a2016c / 99f2772314f721c5 / 922b324240786f79 / 6f8a836e0a17895c` |
## Scaling
Final L83, L80 protocol: one warmup and three interleaved measured runs for each W4/W8/W12/W16 setting and stratum. Entries are median `LOD0–2 / whole-view` seconds; individual runs are in `Saved/Linux/l83/scaling/summary.json`.
| Strate | W4 | W8 | W12 | W16 |
|---|---:|---:|---:|---:|
| SW | 1.464 / 3.493 | 1.455 / 3.023 | 1.210 / 2.427 | 1.087 / 2.309 |
| FI | 3.592 / 5.341 | 2.478 / 3.791 | 2.328 / 3.566 | 2.342 / 3.608 |
| TN | 3.625 / 5.398 | 2.475 / 3.631 | 2.327 / 3.384 | 2.295 / 3.368 |
| VS | 1.540 / 3.160 | 1.205 / 2.242 | 1.274 / 2.254 | 1.158 / 2.218 |
FI/TN scale well from W4 to W8 and gain about 0.15 s near-ready at W12; W16 is essentially flat for FI and slightly better for TN. Whole-view results mostly flatten by W12. W16 does not consistently help across all strata. Three-run variance is material in some cells: SW W4 near-ready ranged 1.400–2.322 s (shape compile 0.413–1.027 s), and FI W12 near-ready ranged 2.286–2.634 s (shape 0.344–0.594 s).
## Serial floor
At W16, the FI/TN timeline had `shape_free_desired=0` and `near_ring=0/27`. Shape compilation ran asynchronously, but there were no tiles to generate during it, so it is on the critical path and did not overlap tile generation in these views. Shape-free tiles could overlap compilation in views that actually contain them.
An instrumented W16 pass estimates the infinite-worker floor as the maximum, over near tiles, of enqueue time plus that tile's measured service time: FI 1.014 s (last enqueue 0.430 s; maximum LOD0 service 0.587 s), TN 0.974 s (0.470 s; 0.506 s). This is an estimate from W16 service times, not a measured W∞ run. Shape compile in these passes was 0.347 s FI and 0.408 s TN; queue wait reached about 1.8 s, so the actual W16 runs still have substantial parallel backlog beyond that floor.
## Verification and failed runs
- Fast tier passed in 299.8 s; source stamp `08af4e98c86a69477cc79e21463d8c93bcd11ebe0f077d7c11519031d9141fa9`.
- No Unreal build was needed: no Unreal `Source/` files changed.
- The first L77 parser attempt failed on a census regex unpack error; the parser was corrected and all six before/after FI/TN captures completed.
- The first fast-tier invocation stopped immediately because its output directory had no verification binary. After building that binary, the full tier passed.
- No timed-out benchmark or verification run. No commit, push, or stash.