Skip to content

bench: seed the instruction-count baselines from the first main run - #26

Merged
tap merged 1 commit into
mainfrom
claude/wave1-seed-baselines
Sep 17, 2026
Merged

tap merged 1 commit into
mainfrom
claude/wave1-seed-baselines

Conversation

@tap

@tap tap commented Sep 17, 2026

Copy link
Copy Markdown
Owner

What this changes

Copies the merged baselines artifact of the first bench.yml push-to-main run after #21 (run 35281280300 at df482d1) into bench/baselines.json, and records one row per key and scenario in bench/README.md with the run URL, the main SHA and the toolchain versions, as the seeding rule in Part 11 of the plan requires. Nothing else changes.

Why

From this commit the ratchet is live: every push and pull request compares its instruction counts against these numbers at ±3% per key. The numbers were measured on CI, on the vendored Ooura C (TAP_DSP_BENCH_ENGINE=reference_c), and are the baseline Stage 2b's port-versus-C comparison is gated on.

key rfft_f32_512 rfft_f32_2048
m4-softfp 1,868,441,244 2,296,984,479
m4f 98,090,666 111,859,257
m33 102,248,169 116,385,409
m55 (CMSIS-DSP Helium) 52,382,331 54,858,120
m55-ooura 94,561,954 107,806,480

Two things these numbers say, recorded for the design note rather than changed here: soft-float costs 19× on the M4 (the fixed-point profile's reason to exist), and the Helium backend is 1.8× fewer instructions than Ooura on the M55 at these geometries, not the ~3× the header quotes from an earlier measurement.

Verification

  • Toolchain from the seeding run's "Toolchain versions" step: arm-none-eabi-gcc (15:13.2.rel1-2) 13.2.1 20231009, QEMU emulator version 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1.18), cmake 3.31.6, on ubuntu-24.04. The pinned plugin header reports QEMU_PLUGIN_VERSION 1.
  • The bench.yml run on this PR is the first compare-mode run: every key is seeded, so it must report 0% delta against an identical tree. That run is the proof this PR needs; nothing can be run locally (no Arm toolchain or QEMU in the container).
  • .text ceilings are not set here (text_ceiling stays 0 = report only), per README: they are a wave-2 item. The seeding run measured the M55 float size probe at 107,681 bytes (MinSizeRel, size -A).

Notes for the reviewer

  • Not a contract change. Bench data and its record only.
  • Merge position: last in wave 1, after every code PR (all merged; main green on CI and style for each).

🤖 Generated with Claude Code

https://claude.ai/code/session_019ZPTzNxo5Fe4EtpXXKf7Sy


Generated by Claude Code

Copies the merged baselines artifact of the first bench.yml push-to-main
run after #21 (run 35281280300 at df482d1) into bench/baselines.json:
five keys (m4-softfp, m4f, m33, m55, m55-ooura), two scenarios each
(rfft_f32_512, rfft_f32_2048), measured on the vendored Ooura C with
arm-none-eabi-gcc 13.2.1 (15:13.2.rel1-2) and QEMU 8.2.2 on ubuntu-24.04.
bench/README.md records one row per (key, scenario) with the run URL,
the main SHA and the toolchain versions, as the seeding rule requires.

From this commit every push and pull request compares against these
numbers at +/-3%; the bench.yml run on this PR is the first compare-mode
run and must report 0% delta (identical tree).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ZPTzNxo5Fe4EtpXXKf7Sy
@tap
tap merged commit 76d922f into main Sep 17, 2026
24 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