Skip to content

Add self-hosted Raspberry Pi 5 as a benchmark target#8

Merged
bvdmitri merged 2 commits into
mainfrom
add-rpi5-benchmark-runner
Jun 16, 2026
Merged

Add self-hosted Raspberry Pi 5 as a benchmark target#8
bvdmitri merged 2 commits into
mainfrom
add-rpi5-benchmark-runner

Conversation

@bvdmitri

Copy link
Copy Markdown
Member

What

Adds a self-hosted Raspberry Pi 5 (ARM64) runner as a second benchmark hardware target, alongside the existing github-actions-ubuntu runner. Results are stored separately and the dashboard can switch between machines.

The system was already designed for multiple hardware targets (harness self-identifies via RXBENCH_HARDWARE_ID; results live in disjoint data/results/<id>/... folders; the frontend's HardwareSwitcher and Compare view are data-driven), so this is mostly an infra + registry change with no frontend code changes.

Changes

  • data/hardware.yml — register rpi5-8gb / "Raspberry Pi 5 (8GB)" (kind: self-hosted, arch: aarch64). Mirrors regenerated via make index.
  • .github/workflows/benchmark.yml — the bench job now uses a matrix.include pairing each Julia version (1.10/1.11/1.12) with a runner + hardware id: three legs on ubuntu-latest and three on [self-hosted, ARM64, pi5]. RXBENCH_HARDWARE_ID flows from the matrix; max-parallel: 1 serializes all six legs so the two machines never push to main concurrently. Commit message now includes the hardware id.
  • benchmarks/harness/test/test_config.jl — assert rpi5-8gb is registered with the expected label/arch.
  • design/architecture.md, IDEA.md — document the Pi target as live (Hard Rule 5: design docs are live).
  • CI hygiene — set FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 across all three workflows to clear the Node 20 deprecation warnings (covers the actions/cache + pyTooling steps vendored inside julia-actions/cache, which can't be bumped directly).

Data isolation

Pi results land in data/results/rpi5-8gb/<julia>/<fingerprint>.json, fully separate from github-actions-ubuntu/.... The dashboard's hardware switcher and Compare view pick them up automatically once data exists — no interference between machines.

Verification

  • Local: harness tests 152/152, frontend lint + typecheck + 161 tests, make index regenerates mirrors with rpi5-8gb, harness accepts RXBENCH_HARDWARE_ID=rpi5-8gb.
  • CI smoke run (workflow_dispatch with smoke): all six legs green, including all three rpi5-8gb legs routing to the Pi via the [self-hosted, ARM64, pi5] labels. No-sudo setup (setup-julia, cache, Pkg.update()) worked on ARM64; Commit results correctly skipped in smoke mode (public dataset untouched).

After merge

Trigger a real (non-smoke) run to populate the first data/results/rpi5-8gb/... results; the dashboard will then list "Raspberry Pi 5 (8GB)" alongside the Ubuntu runner.

🤖 Generated with Claude Code

bvdmitri and others added 2 commits June 16, 2026 16:23
Register rpi5-8gb (ARM64, self-hosted) in the hardware registry and add
it to the weekly benchmark matrix alongside github-actions-ubuntu. The
matrix now pairs each Julia version (1.10/1.11/1.12) with a runner +
hardware id; max-parallel: 1 keeps all legs serialized so the two
machines never push to main concurrently. Results land in their own
data/results/rpi5-8gb/... folders, so the dashboard's existing
data-driven hardware switcher picks them up with no frontend changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Node 20 is deprecated on GitHub Actions runners (forced to Node 24 from
2026-06-16). Setting FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 at the workflow
level silences the warnings for every JS action — including the
actions/cache and pyTooling steps vendored inside julia-actions/cache,
which can't be bumped directly. Set in all three workflows since
workflow-level env does not cross into the reusable test.yml call.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bvdmitri
bvdmitri merged commit e6d85ac into main Jun 16, 2026
20 checks passed
@bvdmitri
bvdmitri deleted the add-rpi5-benchmark-runner branch June 16, 2026 17:21
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