Skip to content

pcs: a cheaper commit NTT plan when few workers run - #464

Open
kevaundray wants to merge 9 commits into
leanEthereum:riscv-explorationfrom
kevaundray:kw/ntt-single-worker
Open

kevaundray wants to merge 9 commits into
leanEthereum:riscv-explorationfrom
kevaundray:kw/ntt-single-worker

Conversation

@kevaundray

@kevaundray kevaundray commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

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

Problem

With few workers the base commit's encode (whir::commit, the Commit span) is one of the largest stages of a proof: at one worker it takes 601 ms of leanXMSS-400's 5.46 s and 1.16 s of Fibonacci-2M's 9.2 s. Three things cost more than they need to:

  • The AVX-512 butterfly's reduction spends shift and shuffle ops on the same pipes as the unpacks around the carry-less products, and the radix-8 and radix-4 groups load and store every row once per layer.
  • A gathered pass copies one residue per group: rows of 35 or 41 words, so every copy in and out is a short run that splits cache lines, and the lanes past the last whole vector go through scalar code.
  • The commit first transposes the lane-major stack into the codeword, a full extra pass over the message, before the encode reads it back.

Change

All in crates/pcs/src/ntt/additive_ntt_f64.rs, plus the call in whir/commit.rs.

For every worker count:

  • mul_lanes_avx512: the reduction's spill is one vpshufb lookup of the top nibble (where AVX-512BW is present) and the left shifts of g(x) are doublings, which run on the add ports. The field product is unchanged: p mod (x^64 + x^4 + x^3 + x + 1) = lo ^ g(hi ^ spill) with spill = n ^ n>>1 ^ n>>3 for n = hi >> 60, and x + x is x << 1 in each 64-bit lane.
  • Radix-8 and radix-4 groups keep their rows in registers, so each row is loaded and stored once per group.
  • Rows ending in 2 to 7 lanes past a whole vector take one masked vector (in separate #[inline(never)] sweeps, so the whole-vector loop keeps its registers).
  • run_layers runs the leftover one or two layers first, where blocks are fewest and largest, and walks the twiddles block to block (TwiddleWalk): a twiddle is Σ_j bit_j(block) · row[offset + j], so from block b to b + 1 it changes by the prefix sum of the entries under b's trailing ones and the zero above them, one addition instead of a subset sum per block.

For up to FEW_WORKERS = 2 workers, the wide plan:

  • A gathered group takes up to 64 adjacent residues. At layer L a row's twiddle depends on row >> (d - L) alone and every residue is below the group's step, so adjacent residues share every twiddle: the group is the same transform with R · n lanes, its copies are R · n-word runs, and the scalar tail disappears.
  • The deep pass takes the L3 budget whenever a gathered pass remains, which moves layers out of the gathered pass.
  • whir::commit calls encode_lane_major_with: when the first gathered pass takes at least eight residues, it reads each lane's eight-word lines straight from the lane-major stack and turns 8x8 blocks around in registers (gather_lanes, AVX-512), each lane octet's lines front to back. The layout is transpose_lane_major's (codeword lane t is stack block n - 1 - t). Any other plan, and any target without AVX-512, transposes first as before.

More workers keep the current plan: one residue a group, in their share of L2.

Why the gate is two workers

The wide plan trades L2 residency (a group of 64 residues spills into L3) for long runs and the in-place read. Measured on the same host and pinning as below (load below 15), with the plan at every worker count against the plan gated at one worker, Commit span of the base encode, two runs each:

workers leanXMSS 400 Fibonacci 2M leanDA 1
2 (2 cores) 307, 287 -> 281, 245 ms 549 (the other run disturbed) -> 467, 511 ms 305, 329 -> 263, 255 ms
4 (2 cores + SMT) 220, 216 -> 232, 234 ms 406, 408 -> 455, 447 ms 235, 235 -> 238, 264 ms
4 (4 cores) 148, 147 -> 164, 180 ms 157, 182 -> 193, 166 ms
8 (8 cores) 92.5, 87.2 -> 132, 133 ms 116, 128 -> 141, 141 ms

and at 32 workers the pcs throughput bench (PCS_LOG_N=24, rate 1/2) goes from 24.4, 24.0 to 30.8, 30.9 ms a commit. So the plan pays at one and two workers and loses from four on, with or without SMT siblings: the gate is workers <= 2, which keeps a four-thread runner (two cores with SMT) on the narrow plan. Three workers were not measured and keep the narrow plan. The L3 deep pass goes with the wide groups: in the throughput bench, wide groups without it lose more at four and eight workers, and the L3 deep pass alone gains nothing there.

Measurements

Ryzen 9 7950X3D (16 cores, SMT, Zen 4), upstream 77077c6b against this branch, built on the same commit, run alternately under one lock, every run with --tracing --repeat 3 and a 1-minute load below 12 at its start. One worker is LEANVM_NUM_THREADS=1 taskset -c 2; two, four and eight workers are pinned to the CCD with the 32 MiB L3 (cores 10 and 11; cores 10 and 11 with their SMT siblings; cores 8 to 15); 32 workers are unpinned. Commit is the base encode's span, Prove the CLI's proving mean; each cell lists the runs, base -> branch.

Commit:

workers leanXMSS 400 Fibonacci 2M leanDA 1
1 601, 613, 613 -> 533, 472, 458 ms 1160, 1150, 1150 -> 846, 836, 850 ms 646, 663, 648 -> 484, 493, 497 ms
2 279, 312, 312 -> 326, 260, 262 ms 550, 540, 540 -> 452, 461, 457 ms 335, 334, 336 -> 266, 281, 276 ms
4 260, 259 -> 238, 238 ms 462, 473 -> 434, 429 ms 286, 257 -> 262, 260 ms
8 92.7, 91.0 -> 90.3, 90.7 ms 171, 171 -> 163, 164 ms 98.7, 98.4 -> 99.2, 92.4 ms
32 67.0, 67.3 -> 65.6, 64.9 ms 125, 120 -> 121, 119 ms 69.9, 71.3 -> 69.2, 69.9 ms

Prove:

workers leanXMSS 400 Fibonacci 2M leanDA 1
1 5.46, 5.46, 5.47 -> 5.48, 5.32, 5.36 s 9.23, 9.20, 9.25 -> 8.96, 8.84, 8.80 s 5.68, 5.71, 5.73 -> 5.50, 5.52, 5.52 s
2 2.57, 2.62, 2.61 -> 2.69, 2.55, 2.56 s 4.59, 4.42, 4.37 -> 5.27, 4.29, 4.26 s 2.75, 2.74, 2.75 -> 2.66, 2.67, 2.67 s
4 2.16, 2.16 -> 2.13, 2.13 s 3.57, 3.58 -> 3.55, 3.50 s 2.27, 2.25 -> 2.23, 2.23 s
8 0.852, 0.851 -> 0.848, 0.849 s 1.39, 1.39 -> 1.39, 1.41 s 0.897, 0.899 -> 0.899, 0.883 s
32 0.558, 0.567 -> 0.547, 0.546 s 0.913, 0.904 -> 0.905, 0.907 s 0.594, 0.591 -> 0.588, 0.606 s

The first branch run of leanXMSS at one and two workers, and of Fibonacci at two, were disturbed (spreads of 8 to 41% within the run); the other runs agree. The extension commits of the opening (levels 1 to 4) gain too at one, two and four workers (leanXMSS level 1: 223 -> 204 ms at one worker, 91 -> 84 ms at four); at eight workers level 1 is 1.7 ms slower in all three workloads while levels 2 to 4 gain about as much.

pcs throughput bench (BENCH_REPEAT=5, rate 1/2, same pinning), commit / the commit's encode alone, base -> branch:

workers PCS_LOG_N=22 PCS_LOG_N=24
1 43.9/26.1, 44.2/26.1 -> 34.7/22.8, 35.0/22.9 ms 189.9/119.6, 191.2/120.8 -> 150.4/100.1, 152.6/100.7 ms
2 21.6/13.1, 21.7/12.9 -> 17.9/12.3, 17.5/12.3 ms 90.2/57.1, 90.1/57.1 -> 74.5/54.4, 72.8/54.6 ms
4 19.3/11.5, 19.3/11.7 -> 17.8/10.1, 17.6/10.5 ms 81.3/53.2, 81.7/52.2 -> 75.2/46.3, 78.0/46.9 ms
8 8.6/5.3, 9.2/5.7 -> 8.7/5.0, 8.9/5.6 ms 32.8/22.3, 32.7/22.2 -> 32.6/21.4, 32.2/21.3 ms
32 6.5/4.2, 6.4/4.3 -> 6.2/4.0, 6.3/4.1 ms 24.0/16.4, 24.1/16.5 -> 23.8/16.5, 24.0/16.3 ms

On f774828d

Local runs: the same comparison after merging upstream f774828d, the same host, pinning, lock and load rule (every run with a 1-minute load below 14 at its start and below 15 at its end), two alternating rounds of --tracing --repeat 3; base -> branch:

workers leanXMSS 400 Commit leanXMSS 400 Prove Fibonacci 2M Commit Fibonacci 2M Prove
1 611, 607 -> 447, 459 ms 3.82, 3.83 -> 3.72, 3.62 s 1130, 1140 -> 807, 816 ms 6.86, 6.76 -> 6.38, 6.32 s
2 277, 302 -> 251, 252 ms 1.82, 1.85 -> 1.74, 1.76 s 527, 537 -> 458, 424 ms 3.18, 3.16 -> 3.04, 3.07 s
32 66.8, 67.1 -> 67.1, 65.5 ms 0.459, 0.458 -> 0.458, 0.454 s 123, 122 -> 121, 121 ms 0.781, 0.770 -> 0.762, 0.775 s

The encode saves about as many milliseconds as on 77077c6b, but upstream proves faster, so the share of proving it saves grew: at one worker leanXMSS 400 goes from 3.82 to 3.67 s (4%, against about 2% on 77077c6b) and Fibonacci 2M from 6.81 to 6.35 s (7%, against 4%); at two workers 5% and 4%. 32 workers are unchanged. The first branch run of leanXMSS at one worker and the first base run at two had spreads of 7.5% and 15% within the run; the other runs agree.

On 556206d7, older benchmark machines

The bench bot's comment for this branch merged into 556206d7, against 556206d7: each benchmark run in turns on one runner, base and branch five times each; the change is the median ratio, with the rounds' range. commit stage and proving, per testbed:

benchmark runner commit stage proving
leanxmss-100-1thread x86-64 (Xeon Platinum 8370C) 362.33 -> 341.63 ms, -5.85% (-8.83% to -4.92%) 2.60 -> 2.57 s, -1.14% (-1.88% to -0.07%)
leanxmss-100-1thread arm64 (Neoverse-N2) 494.77 -> 481.47 ms, -2.79% (-3.21% to -2.14%) 3.29 -> 3.28 s, -0.16% (-1.38% to +0.72%)
aggregate-leanxmss-100-2to1-1thread-first x86-64 (Xeon Platinum 8573C) 1.54 -> 1.51 s, -1.97% (-3.58% to -1.73%)
aggregate-leanxmss-100-2to1-1thread-first arm64 (Neoverse-N2) 1.84 -> 1.83 s, -0.45% (-1.25% to +0.84%)
aggregate-leanxmss-100-2to1-1thread-node x86-64 (Xeon Platinum 8573C) 1.68 -> 1.65 s, -1.74% (-2.17% to -0.72%)
aggregate-leanxmss-100-2to1-1thread-node arm64 (Neoverse-N2) 1.95 -> 1.94 s, -0.34% (-1.21% to +0.40%)
leanxmss-100 x86-64 (Xeon 6973P-C) 128.65 -> 131.52 ms, +2.79% (-0.96% to +34.91%) 957.88 -> 965.61 ms, +0.71% (+0.35% to +15.27%)
leanxmss-100 arm64 (Neoverse-N2) 125.58 -> 124.04 ms, -1.03% (-1.32% to -0.90%) 884.33 -> 882.73 ms, -0.26% (-0.56% to +0.75%)
fibonacci-asm-2000000 x86-64 (EPYC 7763) 1.42 -> 1.41 s, -0.50% (-0.94% to +5.80%) 8.38 -> 8.36 s, -0.32% (-0.74% to +0.85%)
fibonacci-asm-2000000 arm64 (Neoverse-N2) 806.21 -> 797.46 ms, -1.53% (-1.68% to -0.63%) 4.93 -> 4.91 s, -0.25% (-0.45% to +0.19%)
falcon-7 x86-64 (Xeon Platinum 8370C) 633.50 -> 625.86 ms, -1.96% (-2.35% to -0.78%) 4.68 -> 4.67 s, -0.09% (-0.35% to +0.11%)
falcon-7 arm64 (Neoverse-N2) 518.03 -> 512.60 ms, -1.18% (-1.68% to -0.71%) 3.23 -> 3.22 s, -0.20% (-0.34% to +0.13%)
hash-50000 x86-64 (EPYC 7763) 898.12 -> 883.13 ms, -1.41% (-2.23% to -1.15%) 5.37 -> 5.34 s, -0.58% (-0.67% to -0.05%)
hash-50000 arm64 (Neoverse-N2) 520.65 -> 513.43 ms, -1.38% (-1.55% to +5.94%) 3.17 -> 3.17 s, +0.08% (-1.71% to +1.13%)
leansphincs-26 x86-64 (EPYC 7763) 261.98 -> 260.71 ms, -0.51% (-0.65% to -0.36%) 1.70 -> 1.70 s, -0.23% (-0.61% to -0.19%)
leansphincs-26 arm64 (Neoverse-N2) 146.92 -> 145.35 ms, -1.07% (-1.39% to -0.68%) 1.01 -> 1.01 s, -0.48% (-0.90% to +3.96%)
shielded-258 x86-64 (EPYC 9V74) 1.10 -> 1.08 s, -1.24% (-1.69% to -1.03%) 6.21 -> 6.19 s, -0.35% (-0.59% to +0.84%)
shielded-258 arm64 (Neoverse-N2) 741.83 -> 732.12 ms, -1.29% (-1.57% to -0.53%) 4.51 -> 4.49 s, -0.26% (-1.34% to -0.01%)
stateproof-5 x86-64 (EPYC 7763) 2.16 -> 2.14 s, -0.97% (-1.06% to +0.15%) 12.72 -> 12.68 s, -0.24% (-0.74% to +0.22%)
stateproof-5 arm64 (Neoverse-N2) 1.22 -> 1.21 s, -0.56% (-1.16% to +0.03%) 7.41 -> 7.36 s, -0.44% (-0.92% to -0.12%)

The one-thread runs gain the most, as the plan targets: leanXMSS 100's commit 5.85% on x86-64 and 2.79% on arm64, and the one-thread aggregation 1.7% to 2.0% of proving on x86-64. pcs-commit-22 is 44.77 -> 44.11 ms (-0.88%, -5.23% to -0.09%) on arm64 and 70.61 -> 70.24 ms (-0.53%, -1.26% to +1.94%) on x86-64 (EPYC 9V74), and ntt-forward-22 25.17 -> 24.95 ms (-1.48%) on arm64. leanXMSS 100 on the Xeon 6973P-C runner spread up to +35% within its rounds, and the bot does not flag it. The bot flags the aggregation's verifying time on x86-64 (+1.8% to +7.8%) and its reduce-in-rows stage there (+5.3% to +12.3%, about 0.2 ms, while on arm64 the same stage is 20% to 32% faster), and Fibonacci's verifying time on x86-64 (+1.2%): neither the verifiers nor the recursion's row reduction call into pcs::ntt, the only code this change touches besides the commit's call.

Fitting this upstream:

On f7b03b5e, new benchmark machines

The bench bot's comment for this branch merged into f7b03b5e, against f7b03b5e, on the new runners (both built with target-cpu=native): each benchmark run in turns on one runner, base and branch five times each; the change is the median ratio, with the rounds' range. The aggregation cases report no commit stage, so they list proving alone; the kernels bench runs on the whole pool.

x86-64, Xeon Gold 6548N (AVX-512):

benchmark commit stage proving
leanxmss-100-1thread 185.50 ms -> 132.49 ms, -28.63% (-31.79% to -27.28%) 1.04 s -> 985.53 ms, -6.01% (-6.95% to -4.46%)
leanxmss-100-4thread 40.97 ms -> 35.96 ms, -12.23% (-18.76% to -7.99%) 268.97 ms -> 261.91 ms, -2.34% (-4.58% to +1.03%)
leanxmss-100-8thread 23.76 ms -> 20.54 ms, -13.30% (-14.38% to -12.80%) 179.61 ms -> 175.33 ms, -2.17% (-3.87% to -0.64%)
leanxmss-100 (all threads) 11.21 ms -> 9.70 ms, -13.02% (-14.85% to -12.11%) 115.58 ms -> 113.48 ms, -1.74% (-2.28% to -0.79%)
aggregation, proving first-level node node
2to1, 1 thread 608.74 ms -> 554.84 ms, -8.88% (-9.04% to -8.65%) 638.78 ms -> 588.12 ms, -8.22% (-8.46% to -7.25%)
2to1, 4 threads 192.04 ms -> 187.23 ms, -2.65% (-3.76% to -0.20%) 199.70 ms -> 196.01 ms, -1.90% (-2.12% to -1.09%)
2to1, 8 threads 123.33 ms -> 120.19 ms, -2.33% (-7.67% to -1.59%) 127.75 ms -> 126.22 ms, -1.20% (-10.25% to +6.33%)
2to1, all threads 86.98 ms -> 85.50 ms, -1.70% (-2.52% to +0.82%) 90.08 ms -> 88.30 ms, -1.87% (-3.30% to +0.36%)
4to1, 1 thread 1.18 s -> 1.12 s, -4.98% (-5.58% to -2.73%) 1.30 s -> 1.23 s, -5.09% (-6.15% to -3.79%)
4to1, 4 threads 355.08 ms -> 344.78 ms, -3.06% (-3.58% to -2.15%) 385.73 ms -> 376.52 ms, -2.40% (-3.19% to -1.31%)
4to1, 8 threads 222.23 ms -> 217.72 ms, -1.92% (-2.39% to +6.79%) 240.09 ms -> 236.37 ms, -2.20% (-2.85% to +0.83%)
4to1, all threads 161.80 ms -> 160.77 ms, -0.65% (-4.64% to +0.25%) 173.34 ms -> 168.75 ms, -3.41% (-4.33% to -2.41%)
kernels bench
pcs-commit-22 4.00 ms -> 3.97 ms, -0.71% (-2.42% to +0.16%)
ntt-forward-22 2.28 ms -> 2.15 ms, -6.06% (-7.87% to -2.95%)

arm64, Neoverse-V2:

benchmark commit stage proving
leanxmss-100-1thread 357.73 ms -> 340.34 ms, -4.80% (-4.95% to -3.88%) 2.06 s -> 2.04 s, -1.47% (-1.74% to +8.86%)
leanxmss-100-4thread 90.13 ms -> 88.63 ms, -1.56% (-2.25% to -1.25%) 555.22 ms -> 552.42 ms, -0.48% (-0.77% to -0.08%)
leanxmss-100-8thread 47.45 ms -> 46.85 ms, -0.92% (-2.24% to +0.34%) 383.09 ms -> 382.91 ms, +1.33% (-0.32% to +1.60%)
leanxmss-100 (all threads) 24.39 ms -> 24.21 ms, -1.17% (-1.44% to -0.12%) 214.99 ms -> 214.45 ms, +0.06% (-1.79% to +3.08%)
aggregation, proving first-level node node
2to1, 1 thread 1.08 s -> 1.06 s, -1.23% (-1.71% to -1.00%) 1.14 s -> 1.12 s, -1.10% (-2.23% to -0.84%)
2to1, 4 threads 300.94 ms -> 300.31 ms, -0.72% (-2.67% to +0.30%) 313.86 ms -> 314.03 ms, +0.14% (-0.78% to +6.04%)
2to1, 8 threads 193.76 ms -> 194.09 ms, +0.17% (-1.96% to +0.58%) 202.29 ms -> 202.33 ms, +0.28% (-1.58% to +0.78%)
2to1, all threads 128.34 ms -> 130.33 ms, +0.70% (-0.50% to +2.30%) 132.15 ms -> 132.49 ms, +0.38% (-0.68% to +2.57%)
4to1, 1 thread 2.13 s -> 2.10 s, -1.13% (-1.72% to -0.92%) 2.30 s -> 2.28 s, -0.83% (-1.83% to -0.70%)
4to1, 4 threads 587.95 ms -> 585.35 ms, -0.46% (-0.71% to +0.15%) 636.82 ms -> 634.76 ms, -0.34% (-0.54% to +2.08%)
4to1, 8 threads 376.62 ms -> 375.09 ms, -0.91% (-1.49% to +0.14%) 403.92 ms -> 403.09 ms, -1.12% (-1.39% to +4.88%)
4to1, all threads 235.97 ms -> 238.36 ms, +0.70% (-0.40% to +1.40%) 254.36 ms -> 253.89 ms, -0.18% (-0.75% to +1.18%)
kernels bench
pcs-commit-22 8.69 ms -> 8.75 ms, -0.34% (-0.46% to +8.56%)
ntt-forward-22 3.83 ms -> 3.88 ms, +1.24% (-0.17% to +4.46%)

The one-thread cases gain the most, as the plan targets: on the Xeon, leanXMSS 100's commit is 28.6% faster and its proving 6.0%, and the one-thread aggregation proves 5.0% to 8.9% faster; on the Neoverse-V2 the commit is 4.8% faster and the one-thread aggregation 0.8% to 1.2%. The 4- and 8-thread cases run the narrow plan (the gate is two workers), so what they gain comes from the parts for every worker count: on the Xeon those include the AVX-512 product and register kernels, and the commit is 12% to 13% faster at four, eight and all threads, with ntt-forward-22 6.1% faster; on the Neoverse-V2, where the NEON kernels are unchanged, the commit is 1.6% faster at four threads and within its rounds' range at eight. The bot flags three rises: on arm64, leanxmss-100-8thread's pcs-open stage, 182.69 -> 183.67 ms (+1.90%, +0.53% to +3.14%), while its proving is not flagged, and the 4to1 8-thread node's reduce-in-rows, 2.93 ms either way (+2.63%, +0.04% to +6.45%); on x86-64, Fibonacci's execute-program (+1.26%), which runs before any commit.

How it composes with ntt-tasks (#501, now upstream): this branch decides where the deep pass starts (the L3 budget for one or two workers) and what the gathered passes take (adjacent residues, the in-place lane-major read); ntt-tasks' sizing then cuts the deep pass into tasks of whole sub-blocks, enough of them for 64 rows (MIN_TASK_LOG = 6), and hands a task's rows to the Merkle tree inside the task unless one task covers the whole deep pass. Each sub-block runs this branch's run_layers (leftover layers first, walked twiddles, register kernels) with its own block index, so the result is the same as one task a sub-block. A lane-major message never reaches a deep task: the first gathered pass reads it in place, or it is transposed into the first replica before any pass, so a deep task builds its sub-blocks from a row-major message only. Where the sub-blocks hold 64 rows or more, each task is one sub-block, as before.

Correctness

  • No protocol change: the proofs of leanXMSS 400, Fibonacci 2M and leanDA 1 serialize to the same bytes on base and branch at every worker count above (hash of Proof::to_bytes). After merging f774828d, d936ad4f, 556206d7 and f7b03b5e they match at 1, 2 and 32 workers, native (AVX-512) and with -C target-cpu=haswell; on f7b03b5e so do the leaf, first-level node and node proofs of aggregate --n 100.
  • The NTT tests compare every plan with the scalar reference, now planned for 1, 2 and 3 workers so that both sides of the gate are covered whatever the pool's size; the lane-major tests cover the in-place read with and without lanes past a whole eight, and the transposing fallback.
  • cargo test --release -p pcs passes natively (AVX-512), with -C target-cpu=znver3 (the AVX2 arm, VPCLMULQDQ without AVX-512), with the flag sets of CI's SIMD legs and with -C target-cpu=haswell, and on aarch64 (neoverse-n2, +aes,+sha3) under qemu.

ARM

The NEON kernels are unchanged; the planner changes (leftover layer first, walked twiddles, the wide plan for one or two workers, which on aarch64 still transposes the stack first) apply there too. The aarch64 build compiles and passes clippy with CI's ARM flags and its NTT tests pass under qemu. CI's ARM bench on 556206d7 (Neoverse-N2, above) has the commit 2.8% faster at one thread and 0.6% to 1.5% faster in the multi-threaded runs. On f7b03b5e (Neoverse-V2, above) the commit is 4.8% faster at one thread, 1.6% at four and 1.2% at all threads.

Checks

On f7b03b5e: cargo fmt --all --check; cargo clippyall with -C target-cpu=haswell on 1.97 and 1.99, native on 1.99, and with both x86-64-v3 flag sets of CI's SIMD legs; the system-allocator clippy step, the ARM64 clippy leg and the AVX-512 clippy step of rust.yml; cargo docall; cargo test --release -p primitives -p pcs -p flock natively (AVX-512), with -C target-cpu=haswell and with both x86-64-v3 flag sets, with the bus kernels' tests of those legs; cargo test --release -p pcs -p flock on aarch64 (neoverse-n2, +aes,+sha3) under qemu; the verifiers' end-to-end tests (cargo test --release -p leanvm_core --test verifiers, the Python verifier included); every CI job, cargo testall in the Test job included.

- mul_lanes_avx512: the reduction's spill is one vpshufb lookup of the top
  nibble and g(x) takes doublings, so fewer ops share the shift/shuffle
  pipes with the unpacks (VPCLMULQDQ zmm issues every other cycle on Zen 4).
- radix-8 and radix-4 groups keep their rows in registers: each row is
  loaded and stored once per group, not once per layer.
- run_layers puts the leftover one or two layers first (largest blocks)
  and walks twiddles block to block with one XOR (TwiddleWalk) instead
  of a subset sum per block; twiddles_radix8 is gone.

Byte-identical: fibonacci 2M rate 1 digest 87a8a891167e3b9a, leanxmss 400
744c5cfc65b1157d. cargo test --release -p pcs passes.

1T (LEANVM_NUM_THREADS=1, taskset -c 2), base / this, two runs each:
  leanxmss 400: Commit 602, 601 -> 580, 572 ms; PCS open Commit L1-L4
    380, 381 -> 349, 349 ms; Prove 5500, 5490 -> 5470, 5390 ms.
  fibonacci 2M: Commit 1160, 1150 -> 1110 ms (other run disturbed, load 11);
    L1-L4 798, 796 -> 746 ms.
  Kernel probe, 48 lanes in L1: 0.343 -> 0.308 ns per lane-butterfly.
32T leanxmss 400: Commit 67.6, 66.9 -> 65.6, 71.7 ms (second run had every
  stage slower, machine noise); proving unchanged within noise.
…s the lane-major stack in place

- With one worker (gated on the planned worker count; 32 threads keep the
  old plan) a gathered group takes up to 64 adjacent residues: they share
  every twiddle, so the group is one transform of R*n lanes, its copies in
  and out are R*n-word runs (whole lines, so streaming stores stop
  splitting lines) and the 41- or 35-lane scalar tail disappears.
  LONE_GATHER_WORDS bounds the scratch (32 MiB).
- encode_lane_major_with: commit no longer transposes the stack into the
  codeword. When the first gathered pass takes >= 8 residues, it reads
  each lane's 8-word lines straight from the lane-major message and turns
  8x8 blocks around in registers (gather_lanes, AVX-512). Otherwise
  (32T, small domains, other targets) it transposes first as before.
- transform_for takes the worker count, so tests pin the one-worker plan.

Byte-identical (same digests). cargo test --release -p pcs passes; tests
cover the lone plan for in-place, no-message and lane-major encodes.
Measured together with the next commit (see there).
…ctor for 2-7 spare lanes

- gather_lanes walks one lane octet's lines front to back (8 lines per
  lane per row group), which halves the lane-major read time at 1T.
- Rows ending in 2 to 7 lanes past a whole vector (fibonacci's 35 lanes)
  take one masked vector in separate #[inline(never)] sweeps; folding the
  mask into the common loop cost the whole-vector shapes about 5%.

Byte-identical: fibonacci 2M 87a8a891167e3b9a, leanxmss 400
744c5cfc65b1157d. cargo test --release -p pcs passes.

This and the previous two commits, 1T, base / this, A B A B:
  leanxmss 400: Commit 606, 608 -> 484, 484 ms; L1-L4 378, 378 -> 360, 350;
    Prove 5480, 5430 -> 5370, 5320 ms.
  fibonacci 2M: Commit 1150, 1150 -> 835, 830 ms; L1-L4 795, 797 -> 731, 730;
    Prove 9180, 9250 -> 8900, 8850 ms.
32T leanxmss 400 (--repeat 3): Commit 68.4, 67.5 -> 66.5, 67.3 ms; proving
  0.556, 0.568 -> 0.559, 0.578 s (+-2 to 4% spreads): unchanged.
Probe (1T, xmss shape, commit alone): transpose 50 + gathered in 39 + out 50
  ms became gathered in 45 + out 22 ms.
With one worker the deep pass takes fit3 rows whenever the plan has a
gathered pass: its L3 is its own, a deep layer costs about the same from
L3 as from L2, and the smaller gathered groups read the lane-major stack
faster. 32T planning is unchanged.

Probe (1T, encode + Merkle alone): leanxmss base commit 482 -> 459 ms,
its L1 extension commit 236 -> 231 ms, fibonacci's L1 493 -> 472 ms
(fibonacci's base commit already took fit3).

Byte-identical: fibonacci 2M 87a8a891167e3b9a, leanxmss 400
744c5cfc65b1157d. cargo test --release -p pcs passes.

All four commits, 1T, base / this, A B A B:
  leanxmss 400: Commit 604, 607 -> 464, 523 ms (second run noisy);
    L1-L4 378, 377 -> 342, 344 ms; Prove 5470, 5460 -> 5260, 5400 ms.
  fibonacci 2M: Commit 1170, 1160 -> 837, 898 ms; L1-L4 794, 809 -> 706,
    709 ms; Prove 10100 (disturbed), 9370 -> 8830, 8890 ms.
32T leanxmss 400: Commit 66.6, 71.4 -> 66.8, 68.7 ms; proving 0.558, 0.58
  -> 0.572, 0.629 s (last run +-21.7%, load 6.8): no change beyond noise.
pcs throughput bench, 1T, PCS_LOG_N=22 (load 7 to 11): commit 47.9, 63.6
  -> 43.0, 42.8 ms; encode alone 29.7, 33.7 -> 25.6, 24.7 ms.
The plan with wide gathered groups (up to 64 adjacent residues), the L3 deep pass and the lane-major stack read in place now runs whenever the transform is planned for at most FEW_WORKERS = 2 workers, not one alone. The tests plan for 1, 2 and 3 workers, so both sides of the gate are pinned to the scalar reference whatever the pool's size.

Gate, measured on a Ryzen 9 7950X3D (workers pinned to the 32 MiB L3 CCD), Commit span of the base encode, one-worker gate / the plan at every count, two runs each:
  2 workers (2 cores):        leanxmss 400 307, 287 -> 281, 245 ms; leanda 305, 329 -> 263, 255 ms; fibonacci 2M 549 -> 467, 511 ms
  4 workers (2 cores + SMT):  leanxmss 220, 216 -> 232, 234 ms; fibonacci 406, 408 -> 455, 447 ms; leanda 235, 235 -> 238, 264 ms
  4 workers (4 cores):        leanxmss 148, 147 -> 164, 180 ms; leanda 157, 182 -> 193, 166 ms
  8 workers (8 cores):        leanxmss 92.5, 87.2 -> 132, 133 ms; leanda 116, 128 -> 141, 141 ms
  32 workers, pcs throughput bench PCS_LOG_N=24 rate 1: commit 24.4, 24.0 -> 30.8, 30.9 ms; encode alone 16.5, 16.3 -> 24.6, 24.6 ms
Three workers were not measured and keep the narrow plan.

This branch against upstream 77077c6, Commit span (base encode), runs base -> this:
  1 worker:   leanxmss 601, 613, 613 -> 533, 472, 458 ms; fibonacci 1160, 1150, 1150 -> 846, 836, 850 ms; leanda 646, 663, 648 -> 484, 493, 497 ms
  2 workers:  leanxmss 279, 312, 312 -> 326, 260, 262 ms; fibonacci 550, 540, 540 -> 452, 461, 457 ms; leanda 335, 334, 336 -> 266, 281, 276 ms
  4 workers (2 cores + SMT, the narrow plan): leanxmss 260, 259 -> 238, 238 ms; fibonacci 462, 473 -> 434, 429 ms; leanda 286, 257 -> 262, 260 ms
  8 workers:  leanxmss 92.7, 91.0 -> 90.3, 90.7 ms; fibonacci 171, 171 -> 163, 164 ms; leanda 98.7, 98.4 -> 99.2, 92.4 ms
  32 workers: leanxmss 67.0, 67.3 -> 65.6, 64.9 ms; fibonacci 125, 120 -> 121, 119 ms; leanda 69.9, 71.3 -> 69.2, 69.9 ms

Byte-identical proofs: leanxmss 400, fibonacci 2M and leanda 1 hash to the same digest on base and branch at every worker count. cargo test --release -p pcs passes, natively (AVX-512), with target-cpu=znver3 (the AVX2 arm) and on aarch64 under qemu.
@github-actions

github-actions Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Benchmarks: base against this PR, on one runner

477ac5e merged into its base, against the base f7b03b5: 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).

Proving time

benchmark runner base this PR change
aggregate-leanxmss-100-2to1-1thread-first arm64 1.08 s 1.06 s -1.23% (-1.71% to -1.00%)
aggregate-leanxmss-100-2to1-1thread-first x86-64 608.74 ms 554.84 ms -8.88% (-9.04% to -8.65%)
aggregate-leanxmss-100-2to1-1thread-node arm64 1.14 s 1.12 s -1.10% (-2.23% to -0.84%)
aggregate-leanxmss-100-2to1-1thread-node x86-64 638.78 ms 588.12 ms -8.22% (-8.46% to -7.25%)
aggregate-leanxmss-100-2to1-4thread-first x86-64 192.04 ms 187.23 ms -2.65% (-3.76% to -0.20%)
aggregate-leanxmss-100-2to1-4thread-node x86-64 199.70 ms 196.01 ms -1.90% (-2.12% to -1.09%)
aggregate-leanxmss-100-2to1-8thread-first x86-64 123.33 ms 120.19 ms -2.33% (-7.67% to -1.59%)
aggregate-leanxmss-100-4to1-1thread-first arm64 2.13 s 2.10 s -1.13% (-1.72% to -0.92%)
aggregate-leanxmss-100-4to1-1thread-first x86-64 1.18 s 1.12 s -4.98% (-5.58% to -2.73%)
aggregate-leanxmss-100-4to1-1thread-node x86-64 1.30 s 1.23 s -5.09% (-6.15% to -3.79%)
aggregate-leanxmss-100-4to1-4thread-first x86-64 355.08 ms 344.78 ms -3.06% (-3.58% to -2.15%)
aggregate-leanxmss-100-4to1-4thread-node x86-64 385.73 ms 376.52 ms -2.40% (-3.19% to -1.31%)
aggregate-leanxmss-100-4to1-node x86-64 173.34 ms 168.75 ms -3.41% (-4.33% to -2.41%)
falcon-7 x86-64 325.54 ms 320.91 ms -1.60% (-2.00% to -0.46%)
hash-50000 x86-64 312.89 ms 307.35 ms -1.54% (-2.15% to -1.40%)
leansphincs-26 x86-64 131.51 ms 130.30 ms -1.13% (-1.70% to -0.29%)
leanxmss-100 x86-64 115.58 ms 113.48 ms -1.74% (-2.28% to -0.79%)
leanxmss-100-1thread x86-64 1.04 s 985.53 ms -6.01% (-6.95% to -4.46%)
leanxmss-100-8thread x86-64 179.61 ms 175.33 ms -2.17% (-3.87% to -0.64%)
pcs-open-22 x86-64 15.13 ms 14.93 ms -1.47% (-1.72% to -0.20%)
stateproof-5 x86-64 725.08 ms 714.01 ms -1.60% (-3.00% to -1.20%)
Prover stages
benchmark runner base this PR change
aggregate-leanxmss-100-2to1-1thread-first arm64 1.08 s 1.06 s -1.23% (-1.71% to -1.00%)
 ↳ build-circuit 12.80 ms 12.79 ms -0.92% (-2.68% to +0.63%)
 ↳ prove-recursion 1.04 s 1.03 s -1.22% (-1.79% to -1.06%)
 ↳ reduce-claims 15.90 ms 15.86 ms +0.13% (-0.75% to +0.99%)
 ↳ reduce-in-rows 1.43 ms 1.42 ms -1.04% (-3.18% to +4.96%)
 ↳ verify 7.06 ms 7.08 ms -0.37% (-2.52% to +1.08%)
aggregate-leanxmss-100-2to1-1thread-first x86-64 608.74 ms 554.84 ms -8.88% (-9.04% to -8.65%)
 ↳ build-circuit 14.63 ms 14.42 ms -0.77% (-5.69% to +6.12%)
 ↳ prove-recursion 565.75 ms 512.44 ms -9.38% (-9.82% to -9.27%)
 ↳ reduce-claims 18.31 ms 18.41 ms +0.61% (+0.33% to +0.97%)
 ↳ reduce-in-rows 1.74 ms 1.58 ms -9.64% (-15.55% to -4.42%)
 ↳ verify 7.85 ms 7.75 ms -1.35% (-1.59% to +0.35%)
aggregate-leanxmss-100-2to1-1thread-node arm64 1.14 s 1.12 s -1.10% (-2.23% to -0.84%)
 ↳ build-circuit 12.73 ms 12.68 ms -1.15% (-2.96% to +0.42%)
 ↳ prove-recursion 1.09 s 1.07 s -1.15% (-2.29% to -0.78%)
 ↳ reduce-claims 31.22 ms 30.87 ms -0.60% (-1.67% to -0.30%)
 ↳ reduce-in-rows 1.48 ms 1.47 ms -0.27% (-4.70% to +1.61%)
aggregate-leanxmss-100-2to1-1thread-node x86-64 638.78 ms 588.12 ms -8.22% (-8.46% to -7.25%)
 ↳ build-circuit 15.18 ms 15.11 ms -1.23% (-2.44% to +3.49%)
 ↳ prove-recursion 580.16 ms 529.54 ms -9.15% (-9.28% to -7.87%)
 ↳ reduce-claims 33.31 ms 33.33 ms +0.01% (-0.37% to +1.74%)
 ↳ reduce-in-rows 1.83 ms 1.68 ms -7.52% (-17.54% to -2.26%)
aggregate-leanxmss-100-2to1-4thread-first x86-64 192.04 ms 187.23 ms -2.65% (-3.76% to -0.20%)
 ↳ build-circuit 15.02 ms 14.66 ms -1.98% (-5.63% to +9.05%)
 ↳ prove-recursion 159.80 ms 155.93 ms -2.41% (-3.40% to -1.34%)
 ↳ reduce-claims 7.17 ms 7.29 ms -3.66% (-19.09% to +8.29%)
 ↳ reduce-in-rows 1.95 ms 1.81 ms -7.37% (-10.11% to -5.70%)
 ↳ verify 7.83 ms 7.71 ms -1.38% (-3.04% to -0.61%)
aggregate-leanxmss-100-2to1-4thread-node x86-64 199.70 ms 196.01 ms -1.90% (-2.12% to -1.09%)
 ↳ build-circuit 15.88 ms 15.46 ms -3.05% (-8.41% to +2.87%)
 ↳ prove-recursion 162.77 ms 159.37 ms -2.04% (-2.41% to -1.13%)
 ↳ reduce-claims 11.95 ms 12.34 ms +3.30% (-6.56% to +5.04%)
 ↳ reduce-in-rows 1.98 ms 1.86 ms -3.97% (-8.60% to -0.70%)
aggregate-leanxmss-100-2to1-8thread-first x86-64 123.33 ms 120.19 ms -2.33% (-7.67% to -1.59%)
 ↳ build-circuit 14.40 ms 14.42 ms -0.39% (-1.54% to +0.13%)
 ↳ prove-recursion 92.04 ms 89.98 ms -2.26% (-11.55% to -1.19%)
 ↳ reduce-claims 6.27 ms 6.15 ms -6.82% (-16.04% to +30.41%)
 ↳ reduce-in-rows 1.96 ms 1.80 ms -8.06% (-12.65% to -2.15%)
 ↳ verify 7.95 ms 7.85 ms -0.84% (-2.41% to +0.13%)
aggregate-leanxmss-100-2to1-8thread-node x86-64 127.75 ms 126.22 ms -1.20% (-10.25% to +6.33%)
 ↳ build-circuit 14.99 ms 15.50 ms +2.16% (-3.28% to +7.16%)
 ↳ prove-recursion 93.98 ms 92.06 ms -1.77% (-10.62% to +7.62%)
 ↳ reduce-claims 9.99 ms 10.09 ms +6.36% (-30.91% to +11.10%)
 ↳ reduce-in-rows 2.04 ms 1.84 ms -8.55% (-13.37% to -5.06%)
aggregate-leanxmss-100-2to1-first x86-64 86.98 ms 85.50 ms -1.70% (-2.52% to +0.82%)
 ↳ build-circuit 14.64 ms 14.63 ms -1.09% (-8.02% to +3.35%)
 ↳ prove-recursion 54.17 ms 53.44 ms -1.41% (-2.26% to -0.66%)
 ↳ reduce-claims 7.29 ms 7.64 ms +4.81% (-20.61% to +16.71%)
 ↳ reduce-in-rows 1.97 ms 1.83 ms -9.93% (-13.92% to +1.87%)
 ↳ verify 8.64 ms 8.69 ms +0.82% (+0.39% to +1.59%)
aggregate-leanxmss-100-2to1-node x86-64 90.08 ms 88.30 ms -1.87% (-3.30% to +0.36%)
 ↳ build-circuit 15.22 ms 15.31 ms +0.25% (-1.12% to +6.17%)
 ↳ prove-recursion 56.04 ms 54.80 ms -1.82% (-3.40% to -1.63%)
 ↳ reduce-claims 9.61 ms 9.46 ms -7.26% (-16.79% to +14.19%)
 ↳ reduce-in-rows 2.06 ms 1.92 ms -6.69% (-8.70% to -5.59%)
aggregate-leanxmss-100-4to1-1thread-first arm64 2.13 s 2.10 s -1.13% (-1.72% to -0.92%)
 ↳ build-circuit 25.12 ms 25.16 ms +0.36% (-1.02% to +0.99%)
 ↳ prove-recursion 2.07 s 2.04 s -1.17% (-1.74% to -0.96%)
 ↳ reduce-claims 21.02 ms 21.02 ms +0.13% (-0.96% to +2.21%)
 ↳ reduce-in-rows 2.69 ms 2.69 ms -0.39% (-2.39% to +2.44%)
 ↳ verify 13.60 ms 13.60 ms -0.02% (-0.57% to +0.66%)
aggregate-leanxmss-100-4to1-1thread-first x86-64 1.18 s 1.12 s -4.98% (-5.58% to -2.73%)
 ↳ build-circuit 34.96 ms 35.02 ms -0.53% (-1.11% to +2.49%)
 ↳ prove-recursion 1.10 s 1.04 s -5.23% (-5.95% to -3.09%)
 ↳ reduce-claims 26.87 ms 26.89 ms -0.10% (-1.16% to +4.28%)
 ↳ reduce-in-rows 4.14 ms 3.60 ms -13.17% (-13.84% to -8.84%)
 ↳ verify 15.69 ms 15.68 ms -0.99% (-1.61% to +0.83%)
aggregate-leanxmss-100-4to1-1thread-node x86-64 1.30 s 1.23 s -5.09% (-6.15% to -3.79%)
 ↳ build-circuit 43.28 ms 43.06 ms -2.37% (-4.27% to +4.70%)
 ↳ prove-recursion 1.17 s 1.10 s -5.75% (-6.45% to -4.31%)
 ↳ reduce-claims 64.83 ms 65.82 ms +2.12% (-4.44% to +2.73%)
 ↳ reduce-in-rows 4.34 ms 4.13 ms -5.50% (-11.88% to +2.14%)
aggregate-leanxmss-100-4to1-4thread-first x86-64 355.08 ms 344.78 ms -3.06% (-3.58% to -2.15%)
 ↳ build-circuit 33.12 ms 31.43 ms -5.45% (-5.78% to +2.29%)
 ↳ prove-recursion 293.14 ms 284.25 ms -3.01% (-4.43% to -2.51%)
 ↳ reduce-claims 9.68 ms 9.87 ms +1.99% (-9.05% to +27.90%)
 ↳ reduce-in-rows 4.09 ms 3.66 ms -10.86% (-14.76% to -4.43%)
 ↳ verify 15.17 ms 15.14 ms -0.39% (-1.81% to +0.58%)
aggregate-leanxmss-100-4to1-4thread-node x86-64 385.73 ms 376.52 ms -2.40% (-3.19% to -1.31%)
 ↳ build-circuit 36.51 ms 37.15 ms +2.97% (-0.71% to +4.99%)
 ↳ prove-recursion 309.22 ms 299.00 ms -3.15% (-3.56% to -2.44%)
 ↳ reduce-claims 20.46 ms 20.45 ms +0.69% (-10.35% to +2.01%)
 ↳ reduce-in-rows 4.33 ms 3.95 ms -8.83% (-14.67% to -5.50%)
aggregate-leanxmss-100-4to1-8thread-node arm64 403.92 ms 403.09 ms -1.12% (-1.39% to +4.88%)
 ↳ build-circuit 24.85 ms 24.61 ms -1.14% (-2.45% to +1.55%)
 ↳ prove-recursion 351.06 ms 349.99 ms -1.38% (-1.42% to +5.33%)
 ↳ reduce-claims 11.95 ms 12.10 ms +1.96% (-2.60% to +3.70%)
 ↳ reduce-in-rows 2.93 ms 2.93 ms +2.63% (+0.04% to +6.45%)
aggregate-leanxmss-100-4to1-8thread-node x86-64 240.09 ms 236.37 ms -2.20% (-2.85% to +0.83%)
 ↳ build-circuit 36.23 ms 36.66 ms +0.95% (-2.38% to +2.88%)
 ↳ prove-recursion 170.87 ms 167.27 ms -2.19% (-2.74% to -0.15%)
 ↳ reduce-claims 14.52 ms 14.19 ms -5.22% (-8.30% to +9.51%)
 ↳ reduce-in-rows 4.31 ms 4.04 ms -5.89% (-7.73% to -4.57%)
aggregate-leanxmss-100-4to1-first x86-64 161.80 ms 160.77 ms -0.65% (-4.64% to +0.25%)
 ↳ build-circuit 34.40 ms 34.53 ms +0.54% (-4.87% to +4.36%)
 ↳ prove-recursion 96.10 ms 94.88 ms -1.14% (-3.92% to +1.43%)
 ↳ reduce-claims 8.64 ms 9.15 ms -2.31% (-16.76% to +7.71%)
 ↳ reduce-in-rows 4.33 ms 4.00 ms -6.49% (-10.92% to -2.92%)
 ↳ verify 17.69 ms 17.65 ms -0.58% (-2.36% to +7.85%)
aggregate-leanxmss-100-4to1-node x86-64 173.34 ms 168.75 ms -3.41% (-4.33% to -2.41%)
 ↳ build-circuit 38.94 ms 38.16 ms -2.97% (-4.68% to -0.45%)
 ↳ prove-recursion 103.31 ms 97.73 ms -4.76% (-6.08% to -1.52%)
 ↳ reduce-claims 13.14 ms 12.86 ms +1.44% (-20.96% to +2.24%)
 ↳ reduce-in-rows 4.46 ms 4.24 ms -4.30% (-11.30% to -2.38%)
falcon-7 arm64 723.36 ms 720.74 ms -0.28% (-0.80% to +0.49%)
 ↳ build-witness 25.03 ms 25.02 ms -0.17% (-3.71% to +0.69%)
 ↳ commit 97.89 ms 96.03 ms -1.82% (-2.06% to -1.12%)
 ↳ execute-program 31.34 ms 31.31 ms +0.03% (-0.56% to +0.46%)
 ↳ flock-reductions 191.01 ms 191.11 ms +0.05% (-0.16% to +1.91%)
 ↳ pcs-open 336.65 ms 336.19 ms -0.14% (-0.75% to -0.02%)
 ↳ prove-bus 33.25 ms 33.23 ms +0.00% (-0.28% to +4.65%)
 ↳ prove-constraints 7.60 ms 7.61 ms +0.60% (-1.96% to +2.09%)
falcon-7 x86-64 325.54 ms 320.91 ms -1.60% (-2.00% to -0.46%)
 ↳ build-witness 22.92 ms 22.89 ms -0.60% (-6.10% to +1.54%)
 ↳ commit 42.30 ms 39.54 ms -6.45% (-7.63% to -4.03%)
 ↳ execute-program 36.95 ms 37.06 ms +0.28% (-0.83% to +3.56%)
 ↳ flock-reductions 86.34 ms 86.40 ms +0.09% (-1.24% to +0.98%)
 ↳ pcs-open 102.87 ms 101.09 ms -1.84% (-2.86% to -0.39%)
 ↳ prove-bus 24.27 ms 24.14 ms -0.58% (-3.98% to +1.76%)
 ↳ prove-constraints 9.71 ms 9.46 ms -3.25% (-5.05% to +1.54%)
fibonacci-asm-2000000 arm64 1.06 s 1.05 s -0.51% (-0.71% to +0.19%)
 ↳ build-witness 35.81 ms 35.65 ms -0.31% (-1.63% to +0.70%)
 ↳ commit 148.64 ms 146.87 ms -1.19% (-1.48% to -0.95%)
 ↳ execute-program 62.72 ms 63.45 ms +0.51% (-5.03% to +6.25%)
 ↳ flock-reductions 311.24 ms 310.76 ms -0.15% (-0.43% to +0.69%)
 ↳ pcs-open 438.10 ms 434.02 ms -0.39% (-1.09% to +0.56%)
 ↳ prove-bus 52.98 ms 53.04 ms +0.10% (-0.40% to +0.14%)
 ↳ prove-constraints 10.71 ms 10.72 ms +0.10% (-1.12% to +1.05%)
fibonacci-asm-2000000 x86-64 490.05 ms 485.08 ms -0.83% (-1.24% to +0.93%)
 ↳ build-witness 36.34 ms 36.41 ms -0.39% (-1.33% to +4.56%)
 ↳ commit 63.73 ms 60.77 ms -4.59% (-7.21% to -3.72%)
 ↳ execute-program 78.34 ms 79.12 ms +1.26% (+0.69% to +2.47%)
 ↳ flock-reductions 124.18 ms 123.50 ms -0.66% (-0.75% to +0.30%)
 ↳ pcs-open 138.99 ms 137.02 ms -1.08% (-2.12% to +3.64%)
 ↳ prove-bus 35.57 ms 35.91 ms +0.47% (-0.40% to +1.70%)
 ↳ prove-constraints 12.85 ms 12.89 ms +0.27% (-0.36% to +0.39%)
hash-50000 arm64 696.31 ms 691.74 ms -0.63% (-0.68% to -0.23%)
 ↳ build-witness 24.63 ms 24.52 ms -0.55% (-6.05% to +1.92%)
 ↳ commit 97.69 ms 95.89 ms -1.63% (-2.37% to -1.40%)
 ↳ execute-program 23.24 ms 23.07 ms -0.42% (-3.61% to +0.51%)
 ↳ flock-reductions 179.03 ms 178.77 ms -0.34% (-0.36% to +0.12%)
 ↳ pcs-open 336.89 ms 334.63 ms -0.37% (-0.71% to +0.26%)
 ↳ prove-bus 27.74 ms 27.63 ms -0.31% (-1.06% to +0.28%)
 ↳ prove-constraints 6.99 ms 7.04 ms +0.95% (-0.61% to +1.23%)
hash-50000 x86-64 312.89 ms 307.35 ms -1.54% (-2.15% to -1.40%)
 ↳ build-witness 23.30 ms 23.24 ms -0.56% (-0.75% to +7.29%)
 ↳ commit 41.87 ms 39.30 ms -6.27% (-7.55% to -4.31%)
 ↳ execute-program 28.18 ms 27.58 ms -1.69% (-6.00% to +0.89%)
 ↳ flock-reductions 87.54 ms 87.48 ms -0.24% (-1.11% to +0.08%)
 ↳ pcs-open 101.79 ms 100.10 ms -1.58% (-2.12% to -1.14%)
 ↳ prove-bus 20.40 ms 20.25 ms -0.39% (-2.71% to -0.17%)
 ↳ prove-constraints 9.23 ms 8.96 ms -2.90% (-4.48% to +2.19%)
leansphincs-26 x86-64 131.51 ms 130.30 ms -1.13% (-1.70% to -0.29%)
 ↳ build-witness 8.78 ms 8.79 ms +0.57% (-1.06% to +1.58%)
 ↳ commit 12.78 ms 11.52 ms -10.45% (-10.99% to -9.14%)
 ↳ execute-program 14.53 ms 14.51 ms -0.33% (-1.61% to +0.86%)
 ↳ flock-reductions 41.46 ms 41.61 ms +0.38% (-0.47% to +1.30%)
 ↳ pcs-open 35.39 ms 35.47 ms -0.42% (-3.01% to +0.21%)
 ↳ prove-bus 12.46 ms 12.42 ms +0.61% (-2.31% to +3.05%)
 ↳ prove-constraints 5.44 ms 5.44 ms +0.07% (-12.03% to +0.33%)
leanxmss-100 arm64 214.99 ms 214.45 ms +0.06% (-1.79% to +3.08%)
 ↳ build-witness 6.11 ms 6.12 ms +0.58% (-1.28% to +2.00%)
 ↳ commit 24.39 ms 24.21 ms -1.17% (-1.44% to -0.12%)
 ↳ execute-program 10.22 ms 10.24 ms +0.28% (-1.53% to +1.26%)
 ↳ flock-reductions 63.24 ms 63.33 ms +0.13% (-5.38% to +8.46%)
 ↳ pcs-open 94.31 ms 94.33 ms +0.02% (+0.00% to +1.90%)
 ↳ prove-bus 12.64 ms 12.67 ms +0.68% (-0.35% to +3.28%)
 ↳ prove-constraints 3.82 ms 3.79 ms -0.26% (-3.64% to +0.24%)
leanxmss-100 x86-64 115.58 ms 113.48 ms -1.74% (-2.28% to -0.79%)
 ↳ build-witness 6.29 ms 6.30 ms -0.48% (-1.82% to +3.82%)
 ↳ commit 11.21 ms 9.70 ms -13.02% (-14.85% to -12.11%)
 ↳ execute-program 12.94 ms 12.97 ms +0.73% (-3.38% to +1.43%)
 ↳ flock-reductions 37.29 ms 37.27 ms +0.37% (-1.30% to +1.48%)
 ↳ pcs-open 31.74 ms 31.28 ms -1.42% (-4.18% to -0.21%)
 ↳ prove-bus 11.14 ms 11.14 ms -0.38% (-1.53% to +2.30%)
 ↳ prove-constraints 4.61 ms 4.60 ms -0.51% (-2.17% to +1.77%)
leanxmss-100-1thread arm64 2.06 s 2.04 s -1.47% (-1.74% to +8.86%)
 ↳ build-witness 65.38 ms 65.90 ms +0.93% (-0.32% to +1.11%)
 ↳ commit 357.73 ms 340.34 ms -4.80% (-4.95% to -3.88%)
 ↳ execute-program 10.11 ms 10.08 ms -0.71% (-1.23% to +0.25%)
 ↳ flock-reductions 703.24 ms 700.90 ms -0.00% (-0.74% to +0.16%)
 ↳ pcs-open 797.77 ms 785.64 ms -1.17% (-2.08% to +25.16%)
 ↳ prove-bus 117.64 ms 117.29 ms -0.50% (-3.38% to +2.45%)
 ↳ prove-constraints 14.53 ms 14.27 ms -1.65% (-4.42% to +2.06%)
leanxmss-100-1thread x86-64 1.04 s 985.53 ms -6.01% (-6.95% to -4.46%)
 ↳ build-witness 75.70 ms 75.05 ms -0.96% (-1.85% to +0.09%)
 ↳ commit 185.50 ms 132.49 ms -28.63% (-31.79% to -27.28%)
 ↳ execute-program 13.13 ms 13.18 ms -2.05% (-2.40% to +2.95%)
 ↳ flock-reductions 306.73 ms 307.18 ms +0.07% (-0.59% to +1.20%)
 ↳ pcs-open 356.12 ms 347.20 ms -2.55% (-3.46% to -1.19%)
 ↳ prove-bus 88.00 ms 85.63 ms +1.57% (-4.11% to +7.89%)
 ↳ prove-constraints 19.21 ms 19.02 ms -1.63% (-4.29% to +3.11%)
leanxmss-100-4thread arm64 555.22 ms 552.42 ms -0.48% (-0.77% to -0.08%)
 ↳ build-witness 17.72 ms 17.73 ms +0.10% (-0.28% to +0.20%)
 ↳ commit 90.13 ms 88.63 ms -1.56% (-2.25% to -1.25%)
 ↳ execute-program 9.98 ms 9.99 ms -0.13% (-0.90% to +3.96%)
 ↳ flock-reductions 187.30 ms 187.79 ms +0.23% (-0.17% to +0.31%)
 ↳ pcs-open 211.69 ms 210.24 ms -0.88% (-0.94% to +0.33%)
 ↳ prove-bus 32.38 ms 32.40 ms +0.14% (-0.25% to +0.19%)
 ↳ prove-constraints 5.53 ms 5.54 ms +0.20% (-0.21% to +0.24%)
leanxmss-100-4thread x86-64 268.97 ms 261.91 ms -2.34% (-4.58% to +1.03%)
 ↳ build-witness 19.71 ms 19.70 ms -0.04% (-4.80% to +5.70%)
 ↳ commit 40.97 ms 35.96 ms -12.23% (-18.76% to -7.99%)
 ↳ execute-program 12.00 ms 11.79 ms -3.19% (-5.88% to +3.74%)
 ↳ flock-reductions 80.38 ms 80.52 ms +0.55% (-0.28% to +1.08%)
 ↳ pcs-open 85.78 ms 84.66 ms -2.05% (-4.00% to +5.12%)
 ↳ prove-bus 23.39 ms 23.60 ms +1.45% (-0.88% to +3.82%)
 ↳ prove-constraints 6.80 ms 7.03 ms +3.18% (-0.39% to +6.50%)
leanxmss-100-8thread arm64 383.09 ms 382.91 ms +1.33% (-0.32% to +1.60%)
 ↳ build-witness 10.65 ms 10.78 ms +1.74% (-1.80% to +8.42%)
 ↳ commit 47.45 ms 46.85 ms -0.92% (-2.24% to +0.34%)
 ↳ execute-program 11.05 ms 11.14 ms -0.06% (-6.99% to +5.33%)
 ↳ flock-reductions 106.32 ms 106.37 ms -0.22% (-0.46% to +0.76%)
 ↳ pcs-open 182.69 ms 183.67 ms +1.90% (+0.53% to +3.14%)
 ↳ prove-bus 20.19 ms 20.21 ms +0.19% (-0.33% to +1.97%)
 ↳ prove-constraints 4.36 ms 4.37 ms +0.32% (-0.79% to +2.25%)
leanxmss-100-8thread x86-64 179.61 ms 175.33 ms -2.17% (-3.87% to -0.64%)
 ↳ build-witness 11.64 ms 11.70 ms +0.13% (-2.00% to +1.99%)
 ↳ commit 23.76 ms 20.54 ms -13.30% (-14.38% to -12.80%)
 ↳ execute-program 12.88 ms 12.90 ms +0.52% (-2.84% to +2.67%)
 ↳ flock-reductions 51.84 ms 51.93 ms +0.19% (-0.07% to +0.72%)
 ↳ pcs-open 57.80 ms 57.08 ms -1.41% (-5.94% to +3.31%)
 ↳ prove-bus 15.72 ms 15.72 ms -0.57% (-1.30% to +1.16%)
 ↳ prove-constraints 5.20 ms 5.16 ms -0.67% (-2.82% to +1.18%)
shielded-258 arm64 977.92 ms 967.80 ms -0.38% (-1.37% to +0.69%)
 ↳ build-witness 31.46 ms 31.39 ms +0.06% (-0.48% to +1.57%)
 ↳ commit 135.03 ms 132.51 ms -1.86% (-2.24% to -1.62%)
 ↳ execute-program 57.56 ms 57.20 ms -0.01% (-13.13% to +0.72%)
 ↳ flock-reductions 253.43 ms 253.11 ms -0.06% (-1.36% to +0.16%)
 ↳ pcs-open 429.33 ms 429.12 ms -0.47% (-0.96% to +1.84%)
 ↳ prove-bus 54.60 ms 54.63 ms +0.31% (-0.05% to +1.35%)
 ↳ prove-constraints 9.93 ms 10.00 ms +0.68% (+0.02% to +1.99%)
shielded-258 x86-64 456.52 ms 452.18 ms -0.53% (-1.11% to +1.76%)
 ↳ build-witness 32.83 ms 32.88 ms +0.18% (-1.40% to +6.51%)
 ↳ commit 58.05 ms 55.38 ms -4.74% (-6.13% to -3.06%)
 ↳ execute-program 73.37 ms 73.02 ms +0.55% (-1.81% to +3.21%)
 ↳ flock-reductions 112.19 ms 112.45 ms +0.24% (-0.66% to +0.84%)
 ↳ pcs-open 131.14 ms 129.67 ms -0.97% (-1.13% to +3.05%)
 ↳ prove-bus 36.81 ms 37.20 ms +1.24% (-0.02% to +2.23%)
 ↳ prove-constraints 11.22 ms 11.15 ms -0.60% (-1.62% to +2.64%)
stateproof-5 x86-64 725.08 ms 714.01 ms -1.60% (-3.00% to -1.20%)
 ↳ build-witness 53.72 ms 53.40 ms -0.77% (-2.90% to +1.58%)
 ↳ commit 98.50 ms 91.14 ms -7.38% (-7.99% to -6.91%)
 ↳ execute-program 102.65 ms 102.61 ms -0.09% (-2.23% to +2.25%)
 ↳ flock-reductions 174.77 ms 174.95 ms -0.47% (-3.28% to +0.82%)
 ↳ pcs-open 222.75 ms 219.25 ms -1.61% (-3.17% to -1.33%)
 ↳ prove-bus 55.62 ms 55.61 ms -0.34% (-1.32% to +0.99%)
 ↳ prove-constraints 18.25 ms 17.76 ms -1.56% (-4.13% to +4.21%)

Verifying time

benchmark runner base this PR change
aggregate-leanxmss-100-2to1-4thread-first x86-64 3.89 ms 3.81 ms -2.42% (-3.13% to -1.28%)
aggregate-leanxmss-100-4to1-node x86-64 5.04 ms 4.95 ms -2.48% (-2.95% to -0.96%)

Time per operation

benchmark runner base this PR change
ntt-forward-22 x86-64 2.28 ms 2.15 ms -6.06% (-7.87% to -2.95%)
Every result

Proving time

benchmark runner CPU base this PR change
aggregate-leanxmss-100-2to1-1thread-first arm64 Neoverse-V2 1.08 s 1.06 s -1.23% (-1.71% to -1.00%)
aggregate-leanxmss-100-2to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 608.74 ms 554.84 ms -8.88% (-9.04% to -8.65%)
aggregate-leanxmss-100-2to1-1thread-node arm64 Neoverse-V2 1.14 s 1.12 s -1.10% (-2.23% to -0.84%)
aggregate-leanxmss-100-2to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 638.78 ms 588.12 ms -8.22% (-8.46% to -7.25%)
aggregate-leanxmss-100-2to1-4thread-first arm64 Neoverse-V2 300.94 ms 300.31 ms -0.72% (-2.67% to +0.30%)
aggregate-leanxmss-100-2to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 192.04 ms 187.23 ms -2.65% (-3.76% to -0.20%)
aggregate-leanxmss-100-2to1-4thread-node arm64 Neoverse-V2 313.86 ms 314.03 ms +0.14% (-0.78% to +6.04%)
aggregate-leanxmss-100-2to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 199.70 ms 196.01 ms -1.90% (-2.12% to -1.09%)
aggregate-leanxmss-100-2to1-8thread-first arm64 Neoverse-V2 193.76 ms 194.09 ms +0.17% (-1.96% to +0.58%)
aggregate-leanxmss-100-2to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 123.33 ms 120.19 ms -2.33% (-7.67% to -1.59%)
aggregate-leanxmss-100-2to1-8thread-node arm64 Neoverse-V2 202.29 ms 202.33 ms +0.28% (-1.58% to +0.78%)
aggregate-leanxmss-100-2to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 127.75 ms 126.22 ms -1.20% (-10.25% to +6.33%)
aggregate-leanxmss-100-2to1-first arm64 Neoverse-V2 128.34 ms 130.33 ms +0.70% (-0.50% to +2.30%)
aggregate-leanxmss-100-2to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 86.98 ms 85.50 ms -1.70% (-2.52% to +0.82%)
aggregate-leanxmss-100-2to1-node arm64 Neoverse-V2 132.15 ms 132.49 ms +0.38% (-0.68% to +2.57%)
aggregate-leanxmss-100-2to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 90.08 ms 88.30 ms -1.87% (-3.30% to +0.36%)
aggregate-leanxmss-100-4to1-1thread-first arm64 Neoverse-V2 2.13 s 2.10 s -1.13% (-1.72% to -0.92%)
aggregate-leanxmss-100-4to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 1.18 s 1.12 s -4.98% (-5.58% to -2.73%)
aggregate-leanxmss-100-4to1-1thread-node arm64 Neoverse-V2 2.30 s 2.28 s -0.83% (-1.83% to -0.70%)
aggregate-leanxmss-100-4to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 1.30 s 1.23 s -5.09% (-6.15% to -3.79%)
aggregate-leanxmss-100-4to1-4thread-first arm64 Neoverse-V2 587.95 ms 585.35 ms -0.46% (-0.71% to +0.15%)
aggregate-leanxmss-100-4to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 355.08 ms 344.78 ms -3.06% (-3.58% to -2.15%)
aggregate-leanxmss-100-4to1-4thread-node arm64 Neoverse-V2 636.82 ms 634.76 ms -0.34% (-0.54% to +2.08%)
aggregate-leanxmss-100-4to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 385.73 ms 376.52 ms -2.40% (-3.19% to -1.31%)
aggregate-leanxmss-100-4to1-8thread-first arm64 Neoverse-V2 376.62 ms 375.09 ms -0.91% (-1.49% to +0.14%)
aggregate-leanxmss-100-4to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 222.23 ms 217.72 ms -1.92% (-2.39% to +6.79%)
aggregate-leanxmss-100-4to1-8thread-node arm64 Neoverse-V2 403.92 ms 403.09 ms -1.12% (-1.39% to +4.88%)
aggregate-leanxmss-100-4to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 240.09 ms 236.37 ms -2.20% (-2.85% to +0.83%)
aggregate-leanxmss-100-4to1-first arm64 Neoverse-V2 235.97 ms 238.36 ms +0.70% (-0.40% to +1.40%)
aggregate-leanxmss-100-4to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 161.80 ms 160.77 ms -0.65% (-4.64% to +0.25%)
aggregate-leanxmss-100-4to1-node arm64 Neoverse-V2 254.36 ms 253.89 ms -0.18% (-0.75% to +1.18%)
aggregate-leanxmss-100-4to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 173.34 ms 168.75 ms -3.41% (-4.33% to -2.41%)
falcon-7 arm64 Neoverse-V2 723.36 ms 720.74 ms -0.28% (-0.80% to +0.49%)
falcon-7 x86-64 INTEL(R) XEON(R) GOLD 6548N 325.54 ms 320.91 ms -1.60% (-2.00% to -0.46%)
fibonacci-asm-2000000 arm64 Neoverse-V2 1.06 s 1.05 s -0.51% (-0.71% to +0.19%)
fibonacci-asm-2000000 x86-64 INTEL(R) XEON(R) GOLD 6548N 490.05 ms 485.08 ms -0.83% (-1.24% to +0.93%)
flock-add-wrapping-batch-262144 arm64 Neoverse-V2 21.50 ms 20.98 ms -2.42% (-5.61% to +1.10%)
flock-add-wrapping-batch-262144 x86-64 INTEL(R) XEON(R) GOLD 6548N 10.24 ms 9.62 ms -6.68% (-11.04% to +8.72%)
flock-hash-batch-262144 arm64 Neoverse-V2 1.04 s 1.05 s +0.10% (-0.28% to +1.33%)
flock-hash-batch-262144 x86-64 INTEL(R) XEON(R) GOLD 6548N 341.18 ms 347.43 ms +1.40% (-6.92% to +6.05%)
flock-mul-widening-batch-262144 arm64 Neoverse-V2 475.67 ms 472.88 ms -0.55% (-1.17% to -0.14%)
flock-mul-widening-batch-262144 x86-64 INTEL(R) XEON(R) GOLD 6548N 157.83 ms 156.59 ms -0.48% (-1.02% to +4.77%)
flock-mul-wrapping-batch-262144 arm64 Neoverse-V2 264.41 ms 259.07 ms -1.25% (-2.40% to +0.49%)
flock-mul-wrapping-batch-262144 x86-64 INTEL(R) XEON(R) GOLD 6548N 84.81 ms 84.04 ms -0.57% (-2.34% to +0.61%)
hash-50000 arm64 Neoverse-V2 696.31 ms 691.74 ms -0.63% (-0.68% to -0.23%)
hash-50000 x86-64 INTEL(R) XEON(R) GOLD 6548N 312.89 ms 307.35 ms -1.54% (-2.15% to -1.40%)
leansphincs-26 arm64 Neoverse-V2 239.00 ms 239.31 ms -0.31% (-0.92% to +1.66%)
leansphincs-26 x86-64 INTEL(R) XEON(R) GOLD 6548N 131.51 ms 130.30 ms -1.13% (-1.70% to -0.29%)
leanxmss-100 arm64 Neoverse-V2 214.99 ms 214.45 ms +0.06% (-1.79% to +3.08%)
leanxmss-100 x86-64 INTEL(R) XEON(R) GOLD 6548N 115.58 ms 113.48 ms -1.74% (-2.28% to -0.79%)
leanxmss-100-1thread arm64 Neoverse-V2 2.06 s 2.04 s -1.47% (-1.74% to +8.86%)
leanxmss-100-1thread x86-64 INTEL(R) XEON(R) GOLD 6548N 1.04 s 985.53 ms -6.01% (-6.95% to -4.46%)
leanxmss-100-4thread arm64 Neoverse-V2 555.22 ms 552.42 ms -0.48% (-0.77% to -0.08%)
leanxmss-100-4thread x86-64 INTEL(R) XEON(R) GOLD 6548N 268.97 ms 261.91 ms -2.34% (-4.58% to +1.03%)
leanxmss-100-8thread arm64 Neoverse-V2 383.09 ms 382.91 ms +1.33% (-0.32% to +1.60%)
leanxmss-100-8thread x86-64 INTEL(R) XEON(R) GOLD 6548N 179.61 ms 175.33 ms -2.17% (-3.87% to -0.64%)
pcs-commit-22 arm64 Neoverse-V2 8.69 ms 8.75 ms -0.34% (-0.46% to +8.56%)
pcs-commit-22 x86-64 INTEL(R) XEON(R) GOLD 6548N 4.00 ms 3.97 ms -0.71% (-2.42% to +0.16%)
pcs-open-22 arm64 Neoverse-V2 17.32 ms 17.73 ms +1.44% (-0.02% to +17.81%)
pcs-open-22 x86-64 INTEL(R) XEON(R) GOLD 6548N 15.13 ms 14.93 ms -1.47% (-1.72% to -0.20%)
shielded-258 arm64 Neoverse-V2 977.92 ms 967.80 ms -0.38% (-1.37% to +0.69%)
shielded-258 x86-64 INTEL(R) XEON(R) GOLD 6548N 456.52 ms 452.18 ms -0.53% (-1.11% to +1.76%)
stateproof-5 arm64 Neoverse-V2 1.61 s 1.60 s +0.28% (-2.43% to +1.78%)
stateproof-5 x86-64 INTEL(R) XEON(R) GOLD 6548N 725.08 ms 714.01 ms -1.60% (-3.00% to -1.20%)
Prover stages
benchmark runner CPU base this PR change
aggregate-leanxmss-100-2to1-1thread-first arm64 Neoverse-V2 1.08 s 1.06 s -1.23% (-1.71% to -1.00%)
 ↳ build-circuit 12.80 ms 12.79 ms -0.92% (-2.68% to +0.63%)
 ↳ prove-recursion 1.04 s 1.03 s -1.22% (-1.79% to -1.06%)
 ↳ reduce-claims 15.90 ms 15.86 ms +0.13% (-0.75% to +0.99%)
 ↳ reduce-in-rows 1.43 ms 1.42 ms -1.04% (-3.18% to +4.96%)
 ↳ verify 7.06 ms 7.08 ms -0.37% (-2.52% to +1.08%)
aggregate-leanxmss-100-2to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 608.74 ms 554.84 ms -8.88% (-9.04% to -8.65%)
 ↳ build-circuit 14.63 ms 14.42 ms -0.77% (-5.69% to +6.12%)
 ↳ prove-recursion 565.75 ms 512.44 ms -9.38% (-9.82% to -9.27%)
 ↳ reduce-claims 18.31 ms 18.41 ms +0.61% (+0.33% to +0.97%)
 ↳ reduce-in-rows 1.74 ms 1.58 ms -9.64% (-15.55% to -4.42%)
 ↳ verify 7.85 ms 7.75 ms -1.35% (-1.59% to +0.35%)
aggregate-leanxmss-100-2to1-1thread-node arm64 Neoverse-V2 1.14 s 1.12 s -1.10% (-2.23% to -0.84%)
 ↳ build-circuit 12.73 ms 12.68 ms -1.15% (-2.96% to +0.42%)
 ↳ prove-recursion 1.09 s 1.07 s -1.15% (-2.29% to -0.78%)
 ↳ reduce-claims 31.22 ms 30.87 ms -0.60% (-1.67% to -0.30%)
 ↳ reduce-in-rows 1.48 ms 1.47 ms -0.27% (-4.70% to +1.61%)
aggregate-leanxmss-100-2to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 638.78 ms 588.12 ms -8.22% (-8.46% to -7.25%)
 ↳ build-circuit 15.18 ms 15.11 ms -1.23% (-2.44% to +3.49%)
 ↳ prove-recursion 580.16 ms 529.54 ms -9.15% (-9.28% to -7.87%)
 ↳ reduce-claims 33.31 ms 33.33 ms +0.01% (-0.37% to +1.74%)
 ↳ reduce-in-rows 1.83 ms 1.68 ms -7.52% (-17.54% to -2.26%)
aggregate-leanxmss-100-2to1-4thread-first arm64 Neoverse-V2 300.94 ms 300.31 ms -0.72% (-2.67% to +0.30%)
 ↳ build-circuit 10.53 ms 10.43 ms -0.60% (-11.88% to -0.23%)
 ↳ prove-recursion 276.82 ms 276.07 ms -0.70% (-2.48% to +0.25%)
 ↳ reduce-claims 5.51 ms 5.38 ms -2.45% (-15.47% to +9.14%)
 ↳ reduce-in-rows 1.45 ms 1.41 ms -1.16% (-10.93% to +0.07%)
 ↳ verify 6.74 ms 6.71 ms -0.41% (-2.66% to -0.17%)
aggregate-leanxmss-100-2to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 192.04 ms 187.23 ms -2.65% (-3.76% to -0.20%)
 ↳ build-circuit 15.02 ms 14.66 ms -1.98% (-5.63% to +9.05%)
 ↳ prove-recursion 159.80 ms 155.93 ms -2.41% (-3.40% to -1.34%)
 ↳ reduce-claims 7.17 ms 7.29 ms -3.66% (-19.09% to +8.29%)
 ↳ reduce-in-rows 1.95 ms 1.81 ms -7.37% (-10.11% to -5.70%)
 ↳ verify 7.83 ms 7.71 ms -1.38% (-3.04% to -0.61%)
aggregate-leanxmss-100-2to1-4thread-node arm64 Neoverse-V2 313.86 ms 314.03 ms +0.14% (-0.78% to +6.04%)
 ↳ build-circuit 11.13 ms 11.16 ms +1.16% (-0.89% to +8.19%)
 ↳ prove-recursion 285.07 ms 284.71 ms +0.15% (-0.92% to +4.60%)
 ↳ reduce-claims 10.14 ms 10.44 ms +0.39% (-0.28% to +37.21%)
 ↳ reduce-in-rows 1.47 ms 1.46 ms +3.68% (-2.98% to +67.37%)
aggregate-leanxmss-100-2to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 199.70 ms 196.01 ms -1.90% (-2.12% to -1.09%)
 ↳ build-circuit 15.88 ms 15.46 ms -3.05% (-8.41% to +2.87%)
 ↳ prove-recursion 162.77 ms 159.37 ms -2.04% (-2.41% to -1.13%)
 ↳ reduce-claims 11.95 ms 12.34 ms +3.30% (-6.56% to +5.04%)
 ↳ reduce-in-rows 1.98 ms 1.86 ms -3.97% (-8.60% to -0.70%)
aggregate-leanxmss-100-2to1-8thread-first arm64 Neoverse-V2 193.76 ms 194.09 ms +0.17% (-1.96% to +0.58%)
 ↳ build-circuit 10.13 ms 10.12 ms -0.14% (-1.31% to +1.12%)
 ↳ prove-recursion 170.93 ms 171.04 ms +0.03% (-2.02% to +0.88%)
 ↳ reduce-claims 4.41 ms 4.36 ms -2.32% (-3.31% to +8.66%)
 ↳ reduce-in-rows 1.42 ms 1.36 ms -4.01% (-5.74% to +4.26%)
 ↳ verify 6.86 ms 6.82 ms -0.56% (-0.92% to +0.19%)
aggregate-leanxmss-100-2to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 123.33 ms 120.19 ms -2.33% (-7.67% to -1.59%)
 ↳ build-circuit 14.40 ms 14.42 ms -0.39% (-1.54% to +0.13%)
 ↳ prove-recursion 92.04 ms 89.98 ms -2.26% (-11.55% to -1.19%)
 ↳ reduce-claims 6.27 ms 6.15 ms -6.82% (-16.04% to +30.41%)
 ↳ reduce-in-rows 1.96 ms 1.80 ms -8.06% (-12.65% to -2.15%)
 ↳ verify 7.95 ms 7.85 ms -0.84% (-2.41% to +0.13%)
aggregate-leanxmss-100-2to1-8thread-node arm64 Neoverse-V2 202.29 ms 202.33 ms +0.28% (-1.58% to +0.78%)
 ↳ build-circuit 11.17 ms 10.97 ms -1.39% (-1.88% to +2.94%)
 ↳ prove-recursion 176.16 ms 176.42 ms +0.30% (-1.81% to +0.89%)
 ↳ reduce-claims 7.62 ms 7.67 ms +1.17% (-6.12% to +2.84%)
 ↳ reduce-in-rows 1.46 ms 1.44 ms -0.65% (-5.46% to +2.10%)
aggregate-leanxmss-100-2to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 127.75 ms 126.22 ms -1.20% (-10.25% to +6.33%)
 ↳ build-circuit 14.99 ms 15.50 ms +2.16% (-3.28% to +7.16%)
 ↳ prove-recursion 93.98 ms 92.06 ms -1.77% (-10.62% to +7.62%)
 ↳ reduce-claims 9.99 ms 10.09 ms +6.36% (-30.91% to +11.10%)
 ↳ reduce-in-rows 2.04 ms 1.84 ms -8.55% (-13.37% to -5.06%)
aggregate-leanxmss-100-2to1-first arm64 Neoverse-V2 128.34 ms 130.33 ms +0.70% (-0.50% to +2.30%)
 ↳ build-circuit 10.21 ms 10.16 ms -0.52% (-0.84% to +0.71%)
 ↳ prove-recursion 104.85 ms 106.91 ms +0.84% (-0.10% to +2.58%)
 ↳ reduce-claims 4.27 ms 4.09 ms +2.52% (-10.90% to +4.17%)
 ↳ reduce-in-rows 1.43 ms 1.41 ms -0.91% (-4.37% to -0.02%)
 ↳ verify 7.24 ms 7.24 ms +0.55% (-0.72% to +1.04%)
aggregate-leanxmss-100-2to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 86.98 ms 85.50 ms -1.70% (-2.52% to +0.82%)
 ↳ build-circuit 14.64 ms 14.63 ms -1.09% (-8.02% to +3.35%)
 ↳ prove-recursion 54.17 ms 53.44 ms -1.41% (-2.26% to -0.66%)
 ↳ reduce-claims 7.29 ms 7.64 ms +4.81% (-20.61% to +16.71%)
 ↳ reduce-in-rows 1.97 ms 1.83 ms -9.93% (-13.92% to +1.87%)
 ↳ verify 8.64 ms 8.69 ms +0.82% (+0.39% to +1.59%)
aggregate-leanxmss-100-2to1-node arm64 Neoverse-V2 132.15 ms 132.49 ms +0.38% (-0.68% to +2.57%)
 ↳ build-circuit 11.01 ms 11.06 ms +0.13% (-1.68% to +2.07%)
 ↳ prove-recursion 106.96 ms 107.44 ms +0.00% (-0.56% to +3.00%)
 ↳ reduce-claims 6.74 ms 6.73 ms -0.07% (-5.96% to +10.75%)
 ↳ reduce-in-rows 1.47 ms 1.46 ms -2.80% (-4.50% to +0.68%)
aggregate-leanxmss-100-2to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 90.08 ms 88.30 ms -1.87% (-3.30% to +0.36%)
 ↳ build-circuit 15.22 ms 15.31 ms +0.25% (-1.12% to +6.17%)
 ↳ prove-recursion 56.04 ms 54.80 ms -1.82% (-3.40% to -1.63%)
 ↳ reduce-claims 9.61 ms 9.46 ms -7.26% (-16.79% to +14.19%)
 ↳ reduce-in-rows 2.06 ms 1.92 ms -6.69% (-8.70% to -5.59%)
aggregate-leanxmss-100-4to1-1thread-first arm64 Neoverse-V2 2.13 s 2.10 s -1.13% (-1.72% to -0.92%)
 ↳ build-circuit 25.12 ms 25.16 ms +0.36% (-1.02% to +0.99%)
 ↳ prove-recursion 2.07 s 2.04 s -1.17% (-1.74% to -0.96%)
 ↳ reduce-claims 21.02 ms 21.02 ms +0.13% (-0.96% to +2.21%)
 ↳ reduce-in-rows 2.69 ms 2.69 ms -0.39% (-2.39% to +2.44%)
 ↳ verify 13.60 ms 13.60 ms -0.02% (-0.57% to +0.66%)
aggregate-leanxmss-100-4to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 1.18 s 1.12 s -4.98% (-5.58% to -2.73%)
 ↳ build-circuit 34.96 ms 35.02 ms -0.53% (-1.11% to +2.49%)
 ↳ prove-recursion 1.10 s 1.04 s -5.23% (-5.95% to -3.09%)
 ↳ reduce-claims 26.87 ms 26.89 ms -0.10% (-1.16% to +4.28%)
 ↳ reduce-in-rows 4.14 ms 3.60 ms -13.17% (-13.84% to -8.84%)
 ↳ verify 15.69 ms 15.68 ms -0.99% (-1.61% to +0.83%)
aggregate-leanxmss-100-4to1-1thread-node arm64 Neoverse-V2 2.30 s 2.28 s -0.83% (-1.83% to -0.70%)
 ↳ build-circuit 28.92 ms 28.73 ms -0.78% (-2.19% to +1.09%)
 ↳ prove-recursion 2.20 s 2.18 s -0.88% (-1.89% to -0.72%)
 ↳ reduce-claims 54.95 ms 54.93 ms +0.18% (-0.78% to +1.06%)
 ↳ reduce-in-rows 2.87 ms 2.85 ms -0.45% (-2.52% to +0.70%)
aggregate-leanxmss-100-4to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 1.30 s 1.23 s -5.09% (-6.15% to -3.79%)
 ↳ build-circuit 43.28 ms 43.06 ms -2.37% (-4.27% to +4.70%)
 ↳ prove-recursion 1.17 s 1.10 s -5.75% (-6.45% to -4.31%)
 ↳ reduce-claims 64.83 ms 65.82 ms +2.12% (-4.44% to +2.73%)
 ↳ reduce-in-rows 4.34 ms 4.13 ms -5.50% (-11.88% to +2.14%)
aggregate-leanxmss-100-4to1-4thread-first arm64 Neoverse-V2 587.95 ms 585.35 ms -0.46% (-0.71% to +0.15%)
 ↳ build-circuit 21.31 ms 21.38 ms +0.11% (-0.39% to +1.52%)
 ↳ prove-recursion 543.59 ms 540.80 ms -0.44% (-0.79% to +0.14%)
 ↳ reduce-claims 6.98 ms 7.06 ms +1.12% (-7.05% to +4.78%)
 ↳ reduce-in-rows 2.66 ms 2.67 ms +0.10% (-1.29% to +4.11%)
 ↳ verify 13.31 ms 13.28 ms -0.28% (-0.59% to +0.34%)
aggregate-leanxmss-100-4to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 355.08 ms 344.78 ms -3.06% (-3.58% to -2.15%)
 ↳ build-circuit 33.12 ms 31.43 ms -5.45% (-5.78% to +2.29%)
 ↳ prove-recursion 293.14 ms 284.25 ms -3.01% (-4.43% to -2.51%)
 ↳ reduce-claims 9.68 ms 9.87 ms +1.99% (-9.05% to +27.90%)
 ↳ reduce-in-rows 4.09 ms 3.66 ms -10.86% (-14.76% to -4.43%)
 ↳ verify 15.17 ms 15.14 ms -0.39% (-1.81% to +0.58%)
aggregate-leanxmss-100-4to1-4thread-node arm64 Neoverse-V2 636.82 ms 634.76 ms -0.34% (-0.54% to +2.08%)
 ↳ build-circuit 24.94 ms 25.11 ms +0.69% (-0.49% to +2.17%)
 ↳ prove-recursion 578.09 ms 576.29 ms -0.37% (-0.58% to +1.80%)
 ↳ reduce-claims 17.15 ms 17.24 ms +0.86% (-1.56% to +7.20%)
 ↳ reduce-in-rows 2.87 ms 2.88 ms +0.92% (-5.37% to +3.21%)
aggregate-leanxmss-100-4to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 385.73 ms 376.52 ms -2.40% (-3.19% to -1.31%)
 ↳ build-circuit 36.51 ms 37.15 ms +2.97% (-0.71% to +4.99%)
 ↳ prove-recursion 309.22 ms 299.00 ms -3.15% (-3.56% to -2.44%)
 ↳ reduce-claims 20.46 ms 20.45 ms +0.69% (-10.35% to +2.01%)
 ↳ reduce-in-rows 4.33 ms 3.95 ms -8.83% (-14.67% to -5.50%)
aggregate-leanxmss-100-4to1-8thread-first arm64 Neoverse-V2 376.62 ms 375.09 ms -0.91% (-1.49% to +0.14%)
 ↳ build-circuit 21.16 ms 21.09 ms +0.02% (-3.53% to +11.26%)
 ↳ prove-recursion 333.49 ms 331.55 ms -0.89% (-1.75% to +0.12%)
 ↳ reduce-claims 5.36 ms 5.36 ms +0.20% (-3.91% to +2.70%)
 ↳ reduce-in-rows 2.76 ms 2.75 ms +0.49% (-1.58% to +3.33%)
 ↳ verify 13.75 ms 13.70 ms -0.38% (-2.34% to +6.75%)
aggregate-leanxmss-100-4to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 222.23 ms 217.72 ms -1.92% (-2.39% to +6.79%)
 ↳ build-circuit 31.66 ms 31.77 ms +0.98% (-2.35% to +4.89%)
 ↳ prove-recursion 164.32 ms 160.11 ms -2.51% (-2.97% to +8.49%)
 ↳ reduce-claims 6.93 ms 7.00 ms -0.81% (-4.47% to +7.93%)
 ↳ reduce-in-rows 3.94 ms 3.73 ms -4.15% (-7.06% to +5.79%)
 ↳ verify 15.26 ms 15.22 ms -0.28% (-2.62% to +1.74%)
aggregate-leanxmss-100-4to1-8thread-node arm64 Neoverse-V2 403.92 ms 403.09 ms -1.12% (-1.39% to +4.88%)
 ↳ build-circuit 24.85 ms 24.61 ms -1.14% (-2.45% to +1.55%)
 ↳ prove-recursion 351.06 ms 349.99 ms -1.38% (-1.42% to +5.33%)
 ↳ reduce-claims 11.95 ms 12.10 ms +1.96% (-2.60% to +3.70%)
 ↳ reduce-in-rows 2.93 ms 2.93 ms +2.63% (+0.04% to +6.45%)
aggregate-leanxmss-100-4to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 240.09 ms 236.37 ms -2.20% (-2.85% to +0.83%)
 ↳ build-circuit 36.23 ms 36.66 ms +0.95% (-2.38% to +2.88%)
 ↳ prove-recursion 170.87 ms 167.27 ms -2.19% (-2.74% to -0.15%)
 ↳ reduce-claims 14.52 ms 14.19 ms -5.22% (-8.30% to +9.51%)
 ↳ reduce-in-rows 4.31 ms 4.04 ms -5.89% (-7.73% to -4.57%)
aggregate-leanxmss-100-4to1-first arm64 Neoverse-V2 235.97 ms 238.36 ms +0.70% (-0.40% to +1.40%)
 ↳ build-circuit 20.80 ms 20.83 ms +0.14% (-2.24% to +1.13%)
 ↳ prove-recursion 193.06 ms 195.63 ms +1.11% (-0.42% to +1.90%)
 ↳ reduce-claims 4.68 ms 4.70 ms +0.52% (-12.76% to +3.69%)
 ↳ reduce-in-rows 2.70 ms 2.70 ms -0.27% (-1.87% to +2.00%)
 ↳ verify 14.28 ms 14.26 ms -0.03% (-0.56% to +0.06%)
aggregate-leanxmss-100-4to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 161.80 ms 160.77 ms -0.65% (-4.64% to +0.25%)
 ↳ build-circuit 34.40 ms 34.53 ms +0.54% (-4.87% to +4.36%)
 ↳ prove-recursion 96.10 ms 94.88 ms -1.14% (-3.92% to +1.43%)
 ↳ reduce-claims 8.64 ms 9.15 ms -2.31% (-16.76% to +7.71%)
 ↳ reduce-in-rows 4.33 ms 4.00 ms -6.49% (-10.92% to -2.92%)
 ↳ verify 17.69 ms 17.65 ms -0.58% (-2.36% to +7.85%)
aggregate-leanxmss-100-4to1-node arm64 Neoverse-V2 254.36 ms 253.89 ms -0.18% (-0.75% to +1.18%)
 ↳ build-circuit 24.47 ms 24.36 ms -0.43% (-0.58% to +0.39%)
 ↳ prove-recursion 204.33 ms 204.24 ms -0.18% (-1.13% to +1.50%)
 ↳ reduce-claims 9.45 ms 9.53 ms +0.84% (-3.12% to +2.21%)
 ↳ reduce-in-rows 2.87 ms 2.88 ms +0.10% (-0.86% to +0.69%)
aggregate-leanxmss-100-4to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 173.34 ms 168.75 ms -3.41% (-4.33% to -2.41%)
 ↳ build-circuit 38.94 ms 38.16 ms -2.97% (-4.68% to -0.45%)
 ↳ prove-recursion 103.31 ms 97.73 ms -4.76% (-6.08% to -1.52%)
 ↳ reduce-claims 13.14 ms 12.86 ms +1.44% (-20.96% to +2.24%)
 ↳ reduce-in-rows 4.46 ms 4.24 ms -4.30% (-11.30% to -2.38%)
falcon-7 arm64 Neoverse-V2 723.36 ms 720.74 ms -0.28% (-0.80% to +0.49%)
 ↳ build-witness 25.03 ms 25.02 ms -0.17% (-3.71% to +0.69%)
 ↳ commit 97.89 ms 96.03 ms -1.82% (-2.06% to -1.12%)
 ↳ execute-program 31.34 ms 31.31 ms +0.03% (-0.56% to +0.46%)
 ↳ flock-reductions 191.01 ms 191.11 ms +0.05% (-0.16% to +1.91%)
 ↳ pcs-open 336.65 ms 336.19 ms -0.14% (-0.75% to -0.02%)
 ↳ prove-bus 33.25 ms 33.23 ms +0.00% (-0.28% to +4.65%)
 ↳ prove-constraints 7.60 ms 7.61 ms +0.60% (-1.96% to +2.09%)
falcon-7 x86-64 INTEL(R) XEON(R) GOLD 6548N 325.54 ms 320.91 ms -1.60% (-2.00% to -0.46%)
 ↳ build-witness 22.92 ms 22.89 ms -0.60% (-6.10% to +1.54%)
 ↳ commit 42.30 ms 39.54 ms -6.45% (-7.63% to -4.03%)
 ↳ execute-program 36.95 ms 37.06 ms +0.28% (-0.83% to +3.56%)
 ↳ flock-reductions 86.34 ms 86.40 ms +0.09% (-1.24% to +0.98%)
 ↳ pcs-open 102.87 ms 101.09 ms -1.84% (-2.86% to -0.39%)
 ↳ prove-bus 24.27 ms 24.14 ms -0.58% (-3.98% to +1.76%)
 ↳ prove-constraints 9.71 ms 9.46 ms -3.25% (-5.05% to +1.54%)
fibonacci-asm-2000000 arm64 Neoverse-V2 1.06 s 1.05 s -0.51% (-0.71% to +0.19%)
 ↳ build-witness 35.81 ms 35.65 ms -0.31% (-1.63% to +0.70%)
 ↳ commit 148.64 ms 146.87 ms -1.19% (-1.48% to -0.95%)
 ↳ execute-program 62.72 ms 63.45 ms +0.51% (-5.03% to +6.25%)
 ↳ flock-reductions 311.24 ms 310.76 ms -0.15% (-0.43% to +0.69%)
 ↳ pcs-open 438.10 ms 434.02 ms -0.39% (-1.09% to +0.56%)
 ↳ prove-bus 52.98 ms 53.04 ms +0.10% (-0.40% to +0.14%)
 ↳ prove-constraints 10.71 ms 10.72 ms +0.10% (-1.12% to +1.05%)
fibonacci-asm-2000000 x86-64 INTEL(R) XEON(R) GOLD 6548N 490.05 ms 485.08 ms -0.83% (-1.24% to +0.93%)
 ↳ build-witness 36.34 ms 36.41 ms -0.39% (-1.33% to +4.56%)
 ↳ commit 63.73 ms 60.77 ms -4.59% (-7.21% to -3.72%)
 ↳ execute-program 78.34 ms 79.12 ms +1.26% (+0.69% to +2.47%)
 ↳ flock-reductions 124.18 ms 123.50 ms -0.66% (-0.75% to +0.30%)
 ↳ pcs-open 138.99 ms 137.02 ms -1.08% (-2.12% to +3.64%)
 ↳ prove-bus 35.57 ms 35.91 ms +0.47% (-0.40% to +1.70%)
 ↳ prove-constraints 12.85 ms 12.89 ms +0.27% (-0.36% to +0.39%)
hash-50000 arm64 Neoverse-V2 696.31 ms 691.74 ms -0.63% (-0.68% to -0.23%)
 ↳ build-witness 24.63 ms 24.52 ms -0.55% (-6.05% to +1.92%)
 ↳ commit 97.69 ms 95.89 ms -1.63% (-2.37% to -1.40%)
 ↳ execute-program 23.24 ms 23.07 ms -0.42% (-3.61% to +0.51%)
 ↳ flock-reductions 179.03 ms 178.77 ms -0.34% (-0.36% to +0.12%)
 ↳ pcs-open 336.89 ms 334.63 ms -0.37% (-0.71% to +0.26%)
 ↳ prove-bus 27.74 ms 27.63 ms -0.31% (-1.06% to +0.28%)
 ↳ prove-constraints 6.99 ms 7.04 ms +0.95% (-0.61% to +1.23%)
hash-50000 x86-64 INTEL(R) XEON(R) GOLD 6548N 312.89 ms 307.35 ms -1.54% (-2.15% to -1.40%)
 ↳ build-witness 23.30 ms 23.24 ms -0.56% (-0.75% to +7.29%)
 ↳ commit 41.87 ms 39.30 ms -6.27% (-7.55% to -4.31%)
 ↳ execute-program 28.18 ms 27.58 ms -1.69% (-6.00% to +0.89%)
 ↳ flock-reductions 87.54 ms 87.48 ms -0.24% (-1.11% to +0.08%)
 ↳ pcs-open 101.79 ms 100.10 ms -1.58% (-2.12% to -1.14%)
 ↳ prove-bus 20.40 ms 20.25 ms -0.39% (-2.71% to -0.17%)
 ↳ prove-constraints 9.23 ms 8.96 ms -2.90% (-4.48% to +2.19%)
leansphincs-26 arm64 Neoverse-V2 239.00 ms 239.31 ms -0.31% (-0.92% to +1.66%)
 ↳ build-witness 7.10 ms 7.13 ms -0.33% (-19.31% to +1.80%)
 ↳ commit 28.17 ms 28.01 ms -0.77% (-4.36% to -0.51%)
 ↳ execute-program 11.75 ms 11.63 ms -1.06% (-12.39% to +1.53%)
 ↳ flock-reductions 68.17 ms 68.35 ms +0.26% (-0.95% to +0.96%)
 ↳ pcs-open 103.62 ms 104.64 ms +0.90% (-0.46% to +4.67%)
 ↳ prove-bus 14.33 ms 14.51 ms +2.09% (-3.83% to +6.97%)
 ↳ prove-constraints 4.28 ms 4.21 ms -0.98% (-4.62% to -0.35%)
leansphincs-26 x86-64 INTEL(R) XEON(R) GOLD 6548N 131.51 ms 130.30 ms -1.13% (-1.70% to -0.29%)
 ↳ build-witness 8.78 ms 8.79 ms +0.57% (-1.06% to +1.58%)
 ↳ commit 12.78 ms 11.52 ms -10.45% (-10.99% to -9.14%)
 ↳ execute-program 14.53 ms 14.51 ms -0.33% (-1.61% to +0.86%)
 ↳ flock-reductions 41.46 ms 41.61 ms +0.38% (-0.47% to +1.30%)
 ↳ pcs-open 35.39 ms 35.47 ms -0.42% (-3.01% to +0.21%)
 ↳ prove-bus 12.46 ms 12.42 ms +0.61% (-2.31% to +3.05%)
 ↳ prove-constraints 5.44 ms 5.44 ms +0.07% (-12.03% to +0.33%)
leanxmss-100 arm64 Neoverse-V2 214.99 ms 214.45 ms +0.06% (-1.79% to +3.08%)
 ↳ build-witness 6.11 ms 6.12 ms +0.58% (-1.28% to +2.00%)
 ↳ commit 24.39 ms 24.21 ms -1.17% (-1.44% to -0.12%)
 ↳ execute-program 10.22 ms 10.24 ms +0.28% (-1.53% to +1.26%)
 ↳ flock-reductions 63.24 ms 63.33 ms +0.13% (-5.38% to +8.46%)
 ↳ pcs-open 94.31 ms 94.33 ms +0.02% (+0.00% to +1.90%)
 ↳ prove-bus 12.64 ms 12.67 ms +0.68% (-0.35% to +3.28%)
 ↳ prove-constraints 3.82 ms 3.79 ms -0.26% (-3.64% to +0.24%)
leanxmss-100 x86-64 INTEL(R) XEON(R) GOLD 6548N 115.58 ms 113.48 ms -1.74% (-2.28% to -0.79%)
 ↳ build-witness 6.29 ms 6.30 ms -0.48% (-1.82% to +3.82%)
 ↳ commit 11.21 ms 9.70 ms -13.02% (-14.85% to -12.11%)
 ↳ execute-program 12.94 ms 12.97 ms +0.73% (-3.38% to +1.43%)
 ↳ flock-reductions 37.29 ms 37.27 ms +0.37% (-1.30% to +1.48%)
 ↳ pcs-open 31.74 ms 31.28 ms -1.42% (-4.18% to -0.21%)
 ↳ prove-bus 11.14 ms 11.14 ms -0.38% (-1.53% to +2.30%)
 ↳ prove-constraints 4.61 ms 4.60 ms -0.51% (-2.17% to +1.77%)
leanxmss-100-1thread arm64 Neoverse-V2 2.06 s 2.04 s -1.47% (-1.74% to +8.86%)
 ↳ build-witness 65.38 ms 65.90 ms +0.93% (-0.32% to +1.11%)
 ↳ commit 357.73 ms 340.34 ms -4.80% (-4.95% to -3.88%)
 ↳ execute-program 10.11 ms 10.08 ms -0.71% (-1.23% to +0.25%)
 ↳ flock-reductions 703.24 ms 700.90 ms -0.00% (-0.74% to +0.16%)
 ↳ pcs-open 797.77 ms 785.64 ms -1.17% (-2.08% to +25.16%)
 ↳ prove-bus 117.64 ms 117.29 ms -0.50% (-3.38% to +2.45%)
 ↳ prove-constraints 14.53 ms 14.27 ms -1.65% (-4.42% to +2.06%)
leanxmss-100-1thread x86-64 INTEL(R) XEON(R) GOLD 6548N 1.04 s 985.53 ms -6.01% (-6.95% to -4.46%)
 ↳ build-witness 75.70 ms 75.05 ms -0.96% (-1.85% to +0.09%)
 ↳ commit 185.50 ms 132.49 ms -28.63% (-31.79% to -27.28%)
 ↳ execute-program 13.13 ms 13.18 ms -2.05% (-2.40% to +2.95%)
 ↳ flock-reductions 306.73 ms 307.18 ms +0.07% (-0.59% to +1.20%)
 ↳ pcs-open 356.12 ms 347.20 ms -2.55% (-3.46% to -1.19%)
 ↳ prove-bus 88.00 ms 85.63 ms +1.57% (-4.11% to +7.89%)
 ↳ prove-constraints 19.21 ms 19.02 ms -1.63% (-4.29% to +3.11%)
leanxmss-100-4thread arm64 Neoverse-V2 555.22 ms 552.42 ms -0.48% (-0.77% to -0.08%)
 ↳ build-witness 17.72 ms 17.73 ms +0.10% (-0.28% to +0.20%)
 ↳ commit 90.13 ms 88.63 ms -1.56% (-2.25% to -1.25%)
 ↳ execute-program 9.98 ms 9.99 ms -0.13% (-0.90% to +3.96%)
 ↳ flock-reductions 187.30 ms 187.79 ms +0.23% (-0.17% to +0.31%)
 ↳ pcs-open 211.69 ms 210.24 ms -0.88% (-0.94% to +0.33%)
 ↳ prove-bus 32.38 ms 32.40 ms +0.14% (-0.25% to +0.19%)
 ↳ prove-constraints 5.53 ms 5.54 ms +0.20% (-0.21% to +0.24%)
leanxmss-100-4thread x86-64 INTEL(R) XEON(R) GOLD 6548N 268.97 ms 261.91 ms -2.34% (-4.58% to +1.03%)
 ↳ build-witness 19.71 ms 19.70 ms -0.04% (-4.80% to +5.70%)
 ↳ commit 40.97 ms 35.96 ms -12.23% (-18.76% to -7.99%)
 ↳ execute-program 12.00 ms 11.79 ms -3.19% (-5.88% to +3.74%)
 ↳ flock-reductions 80.38 ms 80.52 ms +0.55% (-0.28% to +1.08%)
 ↳ pcs-open 85.78 ms 84.66 ms -2.05% (-4.00% to +5.12%)
 ↳ prove-bus 23.39 ms 23.60 ms +1.45% (-0.88% to +3.82%)
 ↳ prove-constraints 6.80 ms 7.03 ms +3.18% (-0.39% to +6.50%)
leanxmss-100-8thread arm64 Neoverse-V2 383.09 ms 382.91 ms +1.33% (-0.32% to +1.60%)
 ↳ build-witness 10.65 ms 10.78 ms +1.74% (-1.80% to +8.42%)
 ↳ commit 47.45 ms 46.85 ms -0.92% (-2.24% to +0.34%)
 ↳ execute-program 11.05 ms 11.14 ms -0.06% (-6.99% to +5.33%)
 ↳ flock-reductions 106.32 ms 106.37 ms -0.22% (-0.46% to +0.76%)
 ↳ pcs-open 182.69 ms 183.67 ms +1.90% (+0.53% to +3.14%)
 ↳ prove-bus 20.19 ms 20.21 ms +0.19% (-0.33% to +1.97%)
 ↳ prove-constraints 4.36 ms 4.37 ms +0.32% (-0.79% to +2.25%)
leanxmss-100-8thread x86-64 INTEL(R) XEON(R) GOLD 6548N 179.61 ms 175.33 ms -2.17% (-3.87% to -0.64%)
 ↳ build-witness 11.64 ms 11.70 ms +0.13% (-2.00% to +1.99%)
 ↳ commit 23.76 ms 20.54 ms -13.30% (-14.38% to -12.80%)
 ↳ execute-program 12.88 ms 12.90 ms +0.52% (-2.84% to +2.67%)
 ↳ flock-reductions 51.84 ms 51.93 ms +0.19% (-0.07% to +0.72%)
 ↳ pcs-open 57.80 ms 57.08 ms -1.41% (-5.94% to +3.31%)
 ↳ prove-bus 15.72 ms 15.72 ms -0.57% (-1.30% to +1.16%)
 ↳ prove-constraints 5.20 ms 5.16 ms -0.67% (-2.82% to +1.18%)
shielded-258 arm64 Neoverse-V2 977.92 ms 967.80 ms -0.38% (-1.37% to +0.69%)
 ↳ build-witness 31.46 ms 31.39 ms +0.06% (-0.48% to +1.57%)
 ↳ commit 135.03 ms 132.51 ms -1.86% (-2.24% to -1.62%)
 ↳ execute-program 57.56 ms 57.20 ms -0.01% (-13.13% to +0.72%)
 ↳ flock-reductions 253.43 ms 253.11 ms -0.06% (-1.36% to +0.16%)
 ↳ pcs-open 429.33 ms 429.12 ms -0.47% (-0.96% to +1.84%)
 ↳ prove-bus 54.60 ms 54.63 ms +0.31% (-0.05% to +1.35%)
 ↳ prove-constraints 9.93 ms 10.00 ms +0.68% (+0.02% to +1.99%)
shielded-258 x86-64 INTEL(R) XEON(R) GOLD 6548N 456.52 ms 452.18 ms -0.53% (-1.11% to +1.76%)
 ↳ build-witness 32.83 ms 32.88 ms +0.18% (-1.40% to +6.51%)
 ↳ commit 58.05 ms 55.38 ms -4.74% (-6.13% to -3.06%)
 ↳ execute-program 73.37 ms 73.02 ms +0.55% (-1.81% to +3.21%)
 ↳ flock-reductions 112.19 ms 112.45 ms +0.24% (-0.66% to +0.84%)
 ↳ pcs-open 131.14 ms 129.67 ms -0.97% (-1.13% to +3.05%)
 ↳ prove-bus 36.81 ms 37.20 ms +1.24% (-0.02% to +2.23%)
 ↳ prove-constraints 11.22 ms 11.15 ms -0.60% (-1.62% to +2.64%)
stateproof-5 arm64 Neoverse-V2 1.61 s 1.60 s +0.28% (-2.43% to +1.78%)
 ↳ build-witness 52.99 ms 52.94 ms +0.77% (-2.10% to +4.50%)
 ↳ commit 224.67 ms 225.28 ms -0.12% (-1.53% to +1.94%)
 ↳ execute-program 76.58 ms 76.61 ms +1.91% (-3.45% to +10.63%)
 ↳ flock-reductions 391.81 ms 391.03 ms -0.28% (-0.72% to +2.43%)
 ↳ pcs-open 761.53 ms 757.03 ms +0.50% (-3.98% to +3.19%)
 ↳ prove-bus 84.67 ms 83.96 ms +0.19% (-1.89% to +15.72%)
 ↳ prove-constraints 16.00 ms 15.85 ms -1.47% (-2.26% to +10.92%)
stateproof-5 x86-64 INTEL(R) XEON(R) GOLD 6548N 725.08 ms 714.01 ms -1.60% (-3.00% to -1.20%)
 ↳ build-witness 53.72 ms 53.40 ms -0.77% (-2.90% to +1.58%)
 ↳ commit 98.50 ms 91.14 ms -7.38% (-7.99% to -6.91%)
 ↳ execute-program 102.65 ms 102.61 ms -0.09% (-2.23% to +2.25%)
 ↳ flock-reductions 174.77 ms 174.95 ms -0.47% (-3.28% to +0.82%)
 ↳ pcs-open 222.75 ms 219.25 ms -1.61% (-3.17% to -1.33%)
 ↳ prove-bus 55.62 ms 55.61 ms -0.34% (-1.32% to +0.99%)
 ↳ prove-constraints 18.25 ms 17.76 ms -1.56% (-4.13% to +4.21%)

Verifying time

benchmark runner CPU base this PR change
aggregate-leanxmss-100-2to1-1thread-first arm64 Neoverse-V2 4.93 ms 4.80 ms -0.43% (-5.60% to +4.49%)
aggregate-leanxmss-100-2to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 4.49 ms 4.49 ms -0.08% (-1.29% to +0.79%)
aggregate-leanxmss-100-2to1-1thread-node arm64 Neoverse-V2 7.69 ms 7.52 ms -0.95% (-5.43% to +2.46%)
aggregate-leanxmss-100-2to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 7.19 ms 7.12 ms +0.01% (-2.92% to +7.70%)
aggregate-leanxmss-100-2to1-4thread-first arm64 Neoverse-V2 3.51 ms 3.48 ms -0.37% (-6.69% to +11.12%)
aggregate-leanxmss-100-2to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 3.89 ms 3.81 ms -2.42% (-3.13% to -1.28%)
aggregate-leanxmss-100-2to1-4thread-node arm64 Neoverse-V2 4.29 ms 4.22 ms -0.78% (-2.55% to +1.54%)
aggregate-leanxmss-100-2to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 4.94 ms 4.79 ms -2.57% (-3.29% to +1.99%)
aggregate-leanxmss-100-2to1-8thread-first arm64 Neoverse-V2 3.41 ms 3.42 ms +0.26% (-0.30% to +0.47%)
aggregate-leanxmss-100-2to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 3.82 ms 3.78 ms -0.55% (-4.89% to +5.70%)
aggregate-leanxmss-100-2to1-8thread-node arm64 Neoverse-V2 3.82 ms 3.82 ms -0.31% (-0.55% to +0.99%)
aggregate-leanxmss-100-2to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 4.22 ms 4.25 ms +0.52% (-2.76% to +1.06%)
aggregate-leanxmss-100-2to1-first arm64 Neoverse-V2 3.50 ms 3.46 ms -0.06% (-1.38% to +0.41%)
aggregate-leanxmss-100-2to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 4.26 ms 4.30 ms -0.00% (-3.79% to +2.16%)
aggregate-leanxmss-100-2to1-node arm64 Neoverse-V2 3.73 ms 3.71 ms -0.18% (-0.94% to +1.02%)
aggregate-leanxmss-100-2to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 4.34 ms 4.36 ms +0.53% (-2.16% to +1.65%)
aggregate-leanxmss-100-4to1-1thread-first arm64 Neoverse-V2 5.51 ms 5.49 ms -0.22% (-1.02% to -0.01%)
aggregate-leanxmss-100-4to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 6.13 ms 6.20 ms +4.23% (-8.28% to +8.92%)
aggregate-leanxmss-100-4to1-1thread-node arm64 Neoverse-V2 11.03 ms 10.91 ms -2.05% (-6.04% to +2.46%)
aggregate-leanxmss-100-4to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 13.01 ms 12.92 ms -1.51% (-2.99% to +1.48%)
aggregate-leanxmss-100-4to1-4thread-first arm64 Neoverse-V2 3.87 ms 3.87 ms -0.03% (-0.64% to +0.62%)
aggregate-leanxmss-100-4to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 4.15 ms 4.12 ms +0.25% (-5.13% to +5.71%)
aggregate-leanxmss-100-4to1-4thread-node arm64 Neoverse-V2 5.31 ms 5.33 ms +0.44% (-2.16% to +5.74%)
aggregate-leanxmss-100-4to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 6.15 ms 6.09 ms -1.50% (-2.13% to +3.90%)
aggregate-leanxmss-100-4to1-8thread-first arm64 Neoverse-V2 3.79 ms 3.76 ms -0.61% (-7.24% to +0.19%)
aggregate-leanxmss-100-4to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 4.02 ms 4.03 ms +0.41% (-2.46% to +2.43%)
aggregate-leanxmss-100-4to1-8thread-node arm64 Neoverse-V2 4.61 ms 4.56 ms -1.57% (-2.83% to +3.86%)
aggregate-leanxmss-100-4to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 5.04 ms 5.02 ms -1.09% (-2.01% to +2.20%)
aggregate-leanxmss-100-4to1-first arm64 Neoverse-V2 3.76 ms 3.76 ms -0.19% (-2.97% to +0.94%)
aggregate-leanxmss-100-4to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 4.79 ms 4.67 ms -0.85% (-3.32% to +0.42%)
aggregate-leanxmss-100-4to1-node arm64 Neoverse-V2 4.24 ms 4.21 ms -0.57% (-5.96% to +0.47%)
aggregate-leanxmss-100-4to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 5.04 ms 4.95 ms -2.48% (-2.95% to -0.96%)
falcon-7 arm64 Neoverse-V2 4.20 ms 4.20 ms -0.01% (-0.58% to +0.29%)
falcon-7 x86-64 INTEL(R) XEON(R) GOLD 6548N 4.73 ms 4.72 ms +0.47% (-0.99% to +1.13%)
fibonacci-asm-2000000 arm64 Neoverse-V2 4.00 ms 4.00 ms -0.11% (-0.48% to +0.57%)
fibonacci-asm-2000000 x86-64 INTEL(R) XEON(R) GOLD 6548N 4.74 ms 4.81 ms +1.48% (-1.48% to +2.21%)
hash-50000 arm64 Neoverse-V2 4.02 ms 4.01 ms -0.17% (-1.38% to +0.66%)
hash-50000 x86-64 INTEL(R) XEON(R) GOLD 6548N 4.47 ms 4.46 ms -0.10% (-0.73% to +0.85%)
leansphincs-26 arm64 Neoverse-V2 4.03 ms 4.02 ms -0.32% (-5.73% to +3.45%)
leansphincs-26 x86-64 INTEL(R) XEON(R) GOLD 6548N 4.46 ms 4.49 ms +0.54% (-0.77% to +0.96%)
leanxmss-100 arm64 Neoverse-V2 3.98 ms 3.99 ms +0.03% (-1.98% to +0.41%)
leanxmss-100 x86-64 INTEL(R) XEON(R) GOLD 6548N 4.45 ms 4.46 ms +0.29% (-0.53% to +0.72%)
leanxmss-100-1thread arm64 Neoverse-V2 3.84 ms 3.95 ms +0.55% (-1.69% to +21.85%)
leanxmss-100-1thread x86-64 INTEL(R) XEON(R) GOLD 6548N 4.11 ms 4.12 ms +0.24% (-0.94% to +4.00%)
leanxmss-100-4thread arm64 Neoverse-V2 3.77 ms 3.76 ms -0.38% (-0.51% to +0.11%)
leanxmss-100-4thread x86-64 INTEL(R) XEON(R) GOLD 6548N 3.71 ms 3.81 ms +0.20% (-1.79% to +4.04%)
leanxmss-100-8thread arm64 Neoverse-V2 4.14 ms 4.16 ms +0.79% (-0.20% to +0.86%)
leanxmss-100-8thread x86-64 INTEL(R) XEON(R) GOLD 6548N 4.13 ms 4.11 ms -0.85% (-0.97% to +0.24%)
shielded-258 arm64 Neoverse-V2 4.19 ms 4.18 ms -0.28% (-1.33% to +0.36%)
shielded-258 x86-64 INTEL(R) XEON(R) GOLD 6548N 4.62 ms 4.67 ms +0.34% (-0.72% to +1.64%)
stateproof-5 arm64 Neoverse-V2 4.55 ms 4.54 ms +0.21% (-5.59% to +0.88%)
stateproof-5 x86-64 INTEL(R) XEON(R) GOLD 6548N 5.04 ms 5.09 ms +0.44% (-0.62% to +1.95%)

Time per operation

benchmark runner CPU base this PR change
blake2s-batch arm64 Neoverse-V2 3.84 ns 3.83 ns +0.03% (-0.31% to +1.40%)
blake2s-batch x86-64 INTEL(R) XEON(R) GOLD 6548N 0.80 ns 0.80 ns +0.00% (-0.25% to +0.38%)
f192-inv arm64 Neoverse-V2 244.94 ns 244.97 ns +0.00% (-0.05% to +0.09%)
f192-inv x86-64 INTEL(R) XEON(R) GOLD 6548N 269.59 ns 269.80 ns +0.57% (-1.09% to +2.47%)
f192-mul-latency arm64 Neoverse-V2 8.04 ns 8.03 ns -0.14% (-0.81% to +0.11%)
f192-mul-latency x86-64 INTEL(R) XEON(R) GOLD 6548N 7.68 ns 7.59 ns -1.39% (-2.66% to +3.21%)
f192-mul-throughput arm64 Neoverse-V2 2.94 ns 2.94 ns +0.03% (-0.07% to +0.03%)
f192-mul-throughput x86-64 INTEL(R) XEON(R) GOLD 6548N 4.53 ns 4.52 ns -0.02% (-2.79% to +0.53%)
f192-mul4-latency arm64 Neoverse-V2 13.07 ns 12.76 ns -0.54% (-2.98% to +4.24%)
f192-mul4-latency x86-64 INTEL(R) XEON(R) GOLD 6548N 10.22 ns 10.34 ns +1.36% (-1.78% to +2.88%)
f192-mul4-throughput arm64 Neoverse-V2 10.76 ns 10.76 ns +0.03% (-0.03% to +0.11%)
f192-mul4-throughput x86-64 INTEL(R) XEON(R) GOLD 6548N 15.88 ns 16.00 ns -0.56% (-1.71% to +6.69%)
f192-square arm64 Neoverse-V2 1.70 ns 1.70 ns +0.00% (-0.18% to +0.00%)
f192-square x86-64 INTEL(R) XEON(R) GOLD 6548N 3.37 ns 3.43 ns +1.63% (-1.12% to +2.62%)
f64-inv arm64 Neoverse-V2 211.53 ns 211.51 ns +0.00% (-0.09% to +0.01%)
f64-inv x86-64 INTEL(R) XEON(R) GOLD 6548N 242.41 ns 240.89 ns -1.04% (-1.96% to +1.53%)
f64-mul arm64 Neoverse-V2 0.56 ns 0.56 ns +0.00% (-0.18% to +0.18%)
f64-mul x86-64 INTEL(R) XEON(R) GOLD 6548N 0.88 ns 0.88 ns +0.00% (-3.11% to +3.32%)
f64-square arm64 Neoverse-V2 0.55 ns 0.55 ns +0.00% (-1.27% to +0.36%)
f64-square x86-64 INTEL(R) XEON(R) GOLD 6548N 1.10 ns 1.10 ns +0.27% (-1.18% to +7.46%)
ntt-forward-22 arm64 Neoverse-V2 3.83 ms 3.88 ms +1.24% (-0.17% to +4.46%)
ntt-forward-22 x86-64 INTEL(R) XEON(R) GOLD 6548N 2.28 ms 2.15 ms -6.06% (-7.87% to -2.95%)
transpose-64bytes arm64 Neoverse-V2 12.00 ns 12.00 ns -0.02% (-0.03% to +0.03%)
transpose-64bytes x86-64 INTEL(R) XEON(R) GOLD 6548N 0.86 ns 0.87 ns +0.82% (-0.58% to +4.48%)
transpose-64x64 arm64 Neoverse-V2 96.42 ns 96.44 ns -0.01% (-0.18% to +0.13%)
transpose-64x64 x86-64 INTEL(R) XEON(R) GOLD 6548N 74.33 ns 74.36 ns -0.08% (-1.01% to +4.63%)

Proof size

benchmark runner CPU base this PR change
aggregate-leanxmss-100-2to1-1thread-first arm64 Neoverse-V2 260,427 B 260,427 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 260,427 B 260,427 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-1thread-node arm64 Neoverse-V2 259,659 B 259,659 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 259,659 B 259,659 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-4thread-first arm64 Neoverse-V2 260,427 B 260,427 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 260,427 B 260,427 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-4thread-node arm64 Neoverse-V2 259,659 B 259,659 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 259,659 B 259,659 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-8thread-first arm64 Neoverse-V2 260,427 B 260,427 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 260,427 B 260,427 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-8thread-node arm64 Neoverse-V2 259,659 B 259,659 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 259,659 B 259,659 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first arm64 Neoverse-V2 260,427 B 260,427 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 260,427 B 260,427 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node arm64 Neoverse-V2 259,659 B 259,659 B 0 B (+0.00%)
aggregate-leanxmss-100-2to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 259,659 B 259,659 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-1thread-first arm64 Neoverse-V2 283,331 B 283,331 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 283,331 B 283,331 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-1thread-node arm64 Neoverse-V2 285,027 B 285,027 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 285,027 B 285,027 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-4thread-first arm64 Neoverse-V2 283,331 B 283,331 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 283,331 B 283,331 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-4thread-node arm64 Neoverse-V2 285,027 B 285,027 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 285,027 B 285,027 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-8thread-first arm64 Neoverse-V2 283,331 B 283,331 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 283,331 B 283,331 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-8thread-node arm64 Neoverse-V2 285,027 B 285,027 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 285,027 B 285,027 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first arm64 Neoverse-V2 283,331 B 283,331 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 283,331 B 283,331 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node arm64 Neoverse-V2 285,027 B 285,027 B 0 B (+0.00%)
aggregate-leanxmss-100-4to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 285,027 B 285,027 B 0 B (+0.00%)
falcon-7 arm64 Neoverse-V2 326,382 B 326,382 B 0 B (+0.00%)
falcon-7 x86-64 INTEL(R) XEON(R) GOLD 6548N 326,382 B 326,382 B 0 B (+0.00%)
fibonacci-asm-2000000 arm64 Neoverse-V2 366,742 B 366,742 B 0 B (+0.00%)
fibonacci-asm-2000000 x86-64 INTEL(R) XEON(R) GOLD 6548N 366,742 B 366,742 B 0 B (+0.00%)
hash-50000 arm64 Neoverse-V2 326,742 B 326,742 B 0 B (+0.00%)
hash-50000 x86-64 INTEL(R) XEON(R) GOLD 6548N 326,742 B 326,742 B 0 B (+0.00%)
leansphincs-26 arm64 Neoverse-V2 319,734 B 319,734 B 0 B (+0.00%)
leansphincs-26 x86-64 INTEL(R) XEON(R) GOLD 6548N 319,734 B 319,734 B 0 B (+0.00%)
leanxmss-100 arm64 Neoverse-V2 307,670 B 307,670 B 0 B (+0.00%)
leanxmss-100 x86-64 INTEL(R) XEON(R) GOLD 6548N 307,670 B 307,670 B 0 B (+0.00%)
leanxmss-100-1thread arm64 Neoverse-V2 307,670 B 307,670 B 0 B (+0.00%)
leanxmss-100-1thread x86-64 INTEL(R) XEON(R) GOLD 6548N 307,670 B 307,670 B 0 B (+0.00%)
leanxmss-100-4thread arm64 Neoverse-V2 307,670 B 307,670 B 0 B (+0.00%)
leanxmss-100-4thread x86-64 INTEL(R) XEON(R) GOLD 6548N 307,670 B 307,670 B 0 B (+0.00%)
leanxmss-100-8thread arm64 Neoverse-V2 307,670 B 307,670 B 0 B (+0.00%)
leanxmss-100-8thread x86-64 INTEL(R) XEON(R) GOLD 6548N 307,670 B 307,670 B 0 B (+0.00%)
shielded-258 arm64 Neoverse-V2 357,614 B 357,614 B 0 B (+0.00%)
shielded-258 x86-64 INTEL(R) XEON(R) GOLD 6548N 357,614 B 357,614 B 0 B (+0.00%)
stateproof-5 arm64 Neoverse-V2 350,614 B 350,614 B 0 B (+0.00%)
stateproof-5 x86-64 INTEL(R) XEON(R) GOLD 6548N 350,614 B 350,614 B 0 B (+0.00%)

Peak memory

benchmark runner CPU base this PR change
aggregate-leanxmss-100-2to1-1thread-first arm64 Neoverse-V2 1780.75 MiB 1780.61 MiB -0.01% (-0.01% to -0.01%)
aggregate-leanxmss-100-2to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 1174.34 MiB 1176.62 MiB +0.19% (+0.19% to +0.49%)
aggregate-leanxmss-100-2to1-1thread-node arm64 Neoverse-V2 1781.00 MiB 1780.86 MiB -0.01% (-0.01% to -0.01%)
aggregate-leanxmss-100-2to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 1174.34 MiB 1176.62 MiB +0.19% (+0.02% to +0.49%)
aggregate-leanxmss-100-2to1-4thread-first arm64 Neoverse-V2 1842.48 MiB 1843.93 MiB +0.13% (+0.03% to +0.39%)
aggregate-leanxmss-100-2to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 1205.45 MiB 1203.21 MiB -0.20% (-0.30% to +0.17%)
aggregate-leanxmss-100-2to1-4thread-node arm64 Neoverse-V2 1850.01 MiB 1850.91 MiB +0.08% (-0.13% to +0.21%)
aggregate-leanxmss-100-2to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 1212.20 MiB 1213.80 MiB +0.09% (-0.18% to +0.18%)
aggregate-leanxmss-100-2to1-8thread-first arm64 Neoverse-V2 1887.87 MiB 1887.08 MiB -0.18% (-0.42% to +0.15%)
aggregate-leanxmss-100-2to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 1187.20 MiB 1190.92 MiB +0.55% (-0.44% to +0.74%)
aggregate-leanxmss-100-2to1-8thread-node arm64 Neoverse-V2 1906.40 MiB 1903.34 MiB -0.25% (-0.59% to +0.15%)
aggregate-leanxmss-100-2to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 1204.82 MiB 1203.60 MiB +0.00% (-0.62% to +0.33%)
aggregate-leanxmss-100-2to1-first arm64 Neoverse-V2 1953.75 MiB 1957.12 MiB +0.18% (-0.16% to +0.88%)
aggregate-leanxmss-100-2to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 1295.38 MiB 1299.52 MiB +0.35% (-0.74% to +0.67%)
aggregate-leanxmss-100-2to1-node arm64 Neoverse-V2 1996.29 MiB 1992.61 MiB -0.26% (-0.78% to +1.20%)
aggregate-leanxmss-100-2to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 1373.29 MiB 1366.42 MiB -0.44% (-0.95% to +1.06%)
aggregate-leanxmss-100-4to1-1thread-first arm64 Neoverse-V2 2266.73 MiB 2266.90 MiB +0.01% (-0.02% to +0.97%)
aggregate-leanxmss-100-4to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 1452.37 MiB 1456.37 MiB +0.15% (-0.00% to +0.41%)
aggregate-leanxmss-100-4to1-1thread-node arm64 Neoverse-V2 2267.23 MiB 2267.39 MiB +0.01% (-0.01% to +1.16%)
aggregate-leanxmss-100-4to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 1460.36 MiB 1458.62 MiB -0.12% (-0.14% to +0.27%)
aggregate-leanxmss-100-4to1-4thread-first arm64 Neoverse-V2 2338.81 MiB 2338.07 MiB -0.03% (-0.12% to +0.04%)
aggregate-leanxmss-100-4to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 1487.73 MiB 1492.37 MiB +0.29% (-0.04% to +0.54%)
aggregate-leanxmss-100-4to1-4thread-node arm64 Neoverse-V2 2350.82 MiB 2349.24 MiB -0.06% (-0.22% to +0.15%)
aggregate-leanxmss-100-4to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 1504.31 MiB 1504.18 MiB +0.00% (-0.18% to +0.38%)
aggregate-leanxmss-100-4to1-8thread-first arm64 Neoverse-V2 2385.91 MiB 2386.62 MiB +0.04% (-0.08% to +0.24%)
aggregate-leanxmss-100-4to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 1193.03 MiB 1194.43 MiB +0.20% (-0.22% to +0.35%)
aggregate-leanxmss-100-4to1-8thread-node arm64 Neoverse-V2 2404.38 MiB 2405.84 MiB +0.02% (-0.18% to +0.45%)
aggregate-leanxmss-100-4to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 1214.11 MiB 1215.52 MiB +0.07% (-0.56% to +0.56%)
aggregate-leanxmss-100-4to1-first arm64 Neoverse-V2 2457.35 MiB 2458.08 MiB +0.05% (-0.20% to +0.14%)
aggregate-leanxmss-100-4to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 1318.99 MiB 1322.61 MiB +0.08% (-0.63% to +0.78%)
aggregate-leanxmss-100-4to1-node arm64 Neoverse-V2 2493.95 MiB 2487.68 MiB -0.20% (-0.77% to +0.29%)
aggregate-leanxmss-100-4to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 1390.21 MiB 1389.73 MiB -0.19% (-0.67% to +2.24%)
falcon-7 arm64 Neoverse-V2 5839.20 MiB 5836.06 MiB +0.11% (-0.59% to +0.51%)
falcon-7 x86-64 INTEL(R) XEON(R) GOLD 6548N 3208.56 MiB 3210.55 MiB +0.06% (-0.06% to +0.17%)
fibonacci-asm-2000000 arm64 Neoverse-V2 9072.86 MiB 9068.55 MiB +0.03% (-0.15% to +0.05%)
fibonacci-asm-2000000 x86-64 INTEL(R) XEON(R) GOLD 6548N 4232.49 MiB 4232.83 MiB -0.01% (-0.05% to +0.07%)
hash-50000 arm64 Neoverse-V2 5752.68 MiB 5753.60 MiB -0.02% (-0.08% to +0.08%)
hash-50000 x86-64 INTEL(R) XEON(R) GOLD 6548N 3045.62 MiB 3048.44 MiB +0.11% (-0.25% to +0.27%)
leansphincs-26 arm64 Neoverse-V2 1927.61 MiB 1932.52 MiB +0.26% (-0.13% to +0.29%)
leansphincs-26 x86-64 INTEL(R) XEON(R) GOLD 6548N 1025.63 MiB 1023.90 MiB -0.00% (-0.18% to +0.17%)
leanxmss-100 arm64 Neoverse-V2 1722.65 MiB 1723.24 MiB +0.07% (-0.46% to +0.86%)
leanxmss-100 x86-64 INTEL(R) XEON(R) GOLD 6548N 881.36 MiB 881.30 MiB -0.03% (-0.23% to +0.00%)
leanxmss-100-1thread arm64 Neoverse-V2 1598.44 MiB 1598.36 MiB +0.11% (-0.37% to +0.87%)
leanxmss-100-1thread x86-64 INTEL(R) XEON(R) GOLD 6548N 990.37 MiB 990.37 MiB +0.18% (-0.20% to +0.20%)
leanxmss-100-4thread arm64 Neoverse-V2 1635.25 MiB 1635.02 MiB -0.01% (-0.12% to +0.09%)
leanxmss-100-4thread x86-64 INTEL(R) XEON(R) GOLD 6548N 1000.52 MiB 1002.81 MiB +0.23% (-0.10% to +0.43%)
leanxmss-100-8thread arm64 Neoverse-V2 1662.26 MiB 1662.68 MiB +0.10% (-0.13% to +0.36%)
leanxmss-100-8thread x86-64 INTEL(R) XEON(R) GOLD 6548N 782.46 MiB 782.45 MiB -0.03% (-0.48% to +0.03%)
shielded-258 arm64 Neoverse-V2 8356.18 MiB 8357.62 MiB +0.05% (-0.24% to +0.11%)
shielded-258 x86-64 INTEL(R) XEON(R) GOLD 6548N 4268.22 MiB 4265.70 MiB +0.02% (-0.20% to +0.25%)
stateproof-5 arm64 Neoverse-V2 12478.62 MiB 12474.25 MiB -0.04% (-0.08% to +0.02%)
stateproof-5 x86-64 INTEL(R) XEON(R) GOLD 6548N 6175.42 MiB 6177.17 MiB +0.00% (-0.03% to +0.12%)

allocations

benchmark runner CPU base this PR change
aggregate-leanxmss-100-2to1-1thread-first arm64 Neoverse-V2 23.34 µs 23.34 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 23.39 µs 23.39 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-1thread-node arm64 Neoverse-V2 27.23 µs 27.23 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 27.28 µs 27.28 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-4thread-first arm64 Neoverse-V2 23.44 µs 23.44 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 23.49 µs 23.49 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-4thread-node arm64 Neoverse-V2 27.33 µs 27.33 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 27.38 µs 27.38 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-8thread-first arm64 Neoverse-V2 23.56 µs 23.56 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 23.60 µs 23.60 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-8thread-node arm64 Neoverse-V2 27.45 µs 27.45 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 27.49 µs 27.49 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-first arm64 Neoverse-V2 23.79 µs 23.79 µs +0.00% (-0.07% to +0.05%)
aggregate-leanxmss-100-2to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 24.25 µs 24.25 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-node arm64 Neoverse-V2 27.68 µs 27.68 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 28.14 µs 28.14 µs +0.00% (+0.00% to +0.09%)
aggregate-leanxmss-100-4to1-1thread-first arm64 Neoverse-V2 41.84 µs 41.84 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 41.88 µs 41.88 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-1thread-node arm64 Neoverse-V2 49.74 µs 49.74 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 49.79 µs 49.79 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-4thread-first arm64 Neoverse-V2 41.95 µs 41.95 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 42.00 µs 42.00 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-4thread-node arm64 Neoverse-V2 49.86 µs 49.86 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 49.90 µs 49.90 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-8thread-first arm64 Neoverse-V2 42.09 µs 42.09 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 42.14 µs 42.14 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-8thread-node arm64 Neoverse-V2 50.00 µs 50.00 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 50.05 µs 50.05 µs +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-first arm64 Neoverse-V2 42.36 µs 42.36 µs +0.00% (-0.05% to +0.00%)
aggregate-leanxmss-100-4to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 42.93 µs 42.92 µs -0.01% (-0.06% to +0.03%)
aggregate-leanxmss-100-4to1-node arm64 Neoverse-V2 50.27 µs 50.27 µs +0.00% (-0.04% to +0.00%)
aggregate-leanxmss-100-4to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 50.84 µs 50.84 µs +0.01% (-0.01% to +0.01%)
falcon-7 arm64 Neoverse-V2 15.90 µs 15.90 µs +0.00% (-0.01% to +0.19%)
falcon-7 x86-64 INTEL(R) XEON(R) GOLD 6548N 17.57 µs 17.57 µs +0.00% (-0.01% to +0.00%)
fibonacci-asm-2000000 arm64 Neoverse-V2 11.51 µs 11.51 µs +0.00% (+0.00% to +0.00%)
fibonacci-asm-2000000 x86-64 INTEL(R) XEON(R) GOLD 6548N 12.37 µs 12.37 µs +0.00% (+0.00% to +0.02%)
hash-50000 arm64 Neoverse-V2 16.89 µs 16.89 µs +0.01% (-0.07% to +0.08%)
hash-50000 x86-64 INTEL(R) XEON(R) GOLD 6548N 18.75 µs 18.75 µs +0.01% (-0.04% to +0.03%)
leansphincs-26 arm64 Neoverse-V2 25.58 µs 25.58 µs +0.00% (+0.00% to +0.00%)
leansphincs-26 x86-64 INTEL(R) XEON(R) GOLD 6548N 27.13 µs 27.13 µs +0.02% (-0.06% to +0.07%)
leanxmss-100 arm64 Neoverse-V2 26.21 µs 26.21 µs +0.00% (-0.01% to +0.00%)
leanxmss-100 x86-64 INTEL(R) XEON(R) GOLD 6548N 27.72 µs 27.71 µs -0.01% (-0.04% to +0.02%)
leanxmss-100-1thread arm64 Neoverse-V2 25.05 µs 25.05 µs +0.00% (+0.00% to +0.00%)
leanxmss-100-1thread x86-64 INTEL(R) XEON(R) GOLD 6548N 25.50 µs 25.50 µs +0.00% (+0.00% to +0.00%)
leanxmss-100-4thread arm64 Neoverse-V2 25.32 µs 25.32 µs +0.00% (+0.00% to +0.00%)
leanxmss-100-4thread x86-64 INTEL(R) XEON(R) GOLD 6548N 25.77 µs 25.77 µs +0.00% (+0.00% to +0.00%)
leanxmss-100-8thread arm64 Neoverse-V2 25.62 µs 25.62 µs +0.00% (+0.00% to +0.00%)
leanxmss-100-8thread x86-64 INTEL(R) XEON(R) GOLD 6548N 26.07 µs 26.07 µs +0.00% (+0.00% to +0.00%)
shielded-258 arm64 Neoverse-V2 45.27 µs 45.27 µs +0.00% (+0.00% to +0.00%)
shielded-258 x86-64 INTEL(R) XEON(R) GOLD 6548N 47.28 µs 47.28 µs +0.00% (-0.01% to +0.00%)
stateproof-5 arm64 Neoverse-V2 19.35 µs 19.35 µs +0.00% (-0.28% to +0.04%)
stateproof-5 x86-64 INTEL(R) XEON(R) GOLD 6548N 21.27 µs 21.28 µs +0.05% (-0.03% to +0.12%)

heap-peak

benchmark runner CPU base this PR change
aggregate-leanxmss-100-2to1-1thread-first arm64 Neoverse-V2 738.67 ms 738.67 ms +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 373.29 ms 373.29 ms +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-1thread-node arm64 Neoverse-V2 738.32 ms 738.32 ms +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 372.94 ms 372.94 ms +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-2to1-4thread-first arm64 Neoverse-V2 738.60 ms 738.65 ms +0.01% (-0.01% to +0.01%)
aggregate-leanxmss-100-2to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 373.36 ms 373.31 ms -0.00% (-0.03% to +0.02%)
aggregate-leanxmss-100-2to1-4thread-node arm64 Neoverse-V2 738.30 ms 738.30 ms -0.00% (-0.01% to +0.01%)
aggregate-leanxmss-100-2to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 373.02 ms 372.98 ms +0.00% (-0.02% to +0.01%)
aggregate-leanxmss-100-2to1-8thread-first arm64 Neoverse-V2 738.51 ms 738.52 ms +0.00% (-0.01% to +0.02%)
aggregate-leanxmss-100-2to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 373.34 ms 373.35 ms +0.00% (-0.02% to +0.01%)
aggregate-leanxmss-100-2to1-8thread-node arm64 Neoverse-V2 738.18 ms 738.25 ms +0.01% (-0.00% to +0.02%)
aggregate-leanxmss-100-2to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 373.05 ms 373.07 ms -0.00% (-0.01% to +0.02%)
aggregate-leanxmss-100-2to1-first arm64 Neoverse-V2 738.78 ms 738.83 ms +0.00% (-0.00% to +0.04%)
aggregate-leanxmss-100-2to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 373.89 ms 373.98 ms +0.02% (-0.03% to +0.05%)
aggregate-leanxmss-100-2to1-node arm64 Neoverse-V2 738.01 ms 738.10 ms +0.02% (-0.05% to +0.06%)
aggregate-leanxmss-100-2to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 373.54 ms 373.61 ms -0.00% (-0.02% to +0.04%)
aggregate-leanxmss-100-4to1-1thread-first arm64 Neoverse-V2 1.48 s 1.48 s +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-1thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 746.21 ms 746.21 ms +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-1thread-node arm64 Neoverse-V2 1.48 s 1.48 s +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-1thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 745.63 ms 745.63 ms +0.00% (+0.00% to +0.00%)
aggregate-leanxmss-100-4to1-4thread-first arm64 Neoverse-V2 1.48 s 1.48 s -0.00% (-0.00% to +0.01%)
aggregate-leanxmss-100-4to1-4thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 746.26 ms 746.31 ms +0.01% (-0.01% to +0.01%)
aggregate-leanxmss-100-4to1-4thread-node arm64 Neoverse-V2 1.48 s 1.48 s -0.00% (-0.00% to +0.00%)
aggregate-leanxmss-100-4to1-4thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 745.70 ms 745.67 ms -0.00% (-0.01% to +0.00%)
aggregate-leanxmss-100-4to1-8thread-first arm64 Neoverse-V2 1.48 s 1.48 s +0.00% (-0.00% to +0.01%)
aggregate-leanxmss-100-4to1-8thread-first x86-64 INTEL(R) XEON(R) GOLD 6548N 746.40 ms 746.42 ms +0.00% (-0.00% to +0.01%)
aggregate-leanxmss-100-4to1-8thread-node arm64 Neoverse-V2 1.48 s 1.48 s -0.00% (-0.01% to +0.01%)
aggregate-leanxmss-100-4to1-8thread-node x86-64 INTEL(R) XEON(R) GOLD 6548N 745.81 ms 745.82 ms +0.00% (-0.00% to +0.01%)
aggregate-leanxmss-100-4to1-first arm64 Neoverse-V2 1.48 s 1.48 s -0.00% (-0.01% to +0.01%)
aggregate-leanxmss-100-4to1-first x86-64 INTEL(R) XEON(R) GOLD 6548N 746.71 ms 746.72 ms -0.02% (-0.06% to +0.05%)
aggregate-leanxmss-100-4to1-node arm64 Neoverse-V2 1.48 s 1.48 s +0.00% (-0.00% to +0.01%)
aggregate-leanxmss-100-4to1-node x86-64 INTEL(R) XEON(R) GOLD 6548N 746.22 ms 746.44 ms +0.03% (-0.04% to +0.08%)
falcon-7 arm64 Neoverse-V2 5.43 s 5.43 s -0.00% (-0.00% to +0.00%)
falcon-7 x86-64 INTEL(R) XEON(R) GOLD 6548N 2.42 s 2.42 s +0.00% (-0.01% to +0.01%)
fibonacci-asm-2000000 arm64 Neoverse-V2 8.70 s 8.70 s -0.00% (-0.00% to +0.00%)
fibonacci-asm-2000000 x86-64 INTEL(R) XEON(R) GOLD 6548N 3.95 s 3.95 s +0.00% (+0.00% to +0.00%)
hash-50000 arm64 Neoverse-V2 5.45 s 5.45 s -0.00% (-0.00% to +0.00%)
hash-50000 x86-64 INTEL(R) XEON(R) GOLD 6548N 2.30 s 2.30 s -0.00% (-0.00% to +0.00%)
leansphincs-26 arm64 Neoverse-V2 1.72 s 1.72 s +0.00% (-0.00% to +0.00%)
leansphincs-26 x86-64 INTEL(R) XEON(R) GOLD 6548N 776.33 ms 776.21 ms -0.01% (-0.02% to -0.00%)
leanxmss-100 arm64 Neoverse-V2 1.49 s 1.49 s -0.01% (-0.02% to +0.01%)
leanxmss-100 x86-64 INTEL(R) XEON(R) GOLD 6548N 666.94 ms 666.94 ms -0.00% (-0.00% to +0.00%)
leanxmss-100-1thread arm64 Neoverse-V2 1.49 s 1.49 s +0.00% (+0.00% to +0.00%)
leanxmss-100-1thread x86-64 INTEL(R) XEON(R) GOLD 6548N 667.32 ms 667.32 ms +0.00% (+0.00% to +0.00%)
leanxmss-100-4thread arm64 Neoverse-V2 1.49 s 1.49 s -0.00% (-0.01% to +0.00%)
leanxmss-100-4thread x86-64 INTEL(R) XEON(R) GOLD 6548N 667.35 ms 667.30 ms -0.01% (-0.01% to +0.00%)
leanxmss-100-8thread arm64 Neoverse-V2 1.49 s 1.49 s +0.00% (-0.00% to +0.01%)
leanxmss-100-8thread x86-64 INTEL(R) XEON(R) GOLD 6548N 667.26 ms 667.26 ms +0.00% (-0.02% to +0.01%)
shielded-258 arm64 Neoverse-V2 7.89 s 7.89 s -0.00% (-0.00% to +0.00%)
shielded-258 x86-64 INTEL(R) XEON(R) GOLD 6548N 3.66 s 3.66 s -0.00% (-0.00% to +0.01%)
stateproof-5 arm64 Neoverse-V2 12.44 s 12.44 s +0.00% (-0.00% to +0.00%)
stateproof-5 x86-64 INTEL(R) XEON(R) GOLD 6548N 5.82 s 5.82 s -0.00% (-0.00% to +0.00%)

# Conflicts:
#	crates/pcs/src/ntt/additive_ntt_f64.rs

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