Skip to content

Chore/bump ethrex rev - #894

Open
jotabulacios wants to merge 12 commits into
mainfrom
chore/bump-ethrex-rev
Open

Chore/bump ethrex rev#894
jotabulacios wants to merge 12 commits into
mainfrom
chore/bump-ethrex-rev

Conversation

@jotabulacios

Copy link
Copy Markdown
Collaborator

No description provided.

The rkyv layout moved with the ethrex rev, so the block's fixture did too, and
the release now carries both: the pre-bump bytes under the original name and the
post-bump ones under a name carrying the rev.

Uploading under a new name rather than replacing the asset keeps `main` working
while this branch is open — its Makefile still pins the pre-bump sha256, and a
replaced asset would fail that checksum on every push, taking the published
benchmark baseline with it.
@jotabulacios

Copy link
Copy Markdown
Collaborator Author

/bench

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

Benchmark — real block (ethrex_mainnet_25368371.bin) (median of 3)

continuations · epoch 2^22 · 8 epochs

Metric main PR Δ
Peak heap 47352 MB 47126 MB -226 MB (-0.5%) ⚪
Prove time 137.700s 109.773s -27.927s (-20.3%) 🟢

🎉 Improvement on the real block — prove time down 20.3%.

Prove-time spread 2.8% (111.834s / 108.801s / 109.773s)

Commit: d829a2c · Baseline: cached · Runner: self-hosted bench

@jotabulacios

Copy link
Copy Markdown
Collaborator Author

/bench-gpu

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

GPU Benchmark (ABBA) — a9ec7ce1ee vs main (14 pairs)

RTX 5090 · AMD Ryzen 9 9950X 16-Core Processor (32 threads) · Vast.ai datacenter @ $0.6275925925925925/hr · prover/cuda · ethrex real block, continuations · drift-free A/B/B/A

=== ABBA paired result  (improvement: - = PR faster) ===
  pairs: 14   mean A (PR): 69.187s   mean B (base): 69.096s

  [parametric] paired-t   mean +0.13%   sd 0.84%   se 0.23%
               95% CI: [-0.35%, +0.62%]   (t df=13 = 2.16)
  [robust]     median +0.26%   Wilcoxon W+=62 W-=43  p(exact)=0.5830  (z=+0.56)

  --- server stability (this run; compare across servers) ---
  run-to-run jitter:    A CV 0.70%   B CV 0.61%        (lower = steadier)
  within-session drift: +0.67% over the run, 1st->2nd half +0.10%
    (jitter -> Tier-1 cached gate floor; drift -> whether the cached baseline can be trusted)

  VERDICT: INCONCLUSIVE - effect not separable from 0 at n=14.
           Point estimate ~+0.26% (median). Need more pairs to resolve.

  raw pairs: /tmp/abba_run/pairs.csv

- = PR faster. Trust the verdict when paired-t and Wilcoxon agree.

The Makefile fetches ethrex_mainnet_25368371_4f658c2b.bin (the suffixed
upload keeps main's pre-bump checksum working while the branch is open),
but the converter README's asset table still listed the un-suffixed name
with the post-bump checksum next to a 'Re-upload pending' note that the
suffixed upload made moot, and executor/tests/README.md named the
un-suffixed asset with the post-bump byte count. Also drop the dangling
ETHREX_BUMP_CYCLE_RESULTS.md reference — the numbers are quoted inline.
@diegokingston
diegokingston marked this pull request as ready for review August 10, 2026 19:29
@diegokingston

Copy link
Copy Markdown
Collaborator

/bench

Conflict in crypto/ethrex-crypto/Cargo.lock resolved by regenerating the
lockfile from the merged Cargo.toml (cargo update); the crate's 24 tests
pass and the workspace checks clean.
@diegokingston

Copy link
Copy Markdown
Collaborator

/bench

@jotabulacios

Copy link
Copy Markdown
Collaborator Author

/bench

feat/lambdavm-prover-backend branch and onto ethrex main, and stop declaring the
lambdavm feature.

Requiring that feature is what tied the guest to the backend branch, since it
exists nowhere else — and that branch is 69 commits behind main and has not moved
since 2026-08-04, so waiting for it to merge was costing real performance. On the
real benchmark block the guest goes from 34,241,608 to 30,498,818 cycles and from
120.715 s to 110.259 s of proving time (median of 3, spread under 0.8%), dropping
from 9 epochs to 8; against main's pin the cycle count falls 22.9%.

No feature replaces it. ethrex's per-zkVM features are not backend selectors —
each is only a list of optional crypto dependencies, and none gates any method of
the Crypto trait. Measured against the sibling feature activating the widest
dependency set, ethrex's precompile stress fixtures come out identical to the
cycle (stress_modexp_150M 6,373,285,966 and stress_alt_bn128_150M 22,986,061,145
both ways) with a smaller ELF. What makes this guest LambdaVM never travelled
through a feature: lambda-vm-syscalls, lambda-vm-ethrex-crypto and the
riscv64im-lambda-vm-elf target are direct, and every run still reports its 116
ECSM and 10,659 keccak precompile calls.

797df554 is the last commit where this is only a rev change. b5271885 rewrites the
guest entry point to run_stateless_guest over SSZ input, which needs a new shim
and a new fixture format; and between 797df554 and that boundary there is no
perf(levm) work, while the two commits that matter (#7105, #7104) are already in.
Release tags do not help — v24.0.0 predates both and is diverged from main,
because ethrex cuts releases from a side branch.

The rkyv ProgramInput layout moved with the rev, so every committed fixture is
regenerated and the converter's reproducibility digest updated, as that test asks
for on a legitimate bump. scripts/set_ethrex_rev.sh moves all 11 pins together:
a guest and tooling on different revs do not fail to build, they produce a fixture
the guest silently misreads.

The real-block fixture asset for the new rev still has to be uploaded to the
bench-fixtures-v1 release before CI can fetch it.
@jotabulacios

Copy link
Copy Markdown
Collaborator Author

/bench

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