Skip to content

Author leanVM circuits in Clean, prove them, and export them to Rust - #595

Open
kevaundray wants to merge 80 commits into
leanEthereum:riscv-explorationfrom
kevaundray:kw/clean-circuits-adder-20261010
Open

kevaundray wants to merge 80 commits into
leanEthereum:riscv-explorationfrom
kevaundray:kw/clean-circuits-adder-20261010

Conversation

@kevaundray

@kevaundray kevaundray commented Oct 10, 2026 •

Copy link
Copy Markdown
Collaborator

This PR was created with Claude Code, prompted by @kevaundray.

Changes

  • Author the production GF(2) adder family in Clean: wrapping sums at 64 and 32 bits and the carry adder's exact 65 bit sum. Migrate every production adder caller and remove the handwritten duplicates.
  • Author the complete RV shift and load/store class circuits in Clean. Production Shift::circuit, Load::circuit and Store::circuit consume generated flock::clean artifacts. Preserve native optimized witnesses, ordered product slots, structural zeros, padding and proof formats. Ld and Sd use the exported wrapping adder.
  • Author the complete ALU, logic, signed and unsigned comparisons, branch and link selection circuit in Clean. Production Alu::circuit consumes flock::clean::alu64; its optimized native witness, private product ordering and directly committed jump products are preserved.
  • Author MUL/MULW, signed and unsigned high multiplication, division and remainder including word forms in Clean and export them to production. Preserve the native witnesses and slot layouts; remove the handwritten multiplier/divider gate builders and their unused helpers.
  • Author the five production clock configurations and EXT pointer/flag extras in Clean, export them into Clock and Ext::clock_circuit, and remove the handwritten builders. Prove their clock and address contracts for arbitrary satisfying witnesses without changing native witness kernels.
  • Author and prove the complete BLAKE2s compression circuit against RFC 7693 and export it to production Hash::circuit, retaining its optimized witness and product ordering. Recursion HASH rows use the same circuit.
  • Export recursion slot forms, identities and builder indices from Clean. Prove field arithmetic, row contracts, builder model contracts and the conditional copy bus argument. Check production builders and fixed copy links for eight output-tree configurations and seven claim-set/tier positions. Recursion remains partial, as detailed below.
  • Prove source linkage, arbitrary satisfying witness soundness and existential completeness for the exact Boolean artifacts. Pin Lean and Clean, check theorem axioms and deterministic regeneration, and consume checked in generated Rust without runtime Lean, network access or local checkout dependencies.
  • Pin the integer-channel multiplicity Clean fork and prove symbolic lookup balance, the state walk and ordered memory consistency. Connect exported clock satisfaction to the abstract machine theorem and check all eleven production table flush projections against the Lean model.
  • Merge current upstream PCS and verifier changes normally.

Boolean circuit proofs

The adder theorems prove the modular wrapping result or exact sum including carry. Shift soundness covers amount masking, both directions, word extension and arithmetic fill, under exactly the six legal flag words.

Flock.Load.source_eq and Flock.Store.source_eq link lowering of the actual Clean sources to their artifacts. Soundness specifies the bus word and loaded value or updated cell for arbitrary satisfying assignments. Legal load flags are 0, 1, 2, 4, 5, 6; legal store flags are 0, 1, 2. Store's contiguous replacement specification exposes effective address alignment. Memory.bus_aligned_iff connects that premise to the low three bits of the bus address. Layout checks preserve 253 load and 309 store products; well formedness and completeness extend every input assignment. Binding the supplied cell to a memory table key, instruction decoding and the global table/bus argument are not yet proved by these local theorems.

Flock.Alu.source_eq links the actual Clean ALU to its checked artifact. soundness proves raw Boolean semantics for arbitrary satisfying witnesses and arbitrary flag bits; soundness_reference proves ADD/SUB, word sign extension, logic, signed/unsigned comparisons, all branch polarities and JAL/JALR for the 17 explicit legal flag words. Layout checks preserve 551 products, including the final 64 committed jump products. Completeness extends every assignment to its 335 input bits. Decoding, preparation of dt and pc4, and global next-PC binding remain outside these local theorems.

BLAKE2s Compress.soundness and Export.soundness prove RFC 7693 compression for arbitrary satisfying witnesses and finalization words 0 or 0xFFFFFFFF. Compress.lowered proves exact source linkage; addition call theorems identify bound adder artifacts. The RFC Appendix B vector is checked in the kernel. Register program printing, small Rust word helpers and port binding remain trusted.

Multiplication and division

MulDiv.mul_eq, mulh_eq and div_eq identify circuit arithmetic with the independent RV64IM M extension specification, including zero divisors, signed overflow, rounding toward zero and word sign extension. The production carry save multiplier plan is checked by kernel reduction at 64 and 128 bits; its arbitrary satisfying assignments compute the modular product. MulDivExport.Mul, Mulh and Div source theorems identify the actual Clean sources with their artifacts, soundness covers arbitrary satisfying witnesses, and completeness extends every port assignment. Division proves the integer quotient/remainder check and architectural output when bad is clear; honest hints clear bad.

Production Mul::circuit, Mulh::circuit and Div::circuit consume generated flock::clean functions. The multiplier functions use checked in step tables interpreted by a small Rust replay; surrounding gates are emitted directly. Remaining trust includes Lean runtime emission, the Rust table interpreter and call/port binding, native optimized witnesses and protocol acceptance implying artifact satisfaction.

Clock and instruction tables

Flock.Clock.*.soundness proves clock bounds, live increment and failure marking, and access ordering for the exact exported rows. Source linkage, product layouts and completeness are checked for the register, load, store, hash and EXT slot lists. Clock::builder and Clock::circuit are now crate private and support exactly these five production lists, not arbitrary slot lists. Every production caller is migrated. Flock.ExtClock.soundness proves flag bits and wrapped pointer offsets, including BASE gated b addresses; its 479 product layout and source linkage are checked.

ClassTable.tables_correct_of_clock derives C1 through C3 from exported artifact satisfaction with explicit word-to-column bindings, concludes Machine.Correct, and proves each row reads its decoded entry at its own PC. The production layouts and ordered flush plans now come from the same Clean source, as described below. Native field/coordinate interpretation, concrete port packing, EXT's separately assumed Boolean BASE column and verifier bus correspondence remain trusted; this conditional clock theorem does not itself prove the decoder or instruction bindings.

EXT field identities

ExtensionProduct.source and source_holds link the actual Clean assertion to the exact three exported degree-two identities. soundness_iff proves arbitrary field witnesses compute the cubic extension product plus the scaled old destination; Boolean accumulation selects MUL/MAC, and zero upper operand limbs give the scalar forms. witness_exists extends every assignment to all ten inputs without an honest-witness premise. Production ClassTable::identities consumes generated tables/clean.rs; the handwritten identity builder is removed and optimized native arithmetic is unchanged.

Remaining trust includes the emitter/compiler, native BusForm interpretation, logical-to-table column binding and Rust field representation/arithmetic. Boolean accumulation and zero upper scalar limbs are explicit instruction premises, not silently inferred from honest witnesses.

Integer-multiplicity bus

Clean channels separate message fields from multiplicity types, preserving existing defaults and allowing ℤ counts. The Bus modules prove exact symbolic fingerprint balance, bytecode lookup correctness, the state walk and memory consistency, including RAM/advice composition under disjoint address ranges. machine_correct and machine_correct_of_product_check compose these for abstract machine rows; the clock/table theorem above discharges C1 through C3 and PC/read-address linkage under its explicit artifact and column premises. Schwartz-Zippel error, GKR/sumcheck, PCS binding and Boolean producer bits remain outside these integer bus theorems.

Instruction table layouts and bus plans

GenerateTables.lean exports all eleven ClassTable layouts, shared aliases and ordered state, decoded bytecode, register, RAM, hash-block and EXT access tuples to production tables/clean.rs. Every caller consumes the generated functions; the handwritten allocator, flush builders, obsolete helpers and copied fixtures are removed. Coord.eval_expr, sourceTuple_eq and Spec.source_eq prove the exact exported coordinate source evaluates to the integer-multiplicity Clean interactions used by the bus theorems, for arbitrary field rows.

The existing tracing-gated circuits CLI writes the actual native table dump. checkflushes still guards native ClassSpec class order and slot lists and Columns::column's clock-port projection; those bindings are not generated by this stage. Remaining trust includes the printer/compiler, native coordinate and field interpretation, decoder and filled word bindings, Boolean producer bits and verifier bus correspondence.

A release before-and-after smoke exercises every class, both hash forms and all four EXT forms, verifies serialized real proofs and rejects false public outputs. Proof bytes and table heights are byte-identical across this cutover, with no protocol version change.

Partial recursion circuit

Rec.modulus_irreducible, Rec.card_K and Rec.extModulus_irreducible establish GF(2^64) and its cubic extension; arithmetic linkage and nonzero inverse completeness are proved. Generated rec/clean.rs supplies production table forms and identities. Row contracts cover arithmetic, bits and packing, CAST views, RFC 7693 HASH ports, Merkle paths, tree roots and statement digests. The whole word duplex model follows the deployed spongefish session seed, first instance message, digest challenges and nonce/top-bit proof of work, with explicit bounded counter and tweak/tag separation results. It is not a formal equivalence proof for Rust's byte duplex or session derivation.

Model.Call.exec_good and Model.replay_sound prove the Lean builder's operation contracts under its explicit satisfying row and public value semantics. Rec.copy_argument proves the copy consequence under its balancing hypotheses. Tracing is compile time gated and absent from ordinary builds. checkrec checks native calls, finished rows, public row order and fixed copy links for eight leanXMSS output-tree configurations and all positions of one-tier and two-tier claim-set examples, including multi-bit kind selectors and the wrap. All fifteen pass with the existing Lean model and parser. This is finite checking, not general Rust builder equivalence.

Remaining trust includes Rust field representation and arithmetic, the printer, parser and executable class/link computation, chosen session constants, which verifier calls are made, the circuit-index binding to the tier's fixed polynomial, accepted proofs implying Model.Sat, table sumcheck, HASH Flock soundness and native public value columns. Other configurations retain transcription trust. No complete recursion circuit, union soundness or Fiat Shamir security claim is made.

Upstream #607 changes proof bytes, not only the API, with a length-prefixed NARG section followed by hints. After #614, #618 and #626, the current envelopes are LVMP 16 and LVMT 17, and the tree session domain is leanvm-tree-14. Claim-set begin-bit words are absorbed before the fingerprint challenge; the verifier's message schedule and union soundness remain outside these proofs.

Upstream #611, #612, #615 and #613 are merged normally. The recursion model follows the explicit-tweak block builder call: Model.hashBlock_good proves compression under the stated finalization flag premise, Model.leafBlock_eq identifies the constant-tweak wrapper, and Model.dToHalves_good proves the CAST halves. The claim-set and canonical union machinery is not formally modeled here. The merged-tree release smoke verifies serialized leaves and 2 to 1 first/node aggregation and rejects altered outputs, reordered statements and foreign envelopes.

Upstream b094d006 is merged normally. The tracing API now selects circuits and fixed columns by positional index. Compared with dc57267d, all eight existing dumps change only session-derived seed constants in calls and public rows; rows, classes, public order and copy links are unchanged. The eleven-table dump is identical. A release smoke verifies serialized leaves, output-tree first/node aggregation, a single-tier union, a two-tier large node and its automatic wrap, and rejects false leaf outputs, reordered output statements, foreign envelopes and altered claims.

Verification

The merged Lean build, transitive axiom audit, stock leanchecker replay of all 105 source modules, imports only root and compiled module guards, checkflushes and all three deterministic Rust regeneration checks pass. The two integer-multiplicity Clean modules were also checked at the pinned fork commit. CI derives the module list mechanically and replays it sequentially, trading wall time for bounded memory without a custom kernel checker.

An actual release ALU smoke executed overflow/carry boundaries, word sign extension, signed/unsigned comparisons, logic, every branch polarity, JAL and odd-target JALR, verified an encoded leaf proof and rejected a changed public output. The permanent Flock regression proves unchanged native witnesses for all 17 legal flags and rejects false value/jump outputs, a private product, an unused flag bit and padding. Earlier release memory smoke covered every width, encoded leaf and 2 to 1 recursive proofs, false statements and misaligned traps. All eight shipped recursion configurations passed checkrec, including fixed bus links.

A release clock/EXT smoke exercised all five generated clock configurations through register, load, store, hash and all four extension forms, verified serialized real VM proofs and rejected changed public outputs. Scoped Flock regressions reject false clock steps, private products, padding and altered EXT flag/address products. The complete local release workspace suite passed for the merged clock stage under the required resource cap.

A release multiply/divide smoke exercised all thirteen RV64IM forms at zero, sign, word and overflow boundaries, compared execution to independent host arithmetic, verified a serialized real leaf proof and rejected a changed public output. Scoped Flock regressions rejected mutated multiplication bits and an incorrect quotient whose bad verdict was cleared. The merged native, haswell, AVX2, AVX512, ARM library and tracing/system allocator CLI lint checks and rustdoc passed. Local full testall was skipped at 45 GiB available; the full CI workspace suite passed.

A release EXT field smoke exercised all four forms with zero and high-bit operands and nonzero old destinations, checked host field results, verified serialized real leaf proofs and rejected altered outputs. The existing field-identity regression rejects mutated result limbs, and an executable exporter smoke rejects unsupported columns, linear shapes and coefficients. Formatting, native/haswell/AVX2/AVX512 Clippy, ARM leanvm-library Clippy with circuit tracing, tracing/system allocator CLI Clippy, rustdoc and the complete local release workspace suite pass. The broader local ARM workspace lint could not configure cross-compiled jemalloc; native ARM CI supplies that workspace coverage.

The merged clock tree passes formatting, Rust 1.97 native, AVX2 and AVX512 Clippy, Rust 1.99 haswell Clippy, ARM library Clippy with tracing enabled, tracing enabled CLI Clippy, rustdoc and the complete local release workspace suite. The previous ALU/bus stage also passed the complete CI matrix.

The EXT field and upstream spongefish integration stages, including audit repair 02bb568d, pass the complete CI matrix: Clean export and per-module kernel replay, all eight recursion builder replays, full workspace tests, ARM and x86 SIMD checks, RISC-V guests, ACT4 and benchmarks. The large multiplier plan and its export build sequentially before the remaining build, trading additional build serialization for lower concurrent proof memory use. The merged local checks above, including the complete release workspace suite, also pass.

The table-source cutover passes the complete local release workspace suite, formatting, Rust 1.97 native/AVX2/AVX512 Clippy, Rust 1.99 haswell Clippy, ARM library Clippy with tracing, tracing/system allocator CLI Clippy and rustdoc. Its executable exporter smoke rejects unsupported indices, coefficient words, column references, truncating tuples and colliding access slots, and accepts the sixteen-coordinate boundary.

The subsequent upstream merge also passes the complete local release workspace suite, the same lint and rustdoc matrix, all eight recursion builder replays, the eleven-table binding check and all three regeneration diffs. Generators explicitly use Rust's workspace edition 2024 so temporary output formatting matches checked-in consumers.

The table-source and subsequent upstream integration head dc57267d pass the complete CI matrix, including Clean export and kernel replay, native recursion and table binding replay, full workspace tests, ARM/x86 SIMD, guest linting, ACT4 and benchmarks.

For the b094d006 integration, the Lean build, Audit, stock replay of the four recursion contract modules, all three regeneration diffs, fifteen checkrec configurations, checkflushes, formatting, native/haswell/AVX2/AVX512 Clippy, ARM library Clippy with tracing, tracing/system allocator CLI Clippy and rustdoc pass. Mobile CI is re-enabled. The local release workspace suite finds upstream's failing a_tiered_first_level_and_union_stay_within_their_capacities assertion; CI's Test leg remains red until upstream #627 fixes lone-child tier aggregation. No competing capacity fix is included here.

At 7cca49c7, every CI job other than that upstream Test assertion passes, including Clean export and per-module kernel replay, all fifteen recursion replays and table bindings, Android and iOS. Test's failure is exactly the lone-child tier assertion above.

Boundaries

Theorem dependencies are only propext, Classical.choice and Quot.sound, with no admissions or native decision axiom. Lean runtime generation, Rust compilation, native gate/coordinate interpretation, slot packing and optimized Rust witnesses remain trusted. Decoder legality and filled word bindings, EXT's explicit Boolean/scalar premises, Boolean producer bits and verifier protocol correspondence are not discharged by the local circuit or conditional bus theorems. No whole VM or Flock, PCS or Fiat Shamir cryptographic security claim is made. Exact contracts and regeneration commands are in verification/circuits/README.md.

@github-actions

github-actions Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Benchmarks: base against this PR, on one runner

7cca49c merged into its base, against the base b094d00: each benchmark run in turns on one runner, base and PR 5 times each. A size is shown when it changed; a time or a peak memory when it moved the same way in every round and its median by at least 1% (the change is the median ratio, with the rounds' range).

Threads shows the named configuration; default means no thread count is encoded in the benchmark ID.

leanXMSS

benchmark threads runner measure base this PR change
aggregate-leanxmss-100-4to1-first 16 x86-64 Proving time 158.70 ms 161.65 ms +1.70% (+0.96% to +2.12%)
aggregate-leanxmss-100-2to1-node 1 x86-64 Verifying time 6.16 ms 6.39 ms +5.61% (+1.02% to +8.17%)
leanxmss-100 4 x86-64 Verifying time 3.02 ms 3.07 ms +1.20% (+0.69% to +1.67%)
aggregate-leanxmss-100-2to1-first 8 x86-64 Peak memory 886.87 MiB 897.65 MiB +1.19% (+0.30% to +1.70%)
Prover stages
benchmark threads runner base this PR change
aggregate-leanxmss-100-2to1-first 8 arm64 157.90 ms 157.83 ms -0.03% (-0.22% to +0.05%)
 ↳ build-circuit 10.25 ms 10.26 ms +0.01% (-0.73% to +0.38%)
 ↳ prove-recursion 136.32 ms 135.99 ms -0.23% (-0.51% to +0.15%)
 ↳ reduce-claims 4.02 ms 4.24 ms +3.73% (+0.17% to +6.44%)
 ↳ reduce-in-rows 1.43 ms 1.42 ms -0.12% (-2.47% to +4.81%)
 ↳ verify 5.87 ms 5.89 ms +0.36% (-0.77% to +1.27%)
aggregate-leanxmss-100-2to1-first 1 x86-64 576.56 ms 576.43 ms +0.06% (-0.05% to +1.22%)
 ↳ build-circuit 14.11 ms 14.65 ms +4.15% (+0.24% to +5.73%)
 ↳ prove-recursion 535.11 ms 534.97 ms -0.03% (-0.10% to +1.20%)
 ↳ reduce-claims 18.28 ms 18.28 ms -0.22% (-1.23% to +0.66%)
 ↳ reduce-in-rows 2.03 ms 2.07 ms +2.54% (-0.98% to +6.57%)
 ↳ verify 6.39 ms 6.45 ms +0.99% (-0.64% to +5.43%)
aggregate-leanxmss-100-2to1-first 8 x86-64 116.44 ms 117.08 ms +0.27% (-5.61% to +2.10%)
 ↳ build-circuit 13.70 ms 13.73 ms +1.24% (-1.66% to +2.04%)
 ↳ prove-recursion 88.13 ms 88.00 ms -0.12% (-9.52% to +0.23%)
 ↳ reduce-claims 5.04 ms 6.71 ms +37.49% (+1.68% to +42.31%)
 ↳ reduce-in-rows 2.14 ms 2.18 ms +1.23% (+0.60% to +4.53%)
 ↳ verify 6.43 ms 6.48 ms +1.30% (+0.38% to +1.63%)
aggregate-leanxmss-100-2to1-node 4 arm64 279.17 ms 278.05 ms -0.38% (-0.46% to -0.13%)
 ↳ build-circuit 11.33 ms 11.53 ms +1.36% (+0.53% to +2.98%)
 ↳ prove-recursion 251.00 ms 250.01 ms -0.38% (-0.51% to -0.29%)
 ↳ reduce-claims 10.46 ms 10.46 ms +0.84% (-1.85% to +2.31%)
 ↳ reduce-in-rows 1.52 ms 1.48 ms -3.39% (-4.97% to +0.47%)
aggregate-leanxmss-100-2to1-node 4 x86-64 176.74 ms 178.49 ms -2.11% (-3.11% to +4.10%)
 ↳ build-circuit 14.66 ms 13.41 ms -4.75% (-12.83% to -3.43%)
 ↳ prove-recursion 142.59 ms 146.46 ms +0.27% (-3.20% to +6.13%)
 ↳ reduce-claims 12.88 ms 11.66 ms -6.60% (-12.88% to -1.95%)
 ↳ reduce-in-rows 2.07 ms 2.11 ms -1.38% (-6.63% to +8.06%)
aggregate-leanxmss-100-2to1-node 16 x86-64 91.18 ms 93.62 ms +3.12% (-8.00% to +5.61%)
 ↳ build-circuit 15.32 ms 15.54 ms +1.52% (-1.85% to +5.28%)
 ↳ prove-recursion 59.96 ms 60.27 ms +1.08% (-12.91% to +6.42%)
 ↳ reduce-claims 8.39 ms 9.52 ms +13.66% (+4.34% to +20.64%)
 ↳ reduce-in-rows 2.31 ms 2.36 ms +2.05% (-6.18% to +8.13%)
aggregate-leanxmss-100-4to1-first 16 x86-64 158.70 ms 161.65 ms +1.70% (+0.96% to +2.12%)
 ↳ build-circuit 31.90 ms 31.01 ms -0.99% (-10.99% to +0.30%)
 ↳ prove-recursion 102.49 ms 105.31 ms +4.05% (+1.61% to +5.12%)
 ↳ reduce-claims 7.03 ms 6.93 ms -1.42% (-16.58% to +13.07%)
 ↳ reduce-in-rows 4.53 ms 4.50 ms -1.10% (-2.26% to +4.69%)
 ↳ verify 13.06 ms 13.05 ms +0.16% (-0.68% to +1.45%)
aggregate-leanxmss-100-4to1-node 16 arm64 212.23 ms 210.18 ms -0.97% (-2.77% to -0.14%)
 ↳ build-circuit 25.73 ms 25.23 ms -2.40% (-3.87% to -0.47%)
 ↳ prove-recursion 163.45 ms 162.62 ms -1.39% (-3.51% to +0.51%)
 ↳ reduce-claims 9.40 ms 9.52 ms +1.20% (-1.48% to +2.21%)
 ↳ reduce-in-rows 2.97 ms 2.95 ms -0.10% (-7.12% to +6.73%)
aggregate-leanxmss-100-4to1-node 4 x86-64 372.76 ms 374.38 ms +0.40% (-0.91% to +0.79%)
 ↳ build-circuit 33.50 ms 34.17 ms +1.29% (+0.16% to +7.71%)
 ↳ prove-recursion 303.53 ms 304.49 ms +0.27% (-0.61% to +0.64%)
 ↳ reduce-claims 20.41 ms 20.33 ms -0.91% (-7.27% to +1.27%)
 ↳ reduce-in-rows 4.46 ms 4.52 ms +0.33% (+0.10% to +5.59%)
Every result

BLAKE2s

benchmark threads runner CPU measure base this PR change
hash-50000 16 arm64 Neoverse-V2 Proving time 521.39 ms 519.56 ms -0.13% (-0.96% to +0.13%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 345.63 ms 334.59 ms -3.77% (-6.15% to +7.93%)
hash-50000 16 arm64 Neoverse-V2 Verifying time 3.16 ms 3.16 ms +0.03% (-0.37% to +0.51%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.17 ms 3.20 ms +0.74% (+0.67% to +0.88%)
blake2s-batch 16 arm64 Neoverse-V2 Time per operation 2.90 ns 2.92 ns +0.34% (-0.10% to +0.96%)
blake2s-batch 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 1.11 ns 1.12 ns +0.72% (-4.69% to +8.09%)
hash-50000 16 arm64 Neoverse-V2 Proof size 322,858 B 322,858 B 0 B (+0.00%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 322,858 B 322,858 B 0 B (+0.00%)
hash-50000 16 arm64 Neoverse-V2 Peak memory 4979.05 MiB 4955.21 MiB -0.48% (-0.53% to -0.37%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 2190.85 MiB 2196.57 MiB +0.33% (+0.18% to +0.44%)
hash-50000 16 arm64 Neoverse-V2 Peak heap 4400.80 MiB 4400.83 MiB -0.00% (-0.00% to +0.00%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 1917.32 MiB 1917.37 MiB -0.00% (-0.00% to +0.01%)
hash-50000 16 arm64 Neoverse-V2 Allocations 16,664 16,621 -0.26% (-0.26% to -0.26%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 17,312 17,270 -0.24% (-0.28% to -0.23%)
Prover stages
benchmark threads runner CPU base this PR change
hash-50000 16 arm64 Neoverse-V2 521.39 ms 519.56 ms -0.13% (-0.96% to +0.13%)
 ↳ build-witness 19.99 ms 19.93 ms -0.34% (-0.78% to +0.25%)
 ↳ commit 81.92 ms 82.61 ms +0.22% (-0.63% to +1.34%)
 ↳ execute-program 23.34 ms 23.15 ms -0.90% (-3.28% to +0.05%)
 ↳ flock-reductions 170.39 ms 170.35 ms -0.37% (-0.87% to +0.31%)
 ↳ pcs-open 187.67 ms 186.82 ms -0.75% (-1.35% to +0.51%)
 ↳ prove-bus 29.99 ms 30.08 ms +0.24% (-0.30% to +0.66%)
 ↳ prove-constraints 7.09 ms 7.08 ms +1.23% (-3.02% to +2.15%)
hash-50000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 345.63 ms 334.59 ms -3.77% (-6.15% to +7.93%)
 ↳ build-witness 22.54 ms 22.39 ms -2.23% (-5.57% to +5.29%)
 ↳ commit 47.15 ms 45.26 ms -4.46% (-9.79% to +11.85%)
 ↳ execute-program 29.69 ms 28.96 ms -1.60% (-6.27% to +5.91%)
 ↳ flock-reductions 92.86 ms 87.39 ms -5.90% (-8.56% to +10.67%)
 ↳ pcs-open 124.06 ms 118.12 ms -0.40% (-5.54% to +6.16%)
 ↳ prove-bus 20.90 ms 20.16 ms -3.56% (-6.95% to +9.06%)
 ↳ prove-constraints 8.46 ms 8.21 ms -2.91% (-7.73% to +5.52%)

Fibonacci

benchmark threads runner CPU measure base this PR change
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Proving time 820.06 ms 819.79 ms +0.28% (-0.24% to +0.37%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 498.13 ms 499.48 ms +1.10% (-3.58% to +1.46%)
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Verifying time 3.26 ms 3.25 ms +0.26% (-0.29% to +0.76%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.21 ms 3.19 ms -0.16% (-1.37% to +0.39%)
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Proof size 364,010 B 364,010 B 0 B (+0.00%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 364,010 B 364,010 B 0 B (+0.00%)
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Peak memory 7628.41 MiB 7631.81 MiB +0.04% (-0.06% to +0.13%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 3566.67 MiB 3566.81 MiB +0.07% (-0.08% to +0.09%)
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Peak heap 7049.90 MiB 7049.91 MiB -0.00% (-0.00% to +0.00%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 3307.46 MiB 3307.39 MiB -0.00% (-0.01% to +0.00%)
fibonacci-asm-2000000 16 arm64 Neoverse-V2 Allocations 11,597 11,554 -0.37% (-0.39% to -0.37%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 12,234 12,191 -0.35% (-0.38% to -0.35%)
Prover stages
benchmark threads runner CPU base this PR change
fibonacci-asm-2000000 16 arm64 Neoverse-V2 820.06 ms 819.79 ms +0.28% (-0.24% to +0.37%)
 ↳ build-witness 29.52 ms 29.44 ms +0.03% (-0.89% to +2.78%)
 ↳ commit 126.60 ms 126.67 ms +0.12% (-0.03% to +1.22%)
 ↳ execute-program 65.09 ms 65.62 ms +3.47% (-1.71% to +5.95%)
 ↳ flock-reductions 293.91 ms 294.00 ms +0.03% (-0.27% to +0.23%)
 ↳ pcs-open 234.51 ms 233.49 ms -0.28% (-0.67% to -0.19%)
 ↳ prove-bus 59.81 ms 59.69 ms -0.24% (-0.34% to +0.09%)
 ↳ prove-constraints 10.83 ms 10.83 ms +0.05% (-0.52% to +0.89%)
fibonacci-asm-2000000 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 498.13 ms 499.48 ms +1.10% (-3.58% to +1.46%)
 ↳ build-witness 37.98 ms 37.92 ms +1.02% (-0.26% to +1.96%)
 ↳ commit 70.70 ms 71.95 ms +1.78% (-1.13% to +8.42%)
 ↳ execute-program 67.49 ms 66.89 ms -0.71% (-4.31% to +1.46%)
 ↳ flock-reductions 133.24 ms 133.40 ms +0.91% (-7.56% to +4.47%)
 ↳ pcs-open 134.32 ms 134.13 ms -0.14% (-4.15% to +1.87%)
 ↳ prove-bus 36.67 ms 37.12 ms +2.11% (-4.09% to +6.84%)
 ↳ prove-constraints 13.73 ms 13.72 ms -0.08% (-3.68% to +1.81%)

Field and transpose kernels

benchmark threads runner CPU measure base this PR change
f192-inv default arm64 Neoverse-V2 Time per operation 245.04 ns 244.99 ns -0.03% (-0.58% to -0.01%)
f192-inv default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 267.47 ns 267.98 ns +0.19% (-0.33% to +0.50%)
f192-mul-latency default arm64 Neoverse-V2 Time per operation 8.04 ns 8.04 ns -0.16% (-0.65% to +0.84%)
f192-mul-latency default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 7.61 ns 7.60 ns -0.34% (-1.02% to +0.99%)
f192-mul-throughput default arm64 Neoverse-V2 Time per operation 2.94 ns 2.94 ns +0.00% (-0.14% to +0.03%)
f192-mul-throughput default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 4.49 ns 4.50 ns +0.81% (-0.60% to +25.63%)
f192-mul4-latency default arm64 Neoverse-V2 Time per operation 13.09 ns 13.15 ns +0.54% (-0.18% to +3.04%)
f192-mul4-latency default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 10.17 ns 10.17 ns -0.02% (-0.46% to +0.79%)
f192-mul4-throughput default arm64 Neoverse-V2 Time per operation 10.76 ns 10.76 ns +0.00% (-0.18% to +0.07%)
f192-mul4-throughput default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 15.75 ns 15.88 ns +0.79% (-0.48% to +11.00%)
f192-square default arm64 Neoverse-V2 Time per operation 1.70 ns 1.70 ns +0.00% (-0.12% to +0.00%)
f192-square default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 3.37 ns 3.37 ns -0.30% (-1.32% to +0.60%)
f64-inv default arm64 Neoverse-V2 Time per operation 211.62 ns 211.71 ns +0.08% (-0.10% to +0.11%)
f64-inv default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 239.86 ns 239.54 ns -0.09% (-1.58% to +0.48%)
f64-mul default arm64 Neoverse-V2 Time per operation 0.56 ns 0.56 ns -0.18% (-0.53% to +0.54%)
f64-mul default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 0.87 ns 0.87 ns -0.11% (-0.69% to +0.23%)
f64-square default arm64 Neoverse-V2 Time per operation 0.55 ns 0.55 ns +0.18% (-0.18% to +1.28%)
f64-square default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 1.09 ns 1.09 ns +0.00% (-0.37% to +1.09%)
transpose-64bytes default arm64 Neoverse-V2 Time per operation 12.00 ns 12.00 ns +0.02% (-0.02% to +0.07%)
transpose-64bytes default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 0.85 ns 0.85 ns -0.47% (-1.73% to +0.59%)
transpose-64x64 default arm64 Neoverse-V2 Time per operation 96.44 ns 96.42 ns -0.07% (-0.31% to +0.14%)
transpose-64x64 default x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 74.41 ns 73.95 ns -0.41% (-4.27% to +0.12%)

Flock

benchmark threads runner CPU measure base this PR change
flock-alu-batch-262144 16 arm64 Neoverse-V2 Proving time 51.29 ms 51.41 ms -0.30% (-2.75% to +1.53%)
flock-alu-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 29.06 ms 28.97 ms -0.20% (-13.78% to +4.67%)
flock-div-batch-262144 16 arm64 Neoverse-V2 Proving time 366.43 ms 365.55 ms -0.45% (-0.60% to +2.65%)
flock-div-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 169.95 ms 169.97 ms +0.01% (-5.69% to +0.41%)
flock-hash-batch-262144 16 arm64 Neoverse-V2 Proving time 762.39 ms 768.82 ms +0.53% (-0.31% to +1.77%)
flock-hash-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 358.41 ms 358.05 ms -0.62% (-3.42% to +2.67%)
flock-ld-batch-262144 16 arm64 Neoverse-V2 Proving time 15.74 ms 15.71 ms -0.31% (-1.01% to +0.91%)
flock-ld-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 9.68 ms 9.63 ms -0.58% (-17.56% to +22.56%)
flock-load-batch-262144 16 arm64 Neoverse-V2 Proving time 49.58 ms 49.80 ms +0.67% (-9.78% to +2.33%)
flock-load-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 28.11 ms 28.25 ms +0.50% (-14.14% to +1.15%)
flock-mul-batch-262144 16 arm64 Neoverse-V2 Proving time 187.21 ms 187.66 ms -0.08% (-0.16% to +3.61%)
flock-mul-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 89.77 ms 90.06 ms -0.03% (-6.38% to +7.09%)
flock-mulh-batch-262144 16 arm64 Neoverse-V2 Proving time 357.82 ms 359.82 ms +0.69% (-1.18% to +0.74%)
flock-mulh-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 168.24 ms 168.89 ms +0.24% (-0.79% to +0.38%)
flock-sd-batch-262144 16 arm64 Neoverse-V2 Proving time 16.40 ms 16.21 ms -0.84% (-7.42% to +0.19%)
flock-sd-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 9.89 ms 9.85 ms -0.79% (-18.98% to +22.37%)
flock-shift-batch-262144 16 arm64 Neoverse-V2 Proving time 50.14 ms 50.17 ms -0.18% (-6.18% to +0.24%)
flock-shift-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 27.53 ms 28.15 ms +2.36% (-11.97% to +11.72%)
flock-store-batch-262144 16 arm64 Neoverse-V2 Proving time 49.64 ms 49.79 ms -0.25% (-0.54% to +3.07%)
flock-store-batch-262144 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 28.25 ms 27.94 ms +0.22% (-14.23% to +12.82%)

PCS

benchmark threads runner CPU measure base this PR change
pcs-commit-22 16 arm64 Neoverse-V2 Proving time 7.54 ms 7.29 ms -2.69% (-12.49% to +0.94%)
pcs-commit-22 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 4.81 ms 4.95 ms +2.25% (-16.04% to +14.95%)
pcs-open-22 16 arm64 Neoverse-V2 Proving time 20.73 ms 20.60 ms -0.28% (-3.22% to +0.25%)
pcs-open-22 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 14.03 ms 13.86 ms +3.66% (-7.29% to +9.55%)
ntt-forward-22 16 arm64 Neoverse-V2 Time per operation 3.67 ms 3.62 ms -0.72% (-6.13% to +0.31%)
ntt-forward-22 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Time per operation 2.70 ms 2.81 ms +4.50% (-10.70% to +11.47%)

leanSPHINCS

benchmark threads runner CPU measure base this PR change
leansphincs-26 16 arm64 Neoverse-V2 Proving time 181.28 ms 181.85 ms +0.32% (-1.49% to +0.71%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 132.48 ms 138.02 ms +4.90% (-10.98% to +5.79%)
leansphincs-26 16 arm64 Neoverse-V2 Verifying time 3.31 ms 3.33 ms +0.55% (-0.62% to +1.40%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.25 ms 3.26 ms +0.93% (-3.33% to +3.22%)
leansphincs-26 16 arm64 Neoverse-V2 Proof size 316,306 B 316,306 B 0 B (+0.00%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 316,306 B 316,306 B 0 B (+0.00%)
leansphincs-26 16 arm64 Neoverse-V2 Peak memory 1739.22 MiB 1744.71 MiB +0.32% (-0.64% to +0.75%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 822.27 MiB 822.45 MiB -0.01% (-1.35% to +0.39%)
leansphincs-26 16 arm64 Neoverse-V2 Peak heap 1395.71 MiB 1395.68 MiB -0.00% (-0.01% to +0.00%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 649.96 MiB 649.89 MiB -0.01% (-0.02% to +0.01%)
leansphincs-26 16 arm64 Neoverse-V2 Allocations 25,162 25,119 -0.17% (-0.17% to -0.17%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 25,861 25,818 -0.17% (-0.17% to -0.17%)
Prover stages
benchmark threads runner CPU base this PR change
leansphincs-26 16 arm64 Neoverse-V2 181.28 ms 181.85 ms +0.32% (-1.49% to +0.71%)
 ↳ build-witness 5.71 ms 5.80 ms +0.27% (-0.80% to +3.07%)
 ↳ commit 23.83 ms 23.89 ms +0.21% (-0.13% to +1.65%)
 ↳ execute-program 11.93 ms 12.29 ms +2.56% (-1.34% to +4.21%)
 ↳ flock-reductions 62.30 ms 62.25 ms -0.09% (-6.58% to +0.88%)
 ↳ pcs-open 57.25 ms 57.61 ms +0.16% (-0.44% to +1.18%)
 ↳ prove-bus 15.15 ms 15.22 ms +0.28% (-0.10% to +0.69%)
 ↳ prove-constraints 4.20 ms 4.34 ms +2.43% (-0.19% to +6.38%)
leansphincs-26 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 132.48 ms 138.02 ms +4.90% (-10.98% to +5.79%)
 ↳ build-witness 9.43 ms 9.43 ms +0.20% (-5.05% to +3.50%)
 ↳ commit 14.87 ms 14.80 ms +3.19% (-13.62% to +10.17%)
 ↳ execute-program 13.24 ms 13.51 ms +2.35% (-1.15% to +3.79%)
 ↳ flock-reductions 37.53 ms 41.42 ms +4.23% (-16.82% to +11.88%)
 ↳ pcs-open 39.44 ms 40.74 ms +3.94% (-11.33% to +5.76%)
 ↳ prove-bus 11.77 ms 11.73 ms +0.14% (-11.43% to +10.69%)
 ↳ prove-constraints 5.24 ms 5.42 ms +5.28% (-4.40% to +6.42%)

leanXMSS

benchmark threads runner CPU measure base this PR change
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Proving time 966.79 ms 966.92 ms -0.04% (-0.25% to +0.15%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Proving time 271.00 ms 270.89 ms -0.26% (-0.38% to +0.11%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Proving time 157.90 ms 157.83 ms -0.03% (-0.22% to +0.05%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Proving time 103.41 ms 103.20 ms +0.12% (-0.55% to +0.45%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 576.56 ms 576.43 ms +0.06% (-0.05% to +1.22%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 173.35 ms 173.76 ms +1.49% (-12.52% to +3.63%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 116.44 ms 117.08 ms +0.27% (-5.61% to +2.10%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 91.80 ms 91.82 ms -0.77% (-2.61% to +3.30%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Proving time 993.17 ms 992.52 ms -0.25% (-0.36% to +0.13%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Proving time 279.17 ms 278.05 ms -0.38% (-0.46% to -0.13%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Proving time 163.20 ms 162.61 ms -0.39% (-0.65% to +0.66%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Proving time 105.76 ms 106.47 ms +0.72% (-1.70% to +4.75%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 605.36 ms 605.40 ms -0.60% (-0.86% to +0.79%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 176.74 ms 178.49 ms -2.11% (-3.11% to +4.10%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 121.57 ms 126.53 ms +1.34% (-2.84% to +9.30%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 91.18 ms 93.62 ms +3.12% (-8.00% to +5.61%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Proving time 1.89 s 1.89 s +0.07% (-0.69% to +0.30%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Proving time 518.13 ms 518.76 ms +0.05% (-0.33% to +0.46%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Proving time 301.41 ms 301.80 ms +0.17% (+0.04% to +0.58%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Proving time 193.63 ms 194.75 ms -0.50% (-0.87% to +5.18%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 1.13 s 1.13 s -0.34% (-0.67% to +0.04%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 342.43 ms 343.33 ms -0.19% (-0.39% to +1.48%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 213.91 ms 214.79 ms +1.03% (-0.19% to +1.56%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 158.70 ms 161.65 ms +1.70% (+0.96% to +2.12%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Proving time 2.06 s 2.06 s -0.21% (-0.58% to +0.55%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Proving time 563.08 ms 564.10 ms +0.18% (-0.07% to +0.50%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Proving time 325.76 ms 326.44 ms +0.13% (-0.04% to +0.25%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Proving time 212.23 ms 210.18 ms -0.97% (-2.77% to -0.14%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 1.24 s 1.24 s -0.66% (-1.20% to -0.08%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 372.76 ms 374.38 ms +0.40% (-0.91% to +0.79%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 231.02 ms 229.94 ms -0.00% (-1.53% to +0.70%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 171.55 ms 170.20 ms +1.65% (-4.72% to +3.63%)
leanxmss-100 1 arm64 Neoverse-V2 Proving time 1.78 s 1.77 s -0.23% (-0.38% to +0.05%)
leanxmss-100 4 arm64 Neoverse-V2 Proving time 474.15 ms 473.14 ms -0.10% (-0.41% to +0.11%)
leanxmss-100 8 arm64 Neoverse-V2 Proving time 267.24 ms 267.11 ms -0.10% (-0.20% to +0.38%)
leanxmss-100 16 arm64 Neoverse-V2 Proving time 162.93 ms 162.59 ms -0.20% (-2.35% to +0.30%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 1.02 s 1.02 s +0.01% (-0.39% to +0.10%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 302.17 ms 300.65 ms -0.60% (-0.79% to +0.44%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 178.48 ms 178.90 ms +0.23% (-1.60% to +0.68%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proving time 128.83 ms 126.92 ms -2.28% (-3.32% to +6.06%)
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Verifying time 4.00 ms 3.99 ms -0.39% (-0.80% to +0.68%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Verifying time 2.82 ms 2.81 ms -0.69% (-1.03% to +0.97%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Verifying time 2.74 ms 2.73 ms -0.34% (-0.92% to +0.30%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Verifying time 2.74 ms 2.72 ms -0.63% (-1.64% to -0.36%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.61 ms 3.60 ms -0.58% (-2.90% to +1.23%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 2.74 ms 2.65 ms -3.13% (-6.21% to +0.00%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 2.95 ms 3.00 ms -1.61% (-3.51% to +4.23%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.14 ms 3.13 ms +0.95% (-1.79% to +3.31%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Verifying time 6.69 ms 6.66 ms -0.45% (-1.42% to +1.35%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Verifying time 3.58 ms 3.56 ms -0.04% (-1.89% to +0.67%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Verifying time 3.17 ms 3.17 ms -0.35% (-0.94% to +0.94%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Verifying time 3.02 ms 3.00 ms -0.28% (-4.23% to -0.04%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 6.16 ms 6.39 ms +5.61% (+1.02% to +8.17%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.68 ms 3.72 ms -1.12% (-3.55% to +5.59%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.27 ms 3.32 ms +2.40% (-7.46% to +3.95%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.23 ms 3.27 ms +1.13% (-6.50% to +5.68%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Verifying time 4.85 ms 4.98 ms +2.00% (-0.49% to +3.15%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Verifying time 3.15 ms 3.16 ms +0.23% (-0.20% to +0.44%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Verifying time 3.00 ms 2.99 ms -0.44% (-1.23% to -0.14%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Verifying time 3.05 ms 3.07 ms +0.52% (-5.73% to +3.63%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 4.19 ms 4.20 ms +0.07% (-2.87% to +2.43%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.04 ms 3.06 ms +0.63% (-0.91% to +4.07%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 2.89 ms 2.87 ms -1.43% (-4.77% to +1.90%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.12 ms 3.14 ms -0.36% (-1.43% to +2.91%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Verifying time 10.40 ms 10.25 ms +1.27% (-3.60% to +3.42%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Verifying time 4.60 ms 4.60 ms +0.55% (-1.59% to +1.67%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Verifying time 3.79 ms 3.81 ms -0.04% (-1.29% to +1.29%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Verifying time 3.54 ms 3.56 ms +1.53% (-0.64% to +2.33%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 11.44 ms 11.76 ms +4.34% (-2.92% to +6.22%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 4.82 ms 4.84 ms +1.21% (-2.20% to +2.28%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.93 ms 3.92 ms -0.27% (-1.92% to +1.48%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.64 ms 3.63 ms -0.53% (-4.07% to +5.07%)
leanxmss-100 1 arm64 Neoverse-V2 Verifying time 3.06 ms 3.06 ms -0.08% (-0.50% to +0.41%)
leanxmss-100 4 arm64 Neoverse-V2 Verifying time 2.97 ms 2.97 ms -0.39% (-0.80% to +0.12%)
leanxmss-100 8 arm64 Neoverse-V2 Verifying time 3.12 ms 3.12 ms -0.04% (-1.19% to +0.93%)
leanxmss-100 16 arm64 Neoverse-V2 Verifying time 3.23 ms 3.22 ms -0.08% (-0.88% to +0.69%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.02 ms 3.03 ms +0.36% (-0.33% to +0.53%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.02 ms 3.07 ms +1.20% (+0.69% to +1.67%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.12 ms 3.14 ms +0.30% (-3.89% to +3.09%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Verifying time 3.23 ms 3.26 ms +1.92% (-1.39% to +2.85%)
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Proof size 256,859 B 256,859 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Proof size 256,859 B 256,859 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Proof size 256,859 B 256,859 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Proof size 256,859 B 256,859 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,859 B 256,859 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,859 B 256,859 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,859 B 256,859 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,859 B 256,859 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Proof size 256,795 B 256,795 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Proof size 256,795 B 256,795 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Proof size 256,795 B 256,795 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Proof size 256,795 B 256,795 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,795 B 256,795 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,795 B 256,795 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,795 B 256,795 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 256,795 B 256,795 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Proof size 281,055 B 281,055 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Proof size 281,055 B 281,055 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Proof size 281,055 B 281,055 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Proof size 281,055 B 281,055 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 281,055 B 281,055 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 281,055 B 281,055 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 281,055 B 281,055 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 281,055 B 281,055 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Proof size 281,279 B 281,279 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Proof size 281,279 B 281,279 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Proof size 281,279 B 281,279 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Proof size 281,279 B 281,279 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 281,279 B 281,279 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 281,279 B 281,279 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 281,279 B 281,279 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 281,279 B 281,279 B 0 B (+0.00%)
leanxmss-100 1 arm64 Neoverse-V2 Proof size 303,314 B 303,314 B 0 B (+0.00%)
leanxmss-100 4 arm64 Neoverse-V2 Proof size 303,314 B 303,314 B 0 B (+0.00%)
leanxmss-100 8 arm64 Neoverse-V2 Proof size 303,314 B 303,314 B 0 B (+0.00%)
leanxmss-100 16 arm64 Neoverse-V2 Proof size 303,314 B 303,314 B 0 B (+0.00%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 303,314 B 303,314 B 0 B (+0.00%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 303,314 B 303,314 B 0 B (+0.00%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 303,314 B 303,314 B 0 B (+0.00%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Proof size 303,314 B 303,314 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Peak memory 1570.32 MiB 1557.27 MiB -0.83% (-1.21% to +0.18%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Peak memory 1593.06 MiB 1593.69 MiB +0.09% (-0.09% to +0.18%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Peak memory 1628.28 MiB 1630.24 MiB +0.08% (-0.21% to +0.35%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Peak memory 1701.65 MiB 1704.37 MiB -0.01% (-0.15% to +0.20%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 834.59 MiB 837.74 MiB +0.38% (+0.38% to +0.62%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 865.50 MiB 869.88 MiB +0.51% (+0.07% to +1.03%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 886.87 MiB 897.65 MiB +1.19% (+0.30% to +1.70%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 933.58 MiB 933.13 MiB +0.15% (-0.86% to +0.31%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Peak memory 1570.57 MiB 1557.64 MiB -0.82% (-1.21% to +0.18%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Peak memory 1594.43 MiB 1594.94 MiB +0.05% (-0.09% to +0.15%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Peak memory 1629.78 MiB 1631.74 MiB +0.05% (-0.24% to +0.19%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Peak memory 1723.34 MiB 1716.94 MiB -0.44% (-0.75% to +0.12%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 834.59 MiB 837.74 MiB +0.38% (+0.38% to +0.62%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 872.26 MiB 874.66 MiB +0.34% (-0.38% to +0.73%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 908.56 MiB 909.53 MiB +0.13% (-0.38% to +0.97%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 972.04 MiB 974.34 MiB +0.11% (-0.28% to +1.58%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Peak memory 1958.52 MiB 1961.07 MiB +0.12% (-0.99% to +0.33%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Peak memory 1980.20 MiB 1982.67 MiB +0.11% (-0.01% to +0.27%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Peak memory 2018.30 MiB 2019.41 MiB +0.07% (-0.11% to +0.10%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Peak memory 2111.79 MiB 2109.42 MiB -0.16% (-0.25% to +0.56%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1020.59 MiB 1023.75 MiB +0.31% (+0.31% to +0.53%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1057.38 MiB 1062.24 MiB +0.52% (-0.01% to +0.83%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1086.94 MiB 1086.79 MiB -0.04% (-0.24% to +1.01%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1130.96 MiB 1133.21 MiB +0.18% (-0.10% to +1.19%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Peak memory 1959.05 MiB 1961.45 MiB +0.01% (-0.98% to +0.31%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Peak memory 1981.15 MiB 1983.80 MiB +0.10% (+0.01% to +0.24%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Peak memory 2023.70 MiB 2023.54 MiB +0.07% (-0.12% to +0.22%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Peak memory 2122.84 MiB 2128.32 MiB +0.15% (-0.18% to +0.86%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1046.59 MiB 1049.75 MiB +0.30% (-0.65% to +0.33%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1070.62 MiB 1071.83 MiB +0.09% (-0.06% to +0.37%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1102.86 MiB 1105.66 MiB +0.39% (-0.11% to +0.65%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 1169.77 MiB 1170.36 MiB +0.00% (-0.54% to +1.04%)
leanxmss-100 1 arm64 Neoverse-V2 Peak memory 1394.51 MiB 1397.05 MiB +0.18% (+0.16% to +0.19%)
leanxmss-100 4 arm64 Neoverse-V2 Peak memory 1417.66 MiB 1421.80 MiB +0.17% (+0.06% to +0.42%)
leanxmss-100 8 arm64 Neoverse-V2 Peak memory 1456.68 MiB 1461.36 MiB +0.19% (-0.16% to +0.46%)
leanxmss-100 16 arm64 Neoverse-V2 Peak memory 1516.96 MiB 1522.09 MiB +0.12% (-0.00% to +0.34%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 646.60 MiB 649.49 MiB +0.45% (-0.13% to +0.53%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 667.45 MiB 669.84 MiB +0.36% (+0.14% to +1.19%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 688.51 MiB 690.46 MiB +0.36% (+0.22% to +0.70%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak memory 713.05 MiB 718.90 MiB +0.72% (+0.31% to +1.39%)
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Peak heap 600.60 MiB 600.60 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Peak heap 600.60 MiB 600.60 MiB -0.00% (-0.00% to +0.00%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Peak heap 600.47 MiB 600.53 MiB +0.01% (-0.00% to +0.01%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Peak heap 600.46 MiB 600.52 MiB +0.01% (-0.01% to +0.02%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 318.89 MiB 318.89 MiB -0.00% (-0.00% to -0.00%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 318.94 MiB 318.89 MiB -0.00% (-0.05% to +0.06%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 318.90 MiB 318.95 MiB -0.00% (-0.05% to +0.03%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 319.03 MiB 318.98 MiB +0.01% (-0.07% to +0.03%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Peak heap 600.32 MiB 600.32 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Peak heap 600.30 MiB 600.30 MiB -0.00% (-0.01% to +0.01%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Peak heap 600.23 MiB 600.22 MiB -0.00% (-0.01% to +0.00%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Peak heap 600.28 MiB 600.21 MiB -0.01% (-0.02% to +0.01%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 318.60 MiB 318.60 MiB -0.00% (-0.00% to -0.00%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 318.62 MiB 318.63 MiB +0.00% (-0.01% to +0.05%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 318.60 MiB 318.61 MiB -0.00% (-0.04% to +0.04%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 318.71 MiB 318.67 MiB -0.01% (-0.02% to -0.00%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Peak heap 1201.06 MiB 1201.06 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Peak heap 1201.04 MiB 1201.04 MiB +0.00% (-0.00% to +0.00%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Peak heap 1200.93 MiB 1200.94 MiB +0.00% (-0.01% to +0.00%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Peak heap 1200.91 MiB 1200.92 MiB +0.00% (-0.00% to +0.01%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 637.68 MiB 637.68 MiB -0.00% (-0.00% to -0.00%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 637.69 MiB 637.73 MiB +0.00% (-0.02% to +0.02%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 637.63 MiB 637.57 MiB -0.01% (-0.03% to +0.01%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 637.89 MiB 637.76 MiB -0.01% (-0.05% to +0.03%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Peak heap 1200.58 MiB 1200.58 MiB +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Peak heap 1200.56 MiB 1200.57 MiB +0.00% (-0.00% to +0.00%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Peak heap 1200.47 MiB 1200.46 MiB -0.00% (-0.01% to +0.00%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Peak heap 1200.49 MiB 1200.49 MiB +0.00% (-0.01% to +0.00%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 637.21 MiB 637.21 MiB -0.00% (-0.00% to -0.00%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 637.26 MiB 637.21 MiB -0.00% (-0.02% to +0.01%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 637.11 MiB 637.10 MiB -0.00% (-0.02% to +0.01%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 637.20 MiB 637.24 MiB -0.00% (-0.01% to +0.02%)
leanxmss-100 1 arm64 Neoverse-V2 Peak heap 1202.03 MiB 1202.03 MiB -0.00% (-0.00% to -0.00%)
leanxmss-100 4 arm64 Neoverse-V2 Peak heap 1202.07 MiB 1202.09 MiB +0.00% (-0.00% to +0.01%)
leanxmss-100 8 arm64 Neoverse-V2 Peak heap 1201.91 MiB 1201.87 MiB +0.00% (-0.01% to +0.01%)
leanxmss-100 16 arm64 Neoverse-V2 Peak heap 1201.76 MiB 1201.71 MiB -0.00% (-0.01% to +0.00%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 557.78 MiB 557.78 MiB -0.00% (-0.00% to -0.00%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 557.82 MiB 557.85 MiB +0.00% (-0.00% to +0.02%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 557.97 MiB 557.94 MiB -0.01% (-0.02% to +0.01%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Peak heap 558.07 MiB 558.05 MiB -0.00% (-0.03% to +0.01%)
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 Allocations 16,731 16,636 -0.57% (-0.57% to -0.57%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 Allocations 16,857 16,762 -0.56% (-0.56% to -0.56%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 Allocations 17,001 16,906 -0.56% (-0.56% to -0.56%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 Allocations 17,289 17,194 -0.55% (-0.55% to -0.55%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 16,833 16,738 -0.56% (-0.56% to -0.56%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 16,962 16,867 -0.56% (-0.56% to -0.56%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 17,110 17,015 -0.56% (-0.56% to -0.56%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 17,406 17,311 -0.55% (-0.55% to -0.55%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 Allocations 20,452 20,435 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 Allocations 20,578 20,561 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 Allocations 20,722 20,705 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 Allocations 21,010 20,993 -0.08% (-0.20% to -0.08%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 20,546 20,529 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 20,675 20,658 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 20,823 20,806 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 21,119 21,102 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 Allocations 28,650 28,465 -0.65% (-0.65% to -0.65%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 Allocations 28,788 28,603 -0.64% (-0.64% to -0.64%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 Allocations 28,972 28,787 -0.64% (-0.64% to -0.64%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 Allocations 29,292 29,107 -0.63% (-0.69% to -0.63%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 28,796 28,611 -0.64% (-0.64% to -0.64%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 28,937 28,752 -0.64% (-0.64% to -0.64%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 29,125 28,940 -0.64% (-0.64% to -0.64%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 29,453 29,268 -0.63% (-0.63% to -0.63%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 Allocations 35,457 35,428 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 Allocations 35,595 35,566 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 Allocations 35,779 35,750 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 Allocations 36,099 36,070 -0.08% (-0.08% to -0.01%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 35,603 35,574 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 35,744 35,715 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 35,932 35,903 -0.08% (-0.08% to -0.08%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 36,260 36,231 -0.08% (-0.09% to -0.08%)
leanxmss-100 1 arm64 Neoverse-V2 Allocations 24,798 24,755 -0.17% (-0.17% to -0.17%)
leanxmss-100 4 arm64 Neoverse-V2 Allocations 25,016 24,973 -0.17% (-0.17% to -0.17%)
leanxmss-100 8 arm64 Neoverse-V2 Allocations 25,252 25,209 -0.17% (-0.17% to -0.17%)
leanxmss-100 16 arm64 Neoverse-V2 Allocations 25,724 25,681 -0.17% (-0.17% to -0.17%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 25,316 25,273 -0.17% (-0.17% to -0.17%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 25,571 25,528 -0.17% (-0.17% to -0.17%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 25,855 25,812 -0.17% (-0.17% to -0.16%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N Allocations 26,423 26,380 -0.16% (-0.17% to -0.16%)
Prover stages
benchmark threads runner CPU base this PR change
aggregate-leanxmss-100-2to1-first 1 arm64 Neoverse-V2 966.79 ms 966.92 ms -0.04% (-0.25% to +0.15%)
 ↳ build-circuit 12.31 ms 12.31 ms +0.09% (-0.60% to +0.42%)
 ↳ prove-recursion 931.32 ms 931.45 ms -0.06% (-0.29% to +0.16%)
 ↳ reduce-claims 15.77 ms 15.83 ms +0.35% (-2.34% to +2.00%)
 ↳ reduce-in-rows 1.38 ms 1.39 ms +0.40% (-0.87% to +4.47%)
 ↳ verify 5.86 ms 5.87 ms +0.33% (-1.07% to +1.22%)
aggregate-leanxmss-100-2to1-first 4 arm64 Neoverse-V2 271.00 ms 270.89 ms -0.26% (-0.38% to +0.11%)
 ↳ build-circuit 10.53 ms 10.59 ms +0.38% (-0.10% to +1.48%)
 ↳ prove-recursion 247.98 ms 247.61 ms -0.34% (-0.46% to +0.06%)
 ↳ reduce-claims 5.34 ms 5.39 ms +2.14% (-1.80% to +3.93%)
 ↳ reduce-in-rows 1.46 ms 1.45 ms -0.39% (-2.95% to +2.91%)
 ↳ verify 5.71 ms 5.73 ms +0.18% (-0.32% to +0.90%)
aggregate-leanxmss-100-2to1-first 8 arm64 Neoverse-V2 157.90 ms 157.83 ms -0.03% (-0.22% to +0.05%)
 ↳ build-circuit 10.25 ms 10.26 ms +0.01% (-0.73% to +0.38%)
 ↳ prove-recursion 136.32 ms 135.99 ms -0.23% (-0.51% to +0.15%)
 ↳ reduce-claims 4.02 ms 4.24 ms +3.73% (+0.17% to +6.44%)
 ↳ reduce-in-rows 1.43 ms 1.42 ms -0.12% (-2.47% to +4.81%)
 ↳ verify 5.87 ms 5.89 ms +0.36% (-0.77% to +1.27%)
aggregate-leanxmss-100-2to1-first 16 arm64 Neoverse-V2 103.41 ms 103.20 ms +0.12% (-0.55% to +0.45%)
 ↳ build-circuit 10.17 ms 10.15 ms +0.03% (-2.10% to +0.40%)
 ↳ prove-recursion 81.45 ms 81.61 ms +0.20% (-1.00% to +0.58%)
 ↳ reduce-claims 3.86 ms 3.90 ms +0.92% (-6.07% to +10.60%)
 ↳ reduce-in-rows 1.44 ms 1.42 ms -0.78% (-1.86% to +0.32%)
 ↳ verify 6.22 ms 6.22 ms +0.08% (-0.40% to +0.54%)
aggregate-leanxmss-100-2to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N 576.56 ms 576.43 ms +0.06% (-0.05% to +1.22%)
 ↳ build-circuit 14.11 ms 14.65 ms +4.15% (+0.24% to +5.73%)
 ↳ prove-recursion 535.11 ms 534.97 ms -0.03% (-0.10% to +1.20%)
 ↳ reduce-claims 18.28 ms 18.28 ms -0.22% (-1.23% to +0.66%)
 ↳ reduce-in-rows 2.03 ms 2.07 ms +2.54% (-0.98% to +6.57%)
 ↳ verify 6.39 ms 6.45 ms +0.99% (-0.64% to +5.43%)
aggregate-leanxmss-100-2to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N 173.35 ms 173.76 ms +1.49% (-12.52% to +3.63%)
 ↳ build-circuit 13.84 ms 13.35 ms -2.83% (-8.99% to +3.07%)
 ↳ prove-recursion 143.95 ms 144.13 ms +2.38% (-13.11% to +4.04%)
 ↳ reduce-claims 7.20 ms 7.08 ms -3.50% (-16.16% to +12.34%)
 ↳ reduce-in-rows 2.11 ms 2.04 ms -2.97% (-6.14% to +6.38%)
 ↳ verify 5.99 ms 6.08 ms +0.19% (-5.86% to +5.82%)
aggregate-leanxmss-100-2to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N 116.44 ms 117.08 ms +0.27% (-5.61% to +2.10%)
 ↳ build-circuit 13.70 ms 13.73 ms +1.24% (-1.66% to +2.04%)
 ↳ prove-recursion 88.13 ms 88.00 ms -0.12% (-9.52% to +0.23%)
 ↳ reduce-claims 5.04 ms 6.71 ms +37.49% (+1.68% to +42.31%)
 ↳ reduce-in-rows 2.14 ms 2.18 ms +1.23% (+0.60% to +4.53%)
 ↳ verify 6.43 ms 6.48 ms +1.30% (+0.38% to +1.63%)
aggregate-leanxmss-100-2to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 91.80 ms 91.82 ms -0.77% (-2.61% to +3.30%)
 ↳ build-circuit 14.41 ms 14.56 ms +0.20% (-2.22% to +3.91%)
 ↳ prove-recursion 60.96 ms 61.09 ms +0.13% (-2.94% to +4.46%)
 ↳ reduce-claims 7.20 ms 7.17 ms -5.13% (-30.07% to +5.06%)
 ↳ reduce-in-rows 2.23 ms 2.22 ms -0.33% (-5.15% to +3.25%)
 ↳ verify 7.04 ms 6.96 ms -2.12% (-4.15% to +5.02%)
aggregate-leanxmss-100-2to1-node 1 arm64 Neoverse-V2 993.17 ms 992.52 ms -0.25% (-0.36% to +0.13%)
 ↳ build-circuit 12.26 ms 12.19 ms -0.50% (-1.00% to -0.12%)
 ↳ prove-recursion 943.15 ms 942.28 ms -0.29% (-0.37% to +0.13%)
 ↳ reduce-claims 30.82 ms 30.84 ms -0.05% (-0.24% to +1.18%)
 ↳ reduce-in-rows 1.49 ms 1.46 ms -2.04% (-2.84% to +2.33%)
aggregate-leanxmss-100-2to1-node 4 arm64 Neoverse-V2 279.17 ms 278.05 ms -0.38% (-0.46% to -0.13%)
 ↳ build-circuit 11.33 ms 11.53 ms +1.36% (+0.53% to +2.98%)
 ↳ prove-recursion 251.00 ms 250.01 ms -0.38% (-0.51% to -0.29%)
 ↳ reduce-claims 10.46 ms 10.46 ms +0.84% (-1.85% to +2.31%)
 ↳ reduce-in-rows 1.52 ms 1.48 ms -3.39% (-4.97% to +0.47%)
aggregate-leanxmss-100-2to1-node 8 arm64 Neoverse-V2 163.20 ms 162.61 ms -0.39% (-0.65% to +0.66%)
 ↳ build-circuit 11.25 ms 11.29 ms +0.38% (-1.36% to +3.61%)
 ↳ prove-recursion 138.15 ms 137.60 ms -0.40% (-0.59% to +0.13%)
 ↳ reduce-claims 7.61 ms 7.74 ms +1.72% (-3.57% to +4.80%)
 ↳ reduce-in-rows 1.48 ms 1.47 ms -0.01% (-2.90% to +4.43%)
aggregate-leanxmss-100-2to1-node 16 arm64 Neoverse-V2 105.76 ms 106.47 ms +0.72% (-1.70% to +4.75%)
 ↳ build-circuit 11.19 ms 11.23 ms +0.55% (-3.51% to +1.51%)
 ↳ prove-recursion 82.10 ms 82.53 ms +0.53% (-1.18% to +5.75%)
 ↳ reduce-claims 6.47 ms 6.68 ms +2.22% (-2.98% to +7.11%)
 ↳ reduce-in-rows 1.51 ms 1.49 ms -0.44% (-4.56% to +1.96%)
aggregate-leanxmss-100-2to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N 605.36 ms 605.40 ms -0.60% (-0.86% to +0.79%)
 ↳ build-circuit 15.02 ms 14.98 ms +0.86% (-6.73% to +8.01%)
 ↳ prove-recursion 547.94 ms 547.07 ms -0.42% (-1.09% to +0.74%)
 ↳ reduce-claims 34.08 ms 34.01 ms +0.19% (-0.96% to +1.91%)
 ↳ reduce-in-rows 2.03 ms 2.09 ms +3.11% (-0.73% to +4.24%)
aggregate-leanxmss-100-2to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N 176.74 ms 178.49 ms -2.11% (-3.11% to +4.10%)
 ↳ build-circuit 14.66 ms 13.41 ms -4.75% (-12.83% to -3.43%)
 ↳ prove-recursion 142.59 ms 146.46 ms +0.27% (-3.20% to +6.13%)
 ↳ reduce-claims 12.88 ms 11.66 ms -6.60% (-12.88% to -1.95%)
 ↳ reduce-in-rows 2.07 ms 2.11 ms -1.38% (-6.63% to +8.06%)
aggregate-leanxmss-100-2to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N 121.57 ms 126.53 ms +1.34% (-2.84% to +9.30%)
 ↳ build-circuit 15.09 ms 14.90 ms -1.79% (-2.67% to +5.77%)
 ↳ prove-recursion 89.12 ms 94.07 ms +3.00% (-0.03% to +10.89%)
 ↳ reduce-claims 10.57 ms 10.26 ms -7.23% (-23.93% to +15.65%)
 ↳ reduce-in-rows 2.19 ms 2.17 ms -2.21% (-4.58% to +4.17%)
aggregate-leanxmss-100-2to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 91.18 ms 93.62 ms +3.12% (-8.00% to +5.61%)
 ↳ build-circuit 15.32 ms 15.54 ms +1.52% (-1.85% to +5.28%)
 ↳ prove-recursion 59.96 ms 60.27 ms +1.08% (-12.91% to +6.42%)
 ↳ reduce-claims 8.39 ms 9.52 ms +13.66% (+4.34% to +20.64%)
 ↳ reduce-in-rows 2.31 ms 2.36 ms +2.05% (-6.18% to +8.13%)
aggregate-leanxmss-100-4to1-first 1 arm64 Neoverse-V2 1.89 s 1.89 s +0.07% (-0.69% to +0.30%)
 ↳ build-circuit 25.44 ms 25.94 ms +0.27% (-1.49% to +2.95%)
 ↳ prove-recursion 1.83 s 1.83 s +0.01% (-0.65% to +0.25%)
 ↳ reduce-claims 21.03 ms 21.13 ms +0.40% (-0.23% to +2.53%)
 ↳ reduce-in-rows 2.74 ms 2.79 ms -0.69% (-2.56% to +3.70%)
 ↳ verify 11.65 ms 11.68 ms +0.26% (-5.03% to +0.96%)
aggregate-leanxmss-100-4to1-first 4 arm64 Neoverse-V2 518.13 ms 518.76 ms +0.05% (-0.33% to +0.46%)
 ↳ build-circuit 21.45 ms 21.38 ms -0.31% (-0.48% to +0.34%)
 ↳ prove-recursion 475.93 ms 476.47 ms +0.04% (-0.28% to +0.43%)
 ↳ reduce-claims 6.80 ms 6.85 ms +1.25% (-5.45% to +1.44%)
 ↳ reduce-in-rows 2.80 ms 2.77 ms +0.74% (-3.77% to +2.67%)
 ↳ verify 11.23 ms 11.28 ms +0.30% (+0.13% to +0.67%)
aggregate-leanxmss-100-4to1-first 8 arm64 Neoverse-V2 301.41 ms 301.80 ms +0.17% (+0.04% to +0.58%)
 ↳ build-circuit 21.06 ms 21.14 ms +0.39% (+0.35% to +1.31%)
 ↳ prove-recursion 260.46 ms 260.84 ms +0.16% (-0.05% to +0.55%)
 ↳ reduce-claims 5.25 ms 5.34 ms +1.73% (-2.61% to +3.74%)
 ↳ reduce-in-rows 2.83 ms 2.82 ms -0.19% (-1.01% to +0.05%)
 ↳ verify 11.62 ms 11.63 ms -0.01% (-0.12% to +0.40%)
aggregate-leanxmss-100-4to1-first 16 arm64 Neoverse-V2 193.63 ms 194.75 ms -0.50% (-0.87% to +5.18%)
 ↳ build-circuit 21.47 ms 21.42 ms +0.75% (-7.75% to +15.66%)
 ↳ prove-recursion 151.96 ms 153.03 ms +0.50% (-1.29% to +2.99%)
 ↳ reduce-claims 4.68 ms 4.51 ms -4.23% (-7.90% to +11.45%)
 ↳ reduce-in-rows 2.86 ms 2.84 ms +0.59% (-3.90% to +14.68%)
 ↳ verify 12.52 ms 12.49 ms +0.28% (-2.94% to +9.23%)
aggregate-leanxmss-100-4to1-first 1 x86-64 INTEL(R) XEON(R) GOLD 6548N 1.13 s 1.13 s -0.34% (-0.67% to +0.04%)
 ↳ build-circuit 32.16 ms 32.01 ms -0.45% (-2.93% to +4.47%)
 ↳ prove-recursion 1.06 s 1.05 s -0.32% (-0.88% to +0.05%)
 ↳ reduce-claims 25.94 ms 25.92 ms +0.01% (-0.59% to +0.59%)
 ↳ reduce-in-rows 4.31 ms 4.33 ms -0.53% (-2.03% to +3.31%)
 ↳ verify 12.19 ms 12.32 ms +0.91% (-0.08% to +1.36%)
aggregate-leanxmss-100-4to1-first 4 x86-64 INTEL(R) XEON(R) GOLD 6548N 342.43 ms 343.33 ms -0.19% (-0.39% to +1.48%)
 ↳ build-circuit 29.31 ms 29.57 ms +0.88% (-3.81% to +2.45%)
 ↳ prove-recursion 288.27 ms 288.31 ms +0.01% (-0.58% to +1.43%)
 ↳ reduce-claims 8.63 ms 8.90 ms +5.20% (-14.20% to +9.55%)
 ↳ reduce-in-rows 4.24 ms 4.28 ms +1.12% (-0.23% to +3.26%)
 ↳ verify 11.92 ms 11.98 ms +0.50% (-0.91% to +2.23%)
aggregate-leanxmss-100-4to1-first 8 x86-64 INTEL(R) XEON(R) GOLD 6548N 213.91 ms 214.79 ms +1.03% (-0.19% to +1.56%)
 ↳ build-circuit 29.26 ms 29.86 ms +1.11% (-1.53% to +5.30%)
 ↳ prove-recursion 160.38 ms 160.63 ms +0.15% (-0.08% to +1.51%)
 ↳ reduce-claims 7.30 ms 7.32 ms -0.90% (-13.50% to +28.66%)
 ↳ reduce-in-rows 4.33 ms 4.39 ms +1.21% (-1.59% to +2.12%)
 ↳ verify 12.03 ms 12.17 ms +1.17% (-0.62% to +1.57%)
aggregate-leanxmss-100-4to1-first 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 158.70 ms 161.65 ms +1.70% (+0.96% to +2.12%)
 ↳ build-circuit 31.90 ms 31.01 ms -0.99% (-10.99% to +0.30%)
 ↳ prove-recursion 102.49 ms 105.31 ms +4.05% (+1.61% to +5.12%)
 ↳ reduce-claims 7.03 ms 6.93 ms -1.42% (-16.58% to +13.07%)
 ↳ reduce-in-rows 4.53 ms 4.50 ms -1.10% (-2.26% to +4.69%)
 ↳ verify 13.06 ms 13.05 ms +0.16% (-0.68% to +1.45%)
aggregate-leanxmss-100-4to1-node 1 arm64 Neoverse-V2 2.06 s 2.06 s -0.21% (-0.58% to +0.55%)
 ↳ build-circuit 29.62 ms 29.53 ms -0.16% (-1.39% to +0.96%)
 ↳ prove-recursion 1.96 s 1.96 s -0.22% (-0.59% to +0.53%)
 ↳ reduce-claims 55.87 ms 55.92 ms +0.19% (-0.50% to +0.81%)
 ↳ reduce-in-rows 2.91 ms 2.92 ms +0.44% (+0.06% to +6.09%)
aggregate-leanxmss-100-4to1-node 4 arm64 Neoverse-V2 563.08 ms 564.10 ms +0.18% (-0.07% to +0.50%)
 ↳ build-circuit 25.43 ms 25.53 ms +0.24% (-0.31% to +2.51%)
 ↳ prove-recursion 506.52 ms 507.45 ms +0.21% (-0.04% to +0.40%)
 ↳ reduce-claims 17.25 ms 17.13 ms -0.42% (-1.12% to +0.49%)
 ↳ reduce-in-rows 2.94 ms 2.95 ms +0.01% (-2.35% to +2.39%)
aggregate-leanxmss-100-4to1-node 8 arm64 Neoverse-V2 325.76 ms 326.44 ms +0.13% (-0.04% to +0.25%)
 ↳ build-circuit 25.00 ms 24.95 ms +0.04% (-1.05% to +0.87%)
 ↳ prove-recursion 275.55 ms 276.45 ms +0.12% (-0.09% to +0.38%)
 ↳ reduce-claims 12.09 ms 11.99 ms -0.64% (-1.37% to +1.51%)
 ↳ reduce-in-rows 3.01 ms 3.02 ms +0.03% (-1.25% to +2.37%)
aggregate-leanxmss-100-4to1-node 16 arm64 Neoverse-V2 212.23 ms 210.18 ms -0.97% (-2.77% to -0.14%)
 ↳ build-circuit 25.73 ms 25.23 ms -2.40% (-3.87% to -0.47%)
 ↳ prove-recursion 163.45 ms 162.62 ms -1.39% (-3.51% to +0.51%)
 ↳ reduce-claims 9.40 ms 9.52 ms +1.20% (-1.48% to +2.21%)
 ↳ reduce-in-rows 2.97 ms 2.95 ms -0.10% (-7.12% to +6.73%)
aggregate-leanxmss-100-4to1-node 1 x86-64 INTEL(R) XEON(R) GOLD 6548N 1.24 s 1.24 s -0.66% (-1.20% to -0.08%)
 ↳ build-circuit 37.30 ms 37.32 ms +1.28% (-2.26% to +3.57%)
 ↳ prove-recursion 1.12 s 1.11 s -0.67% (-1.14% to -0.10%)
 ↳ reduce-claims 65.16 ms 65.16 ms -0.00% (-8.33% to +0.65%)
 ↳ reduce-in-rows 4.30 ms 4.30 ms +0.06% (-8.21% to +0.83%)
aggregate-leanxmss-100-4to1-node 4 x86-64 INTEL(R) XEON(R) GOLD 6548N 372.76 ms 374.38 ms +0.40% (-0.91% to +0.79%)
 ↳ build-circuit 33.50 ms 34.17 ms +1.29% (+0.16% to +7.71%)
 ↳ prove-recursion 303.53 ms 304.49 ms +0.27% (-0.61% to +0.64%)
 ↳ reduce-claims 20.41 ms 20.33 ms -0.91% (-7.27% to +1.27%)
 ↳ reduce-in-rows 4.46 ms 4.52 ms +0.33% (+0.10% to +5.59%)
aggregate-leanxmss-100-4to1-node 8 x86-64 INTEL(R) XEON(R) GOLD 6548N 231.02 ms 229.94 ms -0.00% (-1.53% to +0.70%)
 ↳ build-circuit 33.94 ms 33.57 ms -1.13% (-4.18% to +2.25%)
 ↳ prove-recursion 168.15 ms 167.96 ms +0.11% (-0.73% to +0.27%)
 ↳ reduce-claims 13.54 ms 13.83 ms +0.40% (-10.49% to +4.07%)
 ↳ reduce-in-rows 4.71 ms 4.68 ms -0.28% (-1.71% to +0.82%)
aggregate-leanxmss-100-4to1-node 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 171.55 ms 170.20 ms +1.65% (-4.72% to +3.63%)
 ↳ build-circuit 36.18 ms 35.91 ms -0.74% (-8.76% to +0.44%)
 ↳ prove-recursion 107.66 ms 107.46 ms +0.86% (-6.07% to +9.38%)
 ↳ reduce-claims 12.54 ms 12.03 ms -1.94% (-22.30% to +13.17%)
 ↳ reduce-in-rows 4.78 ms 4.73 ms -0.61% (-3.19% to +1.90%)
leanxmss-100 1 arm64 Neoverse-V2 1.78 s 1.77 s -0.23% (-0.38% to +0.05%)
 ↳ build-witness 46.01 ms 46.26 ms +0.17% (-0.30% to +0.99%)
 ↳ commit 294.84 ms 294.68 ms +0.25% (-1.07% to +0.43%)
 ↳ execute-program 10.51 ms 10.16 ms -0.65% (-3.73% to +0.75%)
 ↳ flock-reductions 642.06 ms 642.12 ms -0.11% (-0.48% to +0.14%)
 ↳ pcs-open 636.70 ms 634.00 ms -0.33% (-0.81% to -0.06%)
 ↳ prove-bus 131.34 ms 131.47 ms +0.08% (-0.40% to +0.37%)
 ↳ prove-constraints 14.23 ms 14.24 ms +0.01% (-6.68% to +1.75%)
leanxmss-100 4 arm64 Neoverse-V2 474.15 ms 473.14 ms -0.10% (-0.41% to +0.11%)
 ↳ build-witness 12.81 ms 12.80 ms -0.09% (-0.27% to +0.94%)
 ↳ commit 74.80 ms 74.59 ms -0.31% (-0.44% to +0.42%)
 ↳ execute-program 10.07 ms 10.39 ms +3.23% (-1.02% to +4.16%)
 ↳ flock-reductions 168.49 ms 168.50 ms -0.20% (-0.28% to +0.23%)
 ↳ pcs-open 166.75 ms 165.96 ms -0.35% (-0.79% to -0.05%)
 ↳ prove-bus 35.44 ms 35.41 ms -0.09% (-0.29% to -0.06%)
 ↳ prove-constraints 5.46 ms 5.48 ms +0.51% (-0.80% to +1.35%)
leanxmss-100 8 arm64 Neoverse-V2 267.24 ms 267.11 ms -0.10% (-0.20% to +0.38%)
 ↳ build-witness 7.54 ms 7.57 ms +0.31% (-0.56% to +1.23%)
 ↳ commit 38.52 ms 38.70 ms +0.45% (-0.43% to +0.90%)
 ↳ execute-program 10.36 ms 10.49 ms +0.69% (-2.44% to +4.41%)
 ↳ flock-reductions 94.14 ms 93.96 ms -0.19% (-0.52% to +0.46%)
 ↳ pcs-open 91.45 ms 91.30 ms -0.15% (-0.50% to +0.02%)
 ↳ prove-bus 20.77 ms 20.76 ms -0.11% (-0.28% to +0.38%)
 ↳ prove-constraints 4.29 ms 4.31 ms +0.78% (-0.25% to +1.68%)
leanxmss-100 16 arm64 Neoverse-V2 162.93 ms 162.59 ms -0.20% (-2.35% to +0.30%)
 ↳ build-witness 4.79 ms 4.80 ms +0.07% (-0.82% to +2.39%)
 ↳ commit 20.28 ms 20.39 ms +0.53% (-0.19% to +0.98%)
 ↳ execute-program 10.23 ms 10.15 ms -0.58% (-3.54% to +0.54%)
 ↳ flock-reductions 56.67 ms 56.68 ms +0.01% (-5.67% to +0.06%)
 ↳ pcs-open 53.41 ms 53.12 ms -0.36% (-4.89% to +1.48%)
 ↳ prove-bus 13.37 ms 13.37 ms +0.12% (-0.29% to +0.55%)
 ↳ prove-constraints 3.88 ms 3.88 ms -0.13% (-3.29% to +5.14%)
leanxmss-100 1 x86-64 INTEL(R) XEON(R) GOLD 6548N 1.02 s 1.02 s +0.01% (-0.39% to +0.10%)
 ↳ build-witness 68.28 ms 68.13 ms -0.41% (-0.89% to +0.50%)
 ↳ commit 183.79 ms 183.71 ms +0.07% (-1.33% to +0.99%)
 ↳ execute-program 12.16 ms 12.24 ms -1.18% (-4.93% to +1.97%)
 ↳ flock-reductions 301.09 ms 301.11 ms -0.31% (-0.62% to +0.63%)
 ↳ pcs-open 352.62 ms 352.86 ms +0.16% (-0.89% to +1.05%)
 ↳ prove-bus 80.18 ms 80.06 ms -0.10% (-3.15% to -0.05%)
 ↳ prove-constraints 18.67 ms 18.61 ms -0.30% (-2.96% to +1.21%)
leanxmss-100 4 x86-64 INTEL(R) XEON(R) GOLD 6548N 302.17 ms 300.65 ms -0.60% (-0.79% to +0.44%)
 ↳ build-witness 19.47 ms 19.27 ms -1.18% (-2.79% to +0.33%)
 ↳ commit 47.54 ms 47.69 ms +0.50% (-0.77% to +3.42%)
 ↳ execute-program 12.60 ms 12.57 ms -0.28% (-4.18% to +4.05%)
 ↳ flock-reductions 86.85 ms 86.55 ms -0.31% (-1.24% to +0.68%)
 ↳ pcs-open 103.30 ms 102.12 ms -0.27% (-2.33% to +0.18%)
 ↳ prove-bus 24.53 ms 24.60 ms +0.10% (-1.40% to +0.91%)
 ↳ prove-constraints 7.37 ms 7.34 ms +0.45% (-4.75% to +1.57%)
leanxmss-100 8 x86-64 INTEL(R) XEON(R) GOLD 6548N 178.48 ms 178.90 ms +0.23% (-1.60% to +0.68%)
 ↳ build-witness 11.19 ms 11.19 ms -0.20% (-2.11% to +5.82%)
 ↳ commit 23.34 ms 23.43 ms +0.16% (-1.03% to +4.57%)
 ↳ execute-program 12.84 ms 12.37 ms -4.72% (-5.16% to +7.23%)
 ↳ flock-reductions 50.77 ms 50.86 ms +0.23% (-1.15% to +0.94%)
 ↳ pcs-open 59.75 ms 59.49 ms -0.74% (-2.16% to -0.18%)
 ↳ prove-bus 15.26 ms 15.24 ms +0.87% (-1.45% to +2.04%)
 ↳ prove-constraints 5.38 ms 5.32 ms -0.46% (-3.47% to +7.47%)
leanxmss-100 16 x86-64 INTEL(R) XEON(R) GOLD 6548N 128.83 ms 126.92 ms -2.28% (-3.32% to +6.06%)
 ↳ build-witness 7.34 ms 7.20 ms -3.10% (-6.09% to +3.58%)
 ↳ commit 14.14 ms 13.47 ms -3.54% (-9.46% to +6.37%)
 ↳ execute-program 12.29 ms 12.38 ms +1.43% (-2.46% to +2.90%)
 ↳ flock-reductions 38.54 ms 37.34 ms -2.70% (-7.14% to +5.67%)
 ↳ pcs-open 41.03 ms 40.26 ms -1.86% (-2.46% to +8.40%)
 ↳ prove-bus 11.25 ms 11.12 ms -1.49% (-3.46% to +4.60%)
 ↳ prove-constraints 4.61 ms 4.64 ms +0.48% (-1.02% to +5.21%)

@kevaundray kevaundray changed the title Prove and export the production GF(2) wrapping adder from Clean Prove and export the production GF(2) adder family from Clean Oct 10, 2026
@kevaundray kevaundray changed the title Prove and export the production GF(2) adder family from Clean Author leanVM circuits in Clean, prove them, and export them to Rust Oct 10, 2026
…ash circuit from it

The Hash class's gate list is now flock::clean::blake2s, generated from the Clean circuit
LeanVMCircuits.Blake2s.Compress. Compress.soundness proves every satisfying witness outputs
RFC 7693's F for the two legal finalization words, Rfc7693.abc checks the specification against
the RFC's test vector in the kernel, and Compress.lowered proves the exact lowered artifact, whose
additions are proven calls of the exported 32- and 31-bit adders. The hand-written G loop is
removed; the word witness and its pin to the gate walk are unchanged, as are the product slots.
… for the prover

K is (ZMod 2)[X]/(x^64+x^4+x^3+x+1) with Rec.modulus_irreducible checked in the kernel
from carry-less certificates, a Clean FiniteField whose value is the machine's coefficient
word; E is K[y]/(y^3+y+1) with its limb formulas. Every slot of EMUL, EXK, HASH, SPLIT and
CAST is Form data with its theorem (emul_spec, exk_spec, hash_mux, split_spec), the HASH and
SPLIT identities a Clean assertion, and GenerateRec.lean prints them as rec/clean.rs, which
Table::slot and Table::identities now read instead of the hand-written forms.
Rec.Rows proves, from the table theorems and the bus equalities a pattern holds its slots to:
an EMUL row held to one makes its factor the unique inverse, add sums, a SPLIT row with zeroed
high bits packs a number below 2^n, the CAST views, a hash row's challenge words, and a Merkle
node's placement of its child by a Boolean bit.
…to the proven ones

Rec.hash_row_compress proves a hash row's output columns are RFC 7693's compression of its input
columns when its packed witness satisfies the exported BLAKE2s artifact and its ports are its
columns' words. Tests check that inv, pack and node emit the row shapes Rec.inverse_row,
Rec.pack_row, Rec.node_row and Rec.hash_row_compress assume.
…tement digest in rows against RFC 7693

Rec.Merkle: hash rows chained output to chaining value output BLAKE2s-256 of their message columns;
node rows up a path output the Merkle root of the leaf and their bits and siblings; parent rows over
a subtree's levels output its root. Rec.Statement: Builder::chain's rows output the hash of a word
message, and a tree statement's digest rows the hash of its header and items. Drop the row-shape
tests, which only restated the builder's wiring.
…ts step port proven to be the clock reference
…k_circuit, pinned to the handwritten gate list
…ws give Clock.Holds, and build Clock::builder from the generated gates
…ck against Clock::step, and make the clock builder crate-internal
… keep the multiplier plan for native witnesses
…an-circuits-shift-20261010

# Conflicts:
#	crates/leanvm_core/src/rec/circuit/builder/arith.rs
…e session seed, words absorbed and squeezed, the digest, the new proof of work; trace k_to_d and model it

The duplex core (counters, hold-back, output blocks) is unchanged by leanEthereum#607. What changed and is modelled: the seed node is init(session) (the old seed with a zero statement half), the instance is the first message, roots are four words, COMMIT/POW_BASE/NONCE are gone (the terminal binding is four squeezed words), and proof of work hashes a squeezed challenge with a u64 nonce and checks the trial word's top bits. Builder::k_to_d, now used by the transcript, is traced, with a Lean model and contract, so checkrec replays tree circuits.
# Conflicts:
#	crates/leanvm_core/src/rec/circuit/builder/hash.rs
…model them: Model.hashBlock, Model.dToHalves, their contracts, leafBlock_eq

leaf_block is d_const of its counter word then block's row (Model.leafBlock_eq, by rfl); checkrec parses block and d_to_halves. No tree or signature dump calls them yet; the claim-set trees of leanEthereum#614 will.

This branch has not been deployed

No deployments
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