Skip to content

Serial-phase profile; increment 21 design (parallel refine) - #101

Merged
skavhaug merged 7 commits into
masterfrom
serial-profile
Sep 27, 2026
Merged

skavhaug merged 7 commits into
masterfrom
serial-profile

Conversation

@skavhaug

Copy link
Copy Markdown
Member

What

No production code: evidence and design.

  • Serial-phase profile (@Perf, battery), docs/benchmarks/2026-09-27/serial-profile/: the serial part is about a third of 1-thread refine (34 %), mostly Lawson legalisation; the scan stops near 5x from load imbalance (16.5 of 61.8 ms at 8 threads); ceiling 2.02-2.03x. Exact incircle fallback on 9.1 % of tests, all Cocircular. Insertions in the big rounds are ~3 nodes apart and each conflicts with 3-6 others. Raw data, scripts and an unapplied instrumentation patch are committed. Also the first stored tools/bench.py run (serial-profile-bench/, battery).
  • Increment 21 design (@architect), docs/increments/21-parallel-refine.md: prior art (three core citations verified by web search; tile-parallel greedy insertion added for option D), determinism levels, quick wins 21a/21b (bit-identical), 21c measurements, 21d options (C batch-then-flip, or A1 deterministic reservations).
    • Ola's rulings (2026-09-27): L1 determinism (new order, same for any thread count), one path, at most 2 % more triangles, 21a/21b now, domain decomposition deferred.
  • Prose: ROADMAP row, .claude/agents/perf.md and the 2026-09-26 README corrected to the measured figures (a third, not half; 2.1x battery / 2.2x AC).

Review

@Reviewer: CHANGES REQUESTED twice (prose only), APPROVED at 267fc74.

🤖 Generated with Claude Code

skavhaug and others added 7 commits September 27, 2026 10:40
…ominate it, scan stops near 5x

Measurement only, battery, d6d6beb, 1 m benchmark on the quarter circle.
- Phase timers: scan 0.303 s, split 0.127 s, rest 0.029 s of 0.462 s at 1
  thread; Amdahl ceiling 2.9x; measured best 2.03x at 16 threads.
- sample(1) + atos on an -O3 -g -flto build: flip test 13.2 % of refine
  (exact incircle 5.0 %: 9.1 % of tests, all exactly cocircular), legalise
  loop 6.3 %, topology writes 7.3 %, active sort 3.6 %, allocation 1.5 %,
  no locking.
- Scan 4.95x at 8 threads: chunk imbalance 16.5 ms of 61.8 ms.
- Per round (local instrumentation patch, not applied to the tree): 95 %
  of insertions share a footprint slot with another in the same round,
  65 % a written slot; 51 % of marked triangles are deferred by the loop.
Also the first stored bench.py battery run for the quarter at d6d6beb.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ed to the measured third

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…options)

Design only, no code or tests. Records Ola's 2026-09-27 ruling verbatim and
what it leaves open (thread-count independence, one path or a size switch).
- Prior art: legacy grep (nothing), literature from recall only, flagged for
  checking; no novelty claimed; the searches to run are listed.
- Quick wins, all bit-identical: dynamic scan scheduling, an int64 incircle
  for all-node quads under an exact-frame condition, merge instead of sort
  for `active`; the tie classification to measure first.
- Determinism levels L0-L3; recommends L1.
- Serial-phase options: deterministic reservations, block colouring, batch
  insert plus parallel Lawson, DD (deferred to the mosaic work).
- @Perf's six questions answered or placed; 21c measurements specified.
- LOC per increment 21a-21d and invariant-critical suites; five questions for Ola.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… insertion prior art for option D

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… DD deferred)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n contract, conflict degree, frame orientation; profile README denominators and power records

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1x, block-count provenance; 09-26 README points at the profile

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@skavhaug
skavhaug merged commit 227522c into master Sep 27, 2026
8 checks passed
@skavhaug
skavhaug deleted the serial-profile branch September 29, 2026 21:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant