Use alpha-eight tables for private prepared MSMs - #275
Conversation
4a1c614 to
6638856
Compare
f5c462f to
ae69f76
Compare
6638856 to
5f12a89
Compare
ae69f76 to
5e7459b
Compare
5e7459b to
d563026
Compare
1f5ed07 to
4c9e18e
Compare
d563026 to
cb3955c
Compare
4c9e18e to
8743482
Compare
cb3955c to
4c11963
Compare
Exact current-
|
| Run | 95% confidence interval | Point estimate |
|---|---|---|
| 1 | 145.77-147.23 ms | 146.40 ms |
| 2 | 145.83-146.21 ms | 146.02 ms |
| 3 | 145.69-146.07 ms | 145.87 ms |
The median point estimate is 146.02 ms. All three runs are below the
150 ms target, including every confidence-interval upper bound; the highest
upper bound is 147.23 ms. Median maximum RSS was 219.14 MiB. The host reported
no thermal or performance warnings and zero configured or used swap.
Provenance hashes:
- source archive:
95894788edf05b5982b21925f1b64675c8053c48eab5afbad3134e1b69096ff9; - benchmark binary:
5e1d250dc8f08a89681e9b3c3aa3308d5503e27d72f43c024a12409345fdd366; - retained log:
8657c82408051b26cdbc83524b4be1758fe751a200bfa0c5b63004436f0de469.
Focused validation on this exact merge also passed the default and strict
no-default Pasta zero suites, Halo prepared/unprepared differentials,
multi-opening tests, proof creation, and a real ten-worker Orchard
prepare/prove/verify smoke test for one, two, and four Actions.
8743482 to
ada1c1f
Compare
4c11963 to
f3a7973
Compare
Summary
private AArch64 macOS multicore/no-orbits evaluator.
sizes, budget failures, and the public
orbitsplanner.The route is intentionally narrow. It first runs the existing planner and
substitutes alpha-eight only when that planner selected alpha-seven, the input
is a power of two, the target is AArch64 macOS, and the wider table still fits
the private 25 MiB budget. At Orchard's
k = 11, this selects the 2,048-termcoefficient and Lagrange tables.
Performance
One hundred accepted balanced, interleaved pairs on a 10-core Apple M4
measured the clean current-main control (
e1cbe51) against this one-commitcandidate (
e38e822). The binaries used Rust 1.97.1, ThinLTO,aarch64-asm,multicore, and noorbits; explicit preparation was outsidethe timed proof.
Explicit preparation increased by about 30.0 ms (approximately 32.3 ms to
62.3 ms). On this host, that setup cost amortizes after roughly 64 one-Action
proofs or 31 four-Action proofs. The host recorded no thermal or performance
warnings and no swap activity. Deterministic 1-Action and 4-Action proof bytes
were identical between the two arms.
Memory and setup tradeoff
Each Orchard-sized prepared table grows by about 12.4 MiB. The coefficient and
Lagrange tables therefore grow from about 24.8 MiB to 49.6 MiB in total;
including the existing blind table, retained commitment preparation grows from
about 25.3 MiB to 50.1 MiB.
Preparation remains explicit, cached, shared across proving-key clones, and
outside proof timing. One-shot or cold provers need not opt into it.
Correctness and scope
the private prepared-table mode selected for the scoped target and size.
orbitsplanner, its 13 MiB per-table budget, and its downstreambehavior are unchanged.
77ceabe276a5ec1321dac293cb7c1b99303aaf437e91baca8319d4f70c46fc75(1 Action) and
629d5bb4ea86cd0cdf630e6b9949fdf04c7089b5e3f51bed75ba3a0441453afe(4 Actions).
API changes
There are no downstream public item or signature changes.
pub(super)PreparedZeroMsm::prepare_no_orbitshelper undercfg(all(feature = "multicore", not(feature = "orbits"))).PreparedZeroMsm::preparemethod undercfg(any(test, feature = "orbits")); it remains available everywhere thepublic
glv::zeromodule is available.