Files
VoxelForge/Standalone/Research/OwnerShapeWorld/speed_round/round9/REPORT.md
T
Fr0zkaandClaude Opus 5.5 2656d81ac9 standalone: whole view under one second -- 0.955 s cold @8 workers, full payload, world unchanged
- Eight-sample X batching of fine density rows, reuse of solved Z intervals in the candidate mask,
  AVX2 marching-cubes cell classification. LOD0/1 density-grid time -61/-62%; interval/sign stage
  140 -> 97 ms; candidate-axis allocation -18 MiB. Shape stage ~413 ms, detail band ~219 ms.
- W1/W8 hashes equal across 44 fields and equal to round 8; routes 5642/5642; look and far-survival
  audits pass; bad-shell control still fails; six fixed captures pixel-identical.
  Remote-view recapture pending (camera 500,0,0).
Verified by me, interleaved (8 workers, cold, BelowNormal 0xFF00, 2,226 tiles, 110.9 MiB payload):
1.012 / 0.927 / 0.926 s vs round 8 1.100 / 1.099 / 1.088 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
2026-10-05 05:15:19 +02:00

9.7 KiB
Raw Blame History

Round 9 — cold full-view speed below one second

Result

The final candidate averages 0.992 s for the direct cold W8 full-payload run, versus 1.184 s for the local 16612ac executable: 191.5 ms (16.2%) faster. The two new runs were 1.001 s and 0.983 s; the mean is under one second, with one sample 1 ms over. Both old runs generated all 2,226 tiles and the complete 110.90 MiB payload with zero mesh-cache hits.

This comparison uses the required arguments and old/new interleave:

--stream-benchmark --shape-world --force-generate --workers=8 --clip-radius=3

Order Executable Process wall Full clipmap Shape stage Cache hits
old A VoxelForgeRound9Base16612ac.exe 1.217 s 0.582 s 457.1 ms 0 / 2,226
new A VoxelForgeRound9Final.exe 1.001 s 0.492 s 410.9 ms 0 / 2,226
new B VoxelForgeRound9Final.exe 0.983 s 0.488 s 414.4 ms 0 / 2,226
old B VoxelForgeRound9Base16612ac.exe 1.150 s 0.577 s 477.5 ms 0 / 2,226

The interleaved means are 1.1835 s old and 0.9920 s new. The owner’s earlier 16612ac measurement was 1.092/1.098 s; that absolute did not reproduce in this local run, while the final candidate still averaged below one second. Raw logs: old A, new A, new B, old B.

A separate third cold run of the new executable measured 1.005 s. Its shape stage took 397.7 ms (42.6 ms local shapes, 95.9 ms intervals/signs, 206.4 ms surface band, and 43.8 ms far parents), and full clipmap took 469 ms. The remaining 138 ms is the derived startup/setup/finalization remainder for that run. The separate repeat is here, with its BelowNormal/affinity wrapper record here. Across the three new-only samples, the mean is 0.996 s; the required old/new paired comparison above remains the primary head-to-head result.

All builds used /MP8; benchmark, audit, and capture children ran BelowNormal on affinity 0xFF00. The final build is round9_final_build_packed_x8.log. It completed with the existing C4838 conversion warnings and vswhere.exe setup diagnostic. The build script applies /arch:AVX2 /fp:precise; this remains the canonical path without runtime dispatch or FMA contraction.

What changed

  • The existing AVX2 eight-candidate path evaluates effective rock distances and primitive shapes along Z. Retained per-worker interval scratch and 16-line scheduling reduce the packed sign work.
  • The mesher classifies eight contiguous X cells at once with AVX2 compares and movemasks. It calculates edge interpolation values only for surface cells.
  • The packed interval pass now fills the Z candidate mask while it solves each Z line. Candidate-band construction no longer solves those same primitive/line intersections a second time. The completed Z mask moves directly into CandidateWords; retained candidate-axis allocation drops from 55.06 MiB to 36.71 MiB.
  • The dominant new gain is an eight-sample packed-density row path for fine tiles. It shares X/Y/Z lattice indexing across adjacent X samples and reads the standalone shape-world SoA arrays directly. It falls back to the scalar path for out-of-bounds samples, edit brushes, forced-air samples, shared grids, and pre-edit captures. Results remain bit-identical.

The paired profiles show the interval/sign stage falling from about 140.1 ms on the 16612ac executable to 96.7 ms in the final direct runs. The final detail-band wall is about 218.9 ms, and far-parent construction is about 48.0 ms. The shape-stage mean is 412.6 ms, down from 467.3 ms in these same direct runs. Full clipmap wall falls from 579.5 ms to 490 ms.

The detailed final profile records 9.389 million distance evaluations and 3.527 million detail-noise evaluations. Sampled worker costs are 65.2 ns per distance evaluation and 338.2 ns per detail evaluation; the detail band takes 217.7 ms wall time. Its sampled subcosts are 83.9 ns for relief, 26.9 ns for layer lookup, and 99.8 ns for owner roughness. The sampling rates are 1/256 for distance and 1/64 for detail. The full profile is here.

Tile profile Before X batching Final X batching Change
LOD0 density grid, 512 tiles 268.6 ms 100.9 ms -62.4%
LOD1 density grid, 448 tiles 234.5 ms 91.4 ms -61.0%
LOD8 density grid, 306 tiles 122.3 ms 120.7 ms no material change

The LOD0/1 profile logs are final LOD0 and final LOD1. The LOD8 profile confirms the remaining far density cost. Overall LOD8 tile work is about 396.5 ms in the isolated serialized tile benchmark; its stream worker sum is parallelized across the full run.

After subtracting shape-stage and full-clipmap wall from direct process wall, the remaining startup/setup/finalization portion is about 89 ms on average. This is a derived remainder, not a separately instrumented timer.

Experiments kept and rejected

Experiment Evidence Decision
Reuse packed Z intervals for candidate bands Axis work falls from about 69–76 ms to 51 ms wall; interval/sign stage falls about 20 ms; W8 hashes stay exact. Candidate-axis storage falls 18.35 MiB. Keep
Batch fine packed density rows across X LOD0/1 density-grid work falls by 62%/61%; full clipmap falls from 543 ms to about 486 ms against the interval-only candidate; W8 hashes stay exact. Keep
Batch far Z density samples LOD8 isolated density-grid profile falls 121.9→89.1 ms and worker sum 0.399→0.367 s, but two full-view AB pairs show no end-to-end gain (1.0805 s old mean vs 1.0875 s new; full clipmap 0.538→0.555 s). Reject
Precompute interpolated value-noise planes No-plane detail wall averages 215.2 ms versus 222.2 ms with plane precompute; full clipmap averages 547.5 versus 555 ms. Hashes matched, timing regressed. Reject
Batch surface-relief noise W1/W8 hashes matched, but detail-band wall rose by roughly 10–30 ms in paired trials. Reject
Direct per-sample shape-world call hoist LOD0 density profile rose 257.7→301.2 ms and LOD1 225.9→263.6 ms. Reject
Per-tile sign grid LOD0/1 density work rose about 74 ms. Reject
Edge cache Altered deduplicated mesh vertex counts and did not materially improve tile time. Reject

Hashes and audits

The final W1 and W8 runs match all 44 density, mesh, payload, and topology fields. W8 also matches all 44 fields from Round 8, including the full payload. Comparison output: hash comparison; raw runs: W1, W8.

The shape audit passes all look checks and 5,642/5,642 route samples. It reports zero thin sheets, GridStair relative join step 0.090 against the 0.400 threshold, and passing strata/cave surface-band audits: shape audit.

The far-survival audit passes 7,200/7,200 boundary surfaces and all 10,976 connectors across 178,351 sampled sections. Missing surfaces, holes, and unsampled connectors are all zero; it records 47,858 extra ray hits: far-survival audit.

The bad-shell control fails as required: it removes 512 shell triangles and detects 16 missing surfaces and 16 holes, exiting 14: control output, runner.

Captures

The six fixed views from the final executable are pixel-identical to Round 8. The comparison confirms zero changed pixels in all six. Images are in this folder: chamber, tunnel, passage, far, passage floor close-up, and tunnel bend.

The first remote capture attempt used an assumed camera position of (500, -123.25, -19.85) m and is invalid: it does not match Round 8’s X=500 views. I asked for the original Y/Z coordinates and will replace those four provisional images and update this section when they are provided. The captures do not alter the mesh hashes or the fixed-view result.

Failed builds and runs

  • The first AVX2 mesher-classifier build failed with C2676 because TArray<float> does not support pointer addition. Replacing it with DensityGrid.GetData() fixed the build; the retry succeeded: failed build, retry.
  • An initial build log redirection used a relative path after Build.ps1 changed the current directory. The redirection failed; rebuilding with an absolute log path succeeded.
  • One exploratory capture named VoxelForgeRound8Final.exe, which was not present. The correct executable was VoxelForgeShapeRound8Final.exe; no child process started from the incorrect name.
  • A strict capture comparator initially exited 1 on remote image differences. It was adjusted to enforce exact fixed views and report remote pixel deltas separately.
  • The first final far-audit invocation omitted --stream-benchmark, entered the hidden interactive viewer, and returned -1 after I stopped that run-owned process. The corrected invocation passed; both logs are retained.
  • The bad-shell run exits 14 by design, as described above. No process returned 0xC0000142.

No commit, push, or stash was made. All source changes and Round 9 artifacts are in Standalone\.