Benchmarks of VM proving times made by Aligned¶
About¶
These benchmarks aim to provide a neutral suite for measuring the efficiency of zkVMs.
The benchmarks test the following programs:
- ✅ Fibonacci
- ✅ Keccak
- ️✅ RSP (Reth Succinct Processor)
The benchmarks are run on the following zkVMs:
You can run this Python notebook yourself to create new plots or analyze the data.
The Githbut repository is available here.
Raw results can be found here.
The full Jupyter notebook can be found here.
GPU Benchmarks on RTX A6000¶
The data was collected on a server with the following specs:
- GPU: NVIDIA RTX A6000 (48GB)
- RAM: 44GB
- OS: Ubuntu 22 LTS
Fibonacci Benchmark¶
In this section, we evaluate the performance of Fibonacci across various provers.
The data is sourced from bench_results/fibo_6_mar_25_A6000.csv
.
For validation, we will display the data sorted by Prover and N.
Data sorted by Prover and N for validation: Prover N Time Minutes 2 Risc0 10000 1.7s 0.03 5 Risc0 100000 5.6s 0.09 8 Risc0 1000000 48.9s 0.81 11 Risc0 10000000 7m45.5s 7.76 0 SP1-AVX2 10000 13.9s 0.23 3 SP1-AVX2 100000 13.3s 0.22 6 SP1-AVX2 1000000 22.8s 0.38 9 SP1-AVX2 10000000 1m46.8s 1.78 1 SP1-AVX2-Groth16 10000 53.1s 0.89 4 SP1-AVX2-Groth16 100000 53.7s 0.90 7 SP1-AVX2-Groth16 1000000 1m9.2s 1.15 10 SP1-AVX2-Groth16 10000000 2m27.1s 2.45
Plot: Log N vs Log Time¶
Time used at biggest sample taken¶
Prover | N (Millions) | Time | |
---|---|---|---|
9 | SP1-AVX2 | 10.00 | 1m46.8s |
10 | SP1-AVX2-Groth16 | 10.00 | 2m27.1s |
11 | Risc0 | 10.00 | 7m45.5s |
Keccak Benchmark¶
In this section we evaluate the performance of Keccak across various provers.
The data is sourced from bench_results/keccak_6_mar_25_A6000.csv
.
For validation, we will display the data sorted by Prover and N.
Data sorted by Prover and N for validation: Prover N Time Minutes 2 Risc0 100 7.3s 0.12 5 Risc0 1000 7.5s 0.12 8 Risc0 10000 11.0s 0.18 11 Risc0 100000 43.5s 0.72 14 Risc0 1000000 6m8.0s 6.13 17 Risc0 10000000 64m31.4s 64.52 0 SP1-AVX2 100 21.5s 0.36 3 SP1-AVX2 1000 21.8s 0.36 6 SP1-AVX2 10000 22.0s 0.37 9 SP1-AVX2 100000 22.6s 0.38 12 SP1-AVX2 1000000 33.1s 0.55 15 SP1-AVX2 10000000 2m22.0s 2.37 18 SP1-AVX2 100000000 20m24.4s 20.41 1 SP1-AVX2-Groth16 100 57.2s 0.95 4 SP1-AVX2-Groth16 1000 1m2.6s 1.04 7 SP1-AVX2-Groth16 10000 1m1.6s 1.03 10 SP1-AVX2-Groth16 100000 1m2.6s 1.04 13 SP1-AVX2-Groth16 1000000 1m12.7s 1.21 16 SP1-AVX2-Groth16 10000000 3m2.9s 3.05 19 SP1-AVX2-Groth16 100000000 24m23.7s 24.39
Plot: Log N vs Log Time¶
KiB hased per second at max sample¶
Prover | KiB/sec | |
---|---|---|
0 | SP1-AVX2 | 79.76 |
1 | SP1-AVX2-Groth16 | 66.72 |
2 | Risc0 | 2.52 |
Time used at 10M and 100M bytes¶
Prover | Bytes (Millions) | Time | |
---|---|---|---|
15 | SP1-AVX2 | 10.00 | 2m22.0s |
16 | SP1-AVX2-Groth16 | 10.00 | 3m2.9s |
17 | Risc0 | 10.00 | 64m31.4s |
Prover | Bytes (Millions) | Time | |
---|---|---|---|
18 | SP1-AVX2 | 100.00 | 20m24.4s |
19 | SP1-AVX2-Groth16 | 100.00 | 24m23.7s |
RSP Benchmark¶
In this section we evaluate the performance of RSP across various provers over blocks with different amounts of Gas.
Notice the cost is not purely lineal, since there can be blocks that require more keccaks and are more expensive to prove than others. For example, the block of 27M gas is cheaper to prove than the one of 18M Gas
The data is sourced from bench_results/rsp_12_mar_25_A6000.csv
.
For validation, we will display the data sorted by Prover and N.
Data sorted by Prover and N for validation: Prover N Time Minutes 1 RSP RISC0 1 8m31.8s 8.53 3 RSP RISC0 3 23m3.6s 23.06 5 RSP RISC0 9 57m39.1s 57.65 7 RSP RISC0 18 101m26.8s 101.45 9 RSP RISC0 27 48m37.8s 48.63 11 RSP RISC0 36 217m43.8s 217.73 0 RSP SP1 1 44.3s 0.74 2 RSP SP1 3 1m29.6s 1.49 4 RSP SP1 9 3m27.8s 3.46 6 RSP SP1 18 5m53.5s 5.89 8 RSP SP1 27 2m49.8s 2.83 10 RSP SP1 36 11m55.6s 11.93
Plot: Log N vs Log Time¶
Note: The 27Mgas block has fewer transactions than the other blocks, but one of them is a high cpu usage transaction.
Time used for a 36M gas block¶
Prover | Megagas | Time | |
---|---|---|---|
10 | RSP SP1 | 36.00 | 11m55.6s |
11 | RSP RISC0 | 36.00 | 217m43.8s |
CPU Benchmarks on AMD EPYC 8534P 64-Core Processor¶
The data was collected on a server with the following specs:
- CPU: AMD EPYC 8534P 64-Core Processor
- RAM: 576GB
- OS: Ubuntu 24 LTS
Fibonacci Benchmark¶
In this section we evaluate the performance of Fibonacci across various provers.
The data is sourced from bench_results/fibo_5_mar_25_epyc8534p_64c_576gb.csv
.
For validation, we will display the data sorted by Prover and N.
Data sorted by Prover and N for validation: Prover N Time Minutes 0 Pico-AVX512 10000 22.9s 0.38 4 Pico-AVX512 100000 35.5s 0.59 8 Pico-AVX512 1000000 1m46.0s 1.77 12 Pico-AVX512 4000000 5m18.6s 5.31 3 Risc0 10000 10.8s 0.18 7 Risc0 100000 50.9s 0.85 11 Risc0 1000000 7m53.1s 7.89 15 Risc0 4000000 31m2.0s 31.03 1 SP1-AVX512 10000 16.0s 0.27 5 SP1-AVX512 100000 34.0s 0.57 9 SP1-AVX512 1000000 1m42.8s 1.71 13 SP1-AVX512 4000000 5m21.2s 5.35 2 SP1-AVX512-Groth16 10000 1m18.5s 1.31 6 SP1-AVX512-Groth16 100000 1m36.4s 1.61 10 SP1-AVX512-Groth16 1000000 2m45.8s 2.76 14 SP1-AVX512-Groth16 4000000 6m29.4s 6.49
Plot: Log N vs Log Time¶
Time used at biggest sample taken¶
Prover | N | Time | |
---|---|---|---|
12 | Pico-AVX512 | 4.00 | 5m18.6s |
13 | SP1-AVX512 | 4.00 | 5m21.2s |
14 | SP1-AVX512-Groth16 | 4.00 | 6m29.4s |
15 | Risc0 | 4.00 | 31m2.0s |
Keccak Benchmark¶
In this section we evaluate the performance of Keccak across various provers.
The data is sourced from bench_results/keccak_5_mar_25_epyc8534p_64c_576gb.csv
.
For validation, we will display the data sorted by Prover and N.
Data sorted by Prover and N for validation: Prover N Time Minutes 0 Pico-AVX512 100 28.8s 0.48 3 Pico-AVX512 1000 28.8s 0.48 6 Pico-AVX512 10000 29.8s 0.50 9 Pico-AVX512 100000 39.4s 0.66 12 Pico-AVX512 1000000 1m46.8s 1.78 15 Pico-AVX512 10000000 12m27.4s 12.46 18 Risc0 100 34.4s 0.57 19 Risc0 1000 37.1s 0.62 20 Risc0 10000 1m8.9s 1.15 21 Risc0 100000 6m19.7s 6.33 1 SP1-AVX512 100 53.5s 0.89 4 SP1-AVX512 1000 53.5s 0.89 7 SP1-AVX512 10000 53.3s 0.89 10 SP1-AVX512 100000 1m2.8s 1.05 13 SP1-AVX512 1000000 2m22.6s 2.38 16 SP1-AVX512 10000000 19m51.6s 19.86 2 SP1-AVX512-Groth16 100 1m56.0s 1.93 5 SP1-AVX512-Groth16 1000 1m56.0s 1.93 8 SP1-AVX512-Groth16 10000 1m56.0s 1.93 11 SP1-AVX512-Groth16 100000 2m5.9s 2.10 14 SP1-AVX512-Groth16 1000000 3m25.3s 3.42 17 SP1-AVX512-Groth16 10000000 21m3.5s 21.06
Plot: Log N vs Log Time¶
KiB hased per second at max sample¶
Prover | KiB/sec | |
---|---|---|
0 | Pico-AVX512 | 13.07 |
1 | SP1-AVX512 | 8.20 |
2 | SP1-AVX512-Groth16 | 7.73 |
3 | Risc0 | 0.26 |
Time used at 100K bytes and 10M bytes¶
Prover | N | Time | |
---|---|---|---|
9 | Pico-AVX512 | 0.10 | 39.4s |
10 | SP1-AVX512 | 0.10 | 1m2.8s |
11 | SP1-AVX512-Groth16 | 0.10 | 2m5.9s |
21 | Risc0 | 0.10 | 6m19.7s |
Prover | N | Time | |
---|---|---|---|
15 | Pico-AVX512 | 10.00 | 12m27.4s |
16 | SP1-AVX512 | 10.00 | 19m51.6s |
17 | SP1-AVX512-Groth16 | 10.00 | 21m3.5s |