Skip to content

Benchmark harness, figures and panel data in bench/ - #32

Merged
tknopp merged 9 commits into
mainfrom
bench-harness
Nov 13, 2026
Merged

tknopp merged 9 commits into
mainfrom
bench-harness

Conversation

@tknopp

@tknopp tknopp commented Nov 13, 2026

Copy link
Copy Markdown
Member

Summary

Moves the benchmark harness into bench/, so the measurements behind the benchmark figures can be reproduced from the repository.

  • bench/harness/: measurement (one process per thread count), aggregation, the catalog with its tiers, held-out sizes (heldout.txt, drawn once with a fixed seed), and the run and monitor scripts. Machine profiles are templates with no host names; private profiles go into bench/machines.local/, which is not versioned.
  • bench/overview/run_kinds.jl: library setups. The wrappers for VkFFT, cuFFT and ducc0 are in bench/vkfft, bench/cufft, bench/ducc-ffi (sources and build scripts only; ducc0 is not part of the repository).
  • bench/ab/: single-case A/B scripts for comparing two versions with interleaved rounds.
  • bench/panels.toml and bench/results/panel-*.csv: inputs of the two figure scripts (fig_speedup.jl, fig_standing.jl). The speed-up figure now shows held-out sizes as outlines; the standing figure shows all cases, smooth and non-smooth lengths.
  • bench/Project.toml and bench/envs/metal/: environments for the CPU harness and the Metal GPU profile.

Nothing in the package source changes.

Notes

  • The panel tables are from one dev run per machine. The A6000 panel is from an older run and is not re-measured here.
  • The GPU and remote profiles are not exercised in CI.

🤖 Generated with Claude Code

tknopp and others added 9 commits November 13, 2026 07:29
The measurement harness (measure, aggregate, run and monitor, the catalog and
its tiers, the held-out sizes) and the wrappers of the vendor libraries move
into bench/. Machine profiles are templates here (no host names); private
profiles go into bench/machines.local/ (not versioned) and take precedence over
the public ones with the same id. A profile with a host runs over ssh.

The ducc0 competitor is optional: without the built binding (ducc-ffi/build.sh
against a ducc0 source tree) it is left out with a warning.

bench/Project.toml instantiates the harness with the checked-out package.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
A job above max_load (or a busy GPU) is shown as waiting with its reason and is
checked again every 30 s. --force still starts at once.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
m1max and m1gpu are one physical machine: they share the group "mac", so a single
monitor call runs the CPU jobs first and the GPU jobs after them.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…in the speed-up figure

Work in progress, local only: the panel data is not final and bench/overview.jl still
names the private hosts (to be removed before any push).

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
ab/bench_pr.jl and ab/bench_mt.jl time single cases for one package version, so two
checkouts can be compared with interleaved rounds. panels.toml and the panel tables
are the inputs of the two figure scripts.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@tknopp

tknopp commented Nov 13, 2026

Copy link
Copy Markdown
Member Author

@oscardssmith: This was sitting in a branch.... It explains the benchmarks I do when comparing changes.

@tknopp
tknopp merged commit a58f4e6 into main Nov 13, 2026
7 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.

1 participant