Skip to content

Bump DspTap to 0eb09fa (shared Kaiser-window Bessel series); re-record icount baselines - #47

Merged
tap merged 1 commit into
mainfrom
claude/sample-rate-solutions-comparison-mqc190
Sep 26, 2026
Merged

tap merged 1 commit into
mainfrom
claude/sample-rate-solutions-comparison-mqc190

Conversation

@tap

@tap tap commented Sep 26, 2026

Copy link
Copy Markdown
Owner

What this changes

Bumps submodules/dsptap from 28a34a1 to 0eb09fa, which includes tap/DspTap#38. It then re-records bench/baselines.json on all three targets, regenerates the README icount table, and adds the docs/PERFORMANCE.md ledger entry the re-record requires. Docs that priced construction at ~1.3 G instructions now say ~0.9 G.

Why

DspTap#38 computes the Kaiser window's Bessel series once, for half the taps, and mirrors it. The coefficients are bit-identical and the filter design is 32 % cheaper on M33. Every ratchet scenario constructs a converter, so every baseline dropped beyond the two-sided ±3 % gate. The ratchet flagged all 21 as "IMPROVED beyond tolerance" before the update.

Verification

  • Ratchet, before the update (constant per target across the seven scenarios, the construction-only signature):

    Target Change per scenario
    M33 −393 to −398 M (pipeline_q15 −27.8 %)
    Hexagon −47 M
    M55 −6 M
  • Ratchet, after icount.py --update: it passes against the committed file on all three targets. The builds use CI's configure line, the same QEMU plugin-header SHA, the same toolchains (arm-none-eabi-gcc 13.2.1, hexagon-clang 19.1.5) and plugin-enabled qemu-hexagon 8.2.2.

    • My local counts equalled CI's to the instruction on M55/M33 in the last compare.yml run.
    • The PR's own ratchet job is the cross-check that these baselines match CI.
  • Audio path unchanged: the comparison workloads' steady state (4 s − 2 s) is identical to the instruction on all three targets, both float and Q15.

  • Construction:

    Target float Q15 before (float / Q15)
    M33 870 M 884 M 1,268 / 1,281 M
    Hexagon 133 M 136 M 181 / 184 M
    M55 17.3 M 18.4 M 23.6 / 24.6 M

    Full stereo converter on M33: 0.91 G (was 1.31 G).

  • Host: 73/73 tests pass under GCC 13 and clang 18 with SRT_WERROR=ON and the C ABI built.

  • Book: it builds with mdBook v0.4.40 with 0 warnings/errors.

  • Not run locally: the M33/M55/Hexagon test legs and sanitizers, left to CI.

Notes for the reviewer

  • Submodule pin moved: DspTap 28a34a1 → 0eb09fa. The range also brings DspTap's FFT stages (header-only FFT, no compiled tap_dsp_fft by default) and math.h. SampleRateTap uses neither, and the build and tests are unaffected.
  • Other consumers: RatioTap also pins DspTap. Its canonical tables are compile-time, so only custom-spec runtime designs would get cheaper when it bumps.

🤖 Generated with Claude Code

https://claude.ai/code/session_01G3HxzEGiZp7jStoMuYNuBK


Generated by Claude Code

… icount

DspTap #38 evaluates the Kaiser window's bessel_i0 series once, for half
the taps, and mirrors it; the compensated design used to evaluate it per
tap in each of two kernel builds. Coefficients are bit-identical, so only
construction moves.

Ratchet (every scenario flagged IMPROVED beyond tolerance before update),
constant per target across all seven scenarios:
  M33      -393 to -398 M  (pipeline_q15 -27.8%)
  Hexagon  -47 M
  M55      -6 M
Baselines re-recorded with icount.py --update; README table regenerated.
The comparison workloads' steady state (4 s - 2 s) is unchanged to the
instruction on all three targets; construction falls to 870/884 M on
M33, 133/136 M on Hexagon, 17.3/18.4 M on M55 (float/Q15). Docs that
priced construction (~1.3 G) now say ~0.9 G, and docs/PERFORMANCE.md
gets the ledger entry the re-record requires.

The pin also brings DspTap's FFT stages (header-only FFT, no compiled
tap_dsp_fft by default) and math.h; SampleRateTap uses neither. Host
build and 73/73 tests pass under GCC and clang with SRT_WERROR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G3HxzEGiZp7jStoMuYNuBK
@tap
tap merged commit 2b4dff1 into main Sep 26, 2026
32 checks passed
@tap
tap deleted the claude/sample-rate-solutions-comparison-mqc190 branch September 26, 2026 15:59
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