Benchmarks of VM proving times made by Aligned¶

Table of Contents¶

  • About
  • GPU Benchmarks on RTX A6000
    • Fibonacci Benchmark
    • Keccak Benchmark
    • RSP Benchmark
  • CPU Benchmarks on AMD EPYC 8534P 64-Core Processor
    • Fibonacci Benchmark
    • Keccak Benchmark
  • Appendix
    • RSP using different modes of SP1

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:

  • SP1
  • Risc0
  • Pico

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¶

No description has been provided for this image

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_14_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
14             Risc0        100      5.1s     0.08
15             Risc0       1000      5.2s     0.09
16             Risc0      10000      5.7s     0.10
17             Risc0     100000     17.6s     0.29
18             Risc0    1000000   1m58.3s     1.97
19             Risc0   10000000  19m10.1s    19.17
0           SP1-AVX2        100     15.3s     0.26
2           SP1-AVX2       1000     15.3s     0.26
4           SP1-AVX2      10000     15.3s     0.26
6           SP1-AVX2     100000     15.9s     0.27
8           SP1-AVX2    1000000     26.3s     0.44
10          SP1-AVX2   10000000   2m11.5s     2.19
12          SP1-AVX2  100000000  19m48.4s    19.81
1   SP1-AVX2-Groth16        100     53.9s     0.90
3   SP1-AVX2-Groth16       1000     53.6s     0.89
5   SP1-AVX2-Groth16      10000     54.3s     0.90
7   SP1-AVX2-Groth16     100000     54.0s     0.90
9   SP1-AVX2-Groth16    1000000    1m4.5s     1.07
11  SP1-AVX2-Groth16   10000000   2m52.1s     2.87
13  SP1-AVX2-Groth16  100000000  20m29.3s    20.49

Plot: Log N vs Log Time¶

No description has been provided for this image

KiB hased per second at max sample¶

Prover KiB/sec
0 SP1-AVX2 82.17
1 SP1-AVX2-Groth16 79.44
2 Risc0 8.49

Time used at 10M and 100M bytes¶

Prover Bytes (Millions) Time
10 SP1-AVX2 10.00 2m11.5s
11 SP1-AVX2-Groth16 10.00 2m52.1s
19 Risc0 10.00 19m10.1s
Prover Bytes (Millions) Time
12 SP1-AVX2 100.00 19m48.4s
13 SP1-AVX2-Groth16 100.00 20m29.3s

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_18_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     6m6.5s     6.11
3   RSP RISC0   3    16m5.2s    16.09
5   RSP RISC0   9   44m28.9s    44.48
7   RSP RISC0  18   77m48.4s    77.81
9   RSP RISC0  27    37m9.0s    37.15
11  RSP RISC0  36  176m32.8s   176.55
0     RSP SP1   1      53.5s     0.89
2     RSP SP1   3    1m50.7s     1.84
4     RSP SP1   9    4m16.2s     4.27
6     RSP SP1  18    7m17.8s     7.30
8     RSP SP1  27    3m32.3s     3.54
10    RSP SP1  36   14m30.1s    14.50

Plot: Block Megagas vs Time¶

No description has been provided for this image

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 14m30.1s
11 RSP RISC0 36.00 176m32.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¶

No description has been provided for this image

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_18_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 Groth16       100      29.0s     0.48
3   Pico-AVX512 Groth16      1000      29.1s     0.49
6   Pico-AVX512 Groth16     10000      29.9s     0.50
9   Pico-AVX512 Groth16    100000      39.7s     0.66
12  Pico-AVX512 Groth16   1000000    1m45.3s     1.75
15  Pico-AVX512 Groth16  10000000   12m20.4s    12.34
18                Risc0       100      33.4s     0.56
19                Risc0      1000      34.3s     0.57
20                Risc0     10000      44.2s     0.74
21                Risc0    100000    2m20.1s     2.33
22                Risc0   1000000   16m47.0s    16.78
23                Risc0  10000000  158m15.4s   158.26
1            SP1-AVX512       100      53.8s     0.90
4            SP1-AVX512      1000      54.1s     0.90
7            SP1-AVX512     10000      54.6s     0.91
10           SP1-AVX512    100000     1m3.3s     1.05
13           SP1-AVX512   1000000    2m23.3s     2.39
16           SP1-AVX512  10000000   19m53.3s    19.89
2    SP1-AVX512-Groth16       100    1m56.0s     1.93
5    SP1-AVX512-Groth16      1000    1m56.8s     1.95
8    SP1-AVX512-Groth16     10000    1m56.3s     1.94
11   SP1-AVX512-Groth16    100000     2m6.0s     2.10
14   SP1-AVX512-Groth16   1000000    3m28.4s     3.47
17   SP1-AVX512-Groth16  10000000    21m6.0s    21.10

Plot: Log N vs Log Time¶

No description has been provided for this image

KiB hased per second at max sample¶

Prover KiB/sec
0 Pico-AVX512 Groth16 13.19
1 SP1-AVX512 8.18
2 SP1-AVX512-Groth16 7.71
3 Risc0 1.03

Time used at 100K bytes and 10M bytes¶

Prover Bytes (Millions) Time
9 Pico-AVX512 Groth16 0.10 39.7s
10 SP1-AVX512 0.10 1m3.3s
11 SP1-AVX512-Groth16 0.10 2m6.0s
21 Risc0 0.10 2m20.1s
Prover Bytes (Millions) Time
15 Pico-AVX512 Groth16 10.00 12m20.4s
16 SP1-AVX512 10.00 19m53.3s
17 SP1-AVX512-Groth16 10.00 21m6.0s
23 Risc0 10.00 158m15.4s

Appendix¶

RSP using different modes of SP1¶

The following plot shows the difference between the Core, Compressed and Groth16 mode of SP1

The data is sourced from bench_results/rsp_sp1_modes_13_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
0   RSP SP1-Compressed   1     54.5s     0.91
3   RSP SP1-Compressed   3   1m52.0s     1.87
6   RSP SP1-Compressed   9   4m18.3s     4.31
9   RSP SP1-Compressed  18   7m16.8s     7.28
12  RSP SP1-Compressed  27   3m32.8s     3.55
15  RSP SP1-Compressed  36  14m31.9s    14.53
2         RSP SP1-Core   1     52.9s     0.88
5         RSP SP1-Core   3   1m48.1s     1.80
8         RSP SP1-Core   9   4m12.8s     4.21
11        RSP SP1-Core  18   7m12.0s     7.20
14        RSP SP1-Core  27   3m26.9s     3.45
17        RSP SP1-Core  36  14m42.2s    14.70
1      RSP SP1-Groth16   1   1m32.7s     1.55
4      RSP SP1-Groth16   3   2m30.0s     2.50
7      RSP SP1-Groth16   9   4m56.4s     4.94
10     RSP SP1-Groth16  18   7m56.9s     7.95
13     RSP SP1-Groth16  27   4m11.8s     4.20
16     RSP SP1-Groth16  36  15m16.2s    15.27

Plot: Block Megagas vs Time for SP1 different modes¶

No description has been provided for this image

Time used for a 36M gas block¶

Prover Megagas Time
15 RSP SP1-Compressed 36.00 14m31.9s
16 RSP SP1-Groth16 36.00 15m16.2s
17 RSP SP1-Core 36.00 14m42.2s

Plot: Block Megagas vs Proof Size¶

No description has been provided for this image

Proof size for a 36M gas block¶

Prover Megagas Size (KB))
15 RSP SP1-Compressed 36 1477.24
16 RSP SP1-Groth16 36 1.45
17 RSP SP1-Core 36 824087.79