Skip to content

SEP 38: performance tracking — complete runs, about an hour per machine - #32

Merged
jtravs merged 14 commits into
mainfrom
feature/sep-0038-performance-tracking
Oct 27, 2026
Merged

jtravs merged 14 commits into
mainfrom
feature/sep-0038-performance-tracking

Conversation

@jtravs

@jtravs jtravs commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

SEP 38 (Final): replace SEP 30's standard benchmark runner with a release-tracking command. SEP 37 (#30) is merged into the branch and the PR targets main; SEP 30 is marked Superseded. Since the draft: a --device mode (run end to end on an NVIDIA A40), the passive-bound threading policy, and threading policies that spell out their waiting so #33's library default cannot change them.

What changes

  • python -m benchmarks track times complete runs of 13 representative cases at one thread and the production width. Each configuration runs in its own worker: build, translate, an untimed warm-up over 2 % of the guide, then 3 timed runs through run_problem (the loop of Simulation.run).
  • Defaults: cases pass no tolerance or integrator, so they use their interface's defaults. Every noisy launch uses the fixed seed 20261027.
  • Stepper override: --stepper default,multistep,multistep-interaction,rk selects steppers for A/B comparisons.
  • History: --append-history writes benchmarks/history/<hardware>.csv. The hardware is named by CPU model and core count, never by host name. history summarises the file.
  • ab now uses the same worker and gains --length FRACTION.
  • Runnable cases: every SEP 30 case stays runnable by name, outside the default selection.
  • Removed:
    • standard paired mode, qualification and references, native coverage, export;
    • the batch exercise;
    • their tests (about 5000 lines).
  • Documentation: the manual (docs/dev/benchmarking.md), the rules (docs/dev/benchmarks.md), the SEP index, roadmap and changelog.

Calibration

One complete default run on 16 cores of an AMD EPYC 7763 node took about 50 min for 22 configurations. Repeats agree within 0.7 % on most cases. The full table is in the SEP's phase 1 report.

For review

Checks

  • Benchmark and SEP tests pass locally: 328 passed.
  • ruff and basedpyright are clean on benchmarks/.
  • The docs build passes with -W.
  • CI runs the full gate.

🤖 Generated with Claude Code

jtravs and others added 5 commits October 27, 2026 07:22
…nner

Replace the standard benchmark runner with python -m benchmarks track: the
tracking set's complete runs, each in its own worker with the library's
default integrator and tolerances and a fixed noise seed, timed through the
driver's run loop after an untimed warm-up, at one thread and the production
width. A hardware slug (CPU model and cores, no host name) names a history CSV
under benchmarks/history/. ab moves onto the same worker and gains --length.
Every SEP 30 case stays runnable by name; standard mode, references, native
coverage, export and the batch exercise are removed with their tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… counts each core

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its coupled launch translates the run when it is built, so the save planes and
an integrator override cannot be set afterwards. A slow test covers it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@read-the-docs-community

read-the-docs-community Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

jtravs and others added 7 commits October 27, 2026 08:33
… fewer

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…; a threading option

The Kerr beams cost the same per fixed step, so four steps track the same work
in a third of the time (revision 2). lscpu names Arm cores, whose /proc/cpuinfo
has no model name, and the registry names Windows processors. --threading picks
OpenMP placement and waiting; the policy is a history column and part of what
rows compare by.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
History rows now compare by threading, tolerances and noise model as well as
the integrator, and summaries show the change against the first and previous
runs with the configurations shared. Only a complete default run of committed
code, timing this checkout's src with a native build of the same commit, is
recorded; each repeat must take the same steps and reach the same final field.
Older history files gain new columns; dirty and case-hash columns are added.
The slug counts the production width and names a cloud family; the busy flag
judges by CPU use where swap is not reported; Kokkos tool libraries are
stripped and each worker's environment is saved; results are rewritten after
every worker. Tests cover the refusals, migration and a native smoke run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ly when native/ changed

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each case runs once on the device with the production width of host
threads; the history names the hardware by its GPU, records the device
memory the run holds and keeps device rows apart from CPU rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Free space now has a default controller and no noise, so the free-space
cases take the library's controller and pass no seed. SEP 37's links point
at its archive, and Q1 closes: the capillary default stayed as calibrated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jtravs
jtravs changed the base branch from docs/sep-0037-noise-and-stepper-defaults to main October 27, 2026 12:14
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

…perseded

The default and bound threading policies spell out the runtimes' own
waiting, so the native backend's passive default (#33) cannot change what
they measure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jtravs
jtravs marked this pull request as ready for review October 27, 2026 14:24
Copilot AI balanced review requested due to automatic review settings October 27, 2026 14:24

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

@jtravs jtravs changed the title SEP 38: performance tracking — complete runs, about an hour per machine (draft) SEP 38: performance tracking — complete runs, about an hour per machine Oct 27, 2026
@jtravs
jtravs merged commit 2384dff into main Oct 27, 2026
30 of 31 checks passed
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.

2 participants