-
Notifications
You must be signed in to change notification settings - Fork 36
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci: Add comparative GPU benchmarks on
merge_group
(#238)
* ci: Add comparative benchmarks on `merge_group` (WIP) * Add other benchmarks and refactor * Remove caching for now and test action on `pull_request`
- Loading branch information
1 parent
f8771a2
commit 85c04b3
Showing
11 changed files
with
299 additions
and
33 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
title: ":rotating_light: Performance regression in #{{ env.PR_NUMBER }}" | ||
labels: P-Performance, automated issue | ||
--- | ||
Regression >= {{ env.NOISE_THRESHOLD }} found during merge of: #{{ env.PR_NUMBER }} | ||
Commit: {{ env.GIT_SHA }} | ||
Triggered by: {{ env.WORKFLOW_URL }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
[table_comments] | ||
|
||
[top_comments] | ||
Overview = """ | ||
This benchmark report shows the Arecibo GPU benchmarks. | ||
""" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
# Run final tests only when attempting to merge, shown as skipped status checks beforehand | ||
name: GPU benchmark regression test | ||
|
||
on: | ||
pull_request: | ||
types: [opened, synchronize, reopened, ready_for_review] | ||
branches: [dev] | ||
merge_group: | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
# Run comparative benchmark against dev, open issue on regression | ||
gpu-benchmark: | ||
if: github.event_name != 'pull_request' || github.event.action == 'enqueued' | ||
name: Run benchmarks on GPU | ||
runs-on: [self-hosted, gpu-bench] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
repository: lurk-lab/ci-workflows | ||
- uses: ./.github/actions/gpu-setup | ||
with: | ||
gpu-framework: 'cuda' | ||
- uses: ./.github/actions/ci-env | ||
- uses: actions/checkout@v4 | ||
# Install dependencies | ||
- uses: dtolnay/rust-toolchain@stable | ||
- uses: Swatinem/rust-cache@v2 | ||
- uses: taiki-e/install-action@v2 | ||
with: | ||
tool: [email protected] | ||
- name: Install criterion | ||
run: | | ||
cargo install cargo-criterion | ||
cargo install criterion-table | ||
- name: Set bench output format and base SHA | ||
run: | | ||
echo "ARECIBO_BENCH_OUTPUT=commit-comment" | tee -a $GITHUB_ENV | ||
echo "BASE_COMMIT=${{ github.event.merge_group.base_sha }}" | tee -a $GITHUB_ENV | ||
GPU_NAME=$(nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits | tail -n1) | ||
echo "GPU_ID=$(echo $GPU_NAME | awk '{ print $NF }')" | tee -a $GITHUB_ENV | ||
echo "GPU_NAME=$GPU_NAME" | tee -a $GITHUB_ENV | ||
# Checkout base branch for comparative bench | ||
- uses: actions/checkout@v4 | ||
with: | ||
ref: dev | ||
path: dev | ||
# Copy the script so the base can bench with the same parameters | ||
- name: Run GPU bench on base branch | ||
run: | | ||
# Copy justfile to dev, overwriting existing config with that of PR branch | ||
cp ../benches/justfile . | ||
# Run benchmark | ||
just gpu-bench-ci recursive-snark recursive-snark-supernova compressed-snark compressed-snark-supernova | ||
# Copy bench output to PR branch | ||
cp *-${{ env.BASE_COMMIT }}.json .. | ||
working-directory: ${{ github.workspace }}/dev | ||
- name: Run GPU bench on PR branch | ||
run: | | ||
just gpu-bench-ci recursive-snark recursive-snark-supernova compressed-snark compressed-snark-supernova | ||
cp *-${{ github.sha }}.json .. | ||
working-directory: ${{ github.workspace }}/benches | ||
- name: copy the benchmark template and prepare it with data | ||
run: | | ||
cp .github/tables.toml . | ||
# Get CPU model | ||
CPU_MODEL=$(grep '^model name' /proc/cpuinfo | head -1 | awk -F ': ' '{ print $2 }') | ||
# Get vCPU count | ||
NUM_VCPUS=$(nproc --all) | ||
# Get total RAM in GB | ||
TOTAL_RAM=$(grep MemTotal /proc/meminfo | awk '{$2=$2/(1024^2); print int($2), "GB RAM";}') | ||
WORKFLOW_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" | ||
# Use conditionals to ensure that only non-empty variables are inserted | ||
[[ ! -z "${{ env.GPU_NAME }}" ]] && sed -i "/^\"\"\"$/i ${{ env.GPU_NAME }}" tables.toml | ||
[[ ! -z "$CPU_MODEL" ]] && sed -i "/^\"\"\"$/i $CPU_MODEL" tables.toml | ||
[[ ! -z "$NUM_VCPUS" ]] && sed -i "/^\"\"\"$/i $NUM_VCPUS" tables.toml | ||
[[ ! -z "$TOTAL_RAM" ]] && sed -i "/^\"\"\"$/i $TOTAL_RAM" tables.toml | ||
sed -i "/^\"\"\"$/i Workflow run: $WORKFLOW_URL" tables.toml | ||
echo "WORKFLOW_URL=$WORKFLOW_URL" | tee -a $GITHUB_ENV | ||
working-directory: ${{ github.workspace }} | ||
# Create a `criterion-table` and write in commit comment | ||
- name: Run `criterion-table` | ||
run: | | ||
cat recursive-snark-${{ env.BASE_COMMIT }}.json recursive-snark-${{ github.sha }}.json \ | ||
recursive-snark-supernova-${{ env.BASE_COMMIT }}.json recursive-snark-supernova- ${{ github.sha }}.json \ | ||
compressed-snark-${{ env.BASE_COMMIT }}.json compressed-snark-${{ github.sha }}.json \ | ||
compressed-snark-supernova-${{ env.BASE_COMMIT }}.json compressed-snark-supernova- ${{ github.sha }}.json \ | ||
| criterion-table > BENCHMARKS.md | ||
- name: Write bench on commit comment | ||
uses: peter-evans/commit-comment@v3 | ||
with: | ||
body-path: BENCHMARKS.md | ||
# Check for a slowdown >= `$ARECIBO_NOISE_THRESHOLD` (fallback is 5%). If so, open an issue but don't block merge | ||
- name: Check for perf regression | ||
id: regression-check | ||
run: | | ||
REGRESSIONS=$(awk -F'[*x]' '/slower/{print $12}' BENCHMARKS.md) | ||
echo $regressions | ||
if [ ! -z "${{ env.ARECIBO_NOISE_THRESHOLD}}" ]; then | ||
NOISE_THRESHOLD=$(echo "1+${{ env.ARECIBO_NOISE_THRESHOLD }}" | bc) | ||
else | ||
NOISE_THRESHOLD=1.05 | ||
fi | ||
for r in $REGRESSIONS | ||
do | ||
if (( $(echo "$r >= $NOISE_THRESHOLD" | bc -l) )) | ||
then | ||
exit 1 | ||
fi | ||
done | ||
echo "NOISE_THRESHOLD=$NOISE_THRESHOLD" | tee -a $GITHUB_ENV | ||
continue-on-error: true | ||
# Not possible to use ${{ github.event.number }} with the `merge_group` trigger | ||
- name: Get PR number from merge branch | ||
run: | | ||
echo "PR_NUMBER=$(echo ${{ github.event.merge_group.head_ref }} | sed -e 's/.*pr-\(.*\)-.*/\1/')" | tee -a $GITHUB_ENV | ||
- uses: JasonEtco/create-an-issue@v2 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
PR_NUMBER: ${{ env.PR_NUMBER }} | ||
GIT_SHA: ${{ github.sha }} | ||
WORKFLOW_URL: ${{ env.WORKFLOW_URL }} | ||
NOISE_THRESHOLD: $${{ env.NOISE_THRESHOLD }} | ||
with: | ||
filename: .github/PERF_REGRESSION.md |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
use anyhow::anyhow; | ||
use criterion::BenchmarkId; | ||
|
||
// TODO: Why Copy and &'static str over String? | ||
#[derive(Clone, Debug, Copy)] | ||
pub(crate) struct BenchParams { | ||
pub step_size: usize, | ||
pub date: &'static str, | ||
pub sha: &'static str, | ||
} | ||
impl BenchParams { | ||
pub(crate) fn bench_id(&self, name: &str) -> BenchmarkId { | ||
let output_type = bench_output_env().unwrap_or("stdout".into()); | ||
match output_type.as_ref() { | ||
"pr-comment" => BenchmarkId::new(name, format!("StepCircuitSize-{}", self.step_size)), | ||
"commit-comment" => BenchmarkId::new( | ||
format!("ref={}", self.sha), | ||
format!("{}-StepCircuitSize-{}", name, self.step_size), | ||
), | ||
// TODO: refine "gh-pages" | ||
_ => BenchmarkId::new( | ||
name, | ||
format!( | ||
"StepCircuitSize-{}-{}-{}", | ||
self.step_size, self.sha, self.date | ||
), | ||
), | ||
} | ||
} | ||
} | ||
|
||
fn bench_output_env() -> anyhow::Result<String> { | ||
std::env::var("ARECIBO_BENCH_OUTPUT").map_err(|e| anyhow!("Bench output env var isn't set: {e}")) | ||
} | ||
|
||
pub(crate) fn noise_threshold_env() -> anyhow::Result<f64> { | ||
std::env::var("ARECIBO_BENCH_NOISE_THRESHOLD") | ||
.map_err(|e| anyhow!("Noise threshold env var isn't set: {e}")) | ||
.and_then(|nt| { | ||
nt.parse::<f64>() | ||
.map_err(|e| anyhow!("Failed to parse noise threshold: {e}")) | ||
}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# Install with `cargo install just` | ||
# Usage: `just <bench|gpu-bench|gpu-bench-ci> <args>` | ||
set dotenv-load | ||
set dotenv-filename := "bench.env" | ||
set ignore-comments := true | ||
|
||
commit := `git rev-parse HEAD` | ||
|
||
# Run CPU benchmarks | ||
bench +benches: | ||
#!/bin/sh | ||
for bench in {{benches}}; do | ||
cargo criterion --bench $bench | ||
done | ||
|
||
gpu-env: | ||
# The `compute`/`sm` number corresponds to the Nvidia GPU architecture | ||
# In this case, the self-hosted machine uses the Ampere architecture, but we want this to be configurable | ||
# See https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ | ||
export CUDA_ARCH := `nvidia-smi --query-gpu=compute_cap --format=csv,noheader | sed 's/\.//g'` | ||
export EC_GPU_CUDA_NVCC_ARGS := "--fatbin --gpu-architecture=sm_$CUDA_ARCH --generate-code=arch=compute_$CUDA_ARCH,code=sm_$CUDA_ARCH" | ||
export EC_GPU_FRAMEWORK := "cuda" | ||
|
||
# Run CUDA benchmarks on GPU | ||
gpu-bench +benches: gpu-env | ||
#!/bin/sh | ||
for bench in {{benches}}; do | ||
cargo criterion --bench $bench --features "cuda" | ||
done | ||
|
||
# Run CUDA benchmarks on GPU, tuned for CI | ||
gpu-bench-ci +benches: | ||
#!/bin/sh | ||
for bench in {{benches}}; do | ||
cargo criterion --bench $bench --features "cuda" --message-format=json > "$bench-{{commit}}".json | ||
done |
Oops, something went wrong.
85c04b3
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmarks
Table of Contents
Overview
This benchmark report shows the Arecibo GPU benchmarks.
NVIDIA L4
Intel(R) Xeon(R) CPU @ 2.20GHz
32
125 GB RAM
Workflow run: https://github.com/lurk-lab/arecibo/actions/runs/7455258487
Benchmark Results
RecursiveSNARK-StepCircuitSize-0
Prove
Verify
44.28 ms
(✅ 1.00x)22.49 ms
(🚀 1.97x faster)RecursiveSNARK-StepCircuitSize-6559
Prove
Verify
52.22 ms
(✅ 1.00x)28.67 ms
(🚀 1.82x faster)RecursiveSNARK-StepCircuitSize-22943
Prove
Verify
71.53 ms
(✅ 1.00x)44.05 ms
(✅ 1.62x faster)RecursiveSNARK-StepCircuitSize-55711
Prove
Verify
89.66 ms
(✅ 1.00x)47.09 ms
(🚀 1.90x faster)RecursiveSNARK-StepCircuitSize-121247
Prove
Verify
70.42 ms
(✅ 1.00x)29.88 ms
(🚀 2.36x faster)RecursiveSNARK-StepCircuitSize-252319
Prove
Verify
99.49 ms
(✅ 1.00x)44.07 ms
(🚀 2.26x faster)RecursiveSNARK-StepCircuitSize-514463
Prove
Verify
184.16 ms
(✅ 1.00x)54.90 ms
(🚀 3.35x faster)RecursiveSNARK-StepCircuitSize-1038751
Prove
Verify
321.13 ms
(✅ 1.00x)97.15 ms
(🚀 3.31x faster)RecursiveSNARK
ref=85c04b3ab1d8446b0a8337ad738ea11aa94f45b4
Prove-StepCircuitSize-0
44.38 ms
(✅ 1.00x)Verify-StepCircuitSize-0
22.41 ms
(✅ 1.00x)Prove-StepCircuitSize-6559
52.13 ms
(✅ 1.00x)Verify-StepCircuitSize-6559
28.69 ms
(✅ 1.00x)Prove-StepCircuitSize-22943
71.66 ms
(✅ 1.00x)Verify-StepCircuitSize-22943
43.99 ms
(✅ 1.00x)Prove-StepCircuitSize-55711
89.12 ms
(✅ 1.00x)Verify-StepCircuitSize-55711
47.43 ms
(✅ 1.00x)Prove-StepCircuitSize-121247
70.09 ms
(✅ 1.00x)Verify-StepCircuitSize-121247
29.68 ms
(✅ 1.00x)Prove-StepCircuitSize-252319
98.32 ms
(✅ 1.00x)Verify-StepCircuitSize-252319
43.87 ms
(✅ 1.00x)Prove-StepCircuitSize-514463
176.41 ms
(✅ 1.00x)Verify-StepCircuitSize-514463
53.69 ms
(✅ 1.00x)Prove-StepCircuitSize-1038751
303.34 ms
(✅ 1.00x)Verify-StepCircuitSize-1038751
97.96 ms
(✅ 1.00x)RecursiveSNARKSuperNova-1circuit-StepCircuitSize-0
Prove
Verify
47.73 ms
(✅ 1.00x)26.84 ms
(✅ 1.78x faster)RecursiveSNARKSuperNova-1circuit-StepCircuitSize-6540
Prove
Verify
55.26 ms
(✅ 1.00x)33.40 ms
(✅ 1.65x faster)RecursiveSNARKSuperNova-1circuit-StepCircuitSize-22924
Prove
Verify
74.58 ms
(✅ 1.00x)49.45 ms
(✅ 1.51x faster)RecursiveSNARKSuperNova-1circuit-StepCircuitSize-55692
Prove
Verify
91.75 ms
(✅ 1.00x)54.48 ms
(✅ 1.68x faster)RecursiveSNARKSuperNova-1circuit-StepCircuitSize-121228
Prove
Verify
76.93 ms
(✅ 1.00x)43.00 ms
(✅ 1.79x faster)RecursiveSNARKSuperNova-1circuit-StepCircuitSize-252300
Prove
Verify
104.53 ms
(✅ 1.00x)63.48 ms
(✅ 1.65x faster)RecursiveSNARKSuperNova-1circuit-StepCircuitSize-514444
Prove
Verify
204.41 ms
(✅ 1.00x)142.22 ms
(✅ 1.44x faster)RecursiveSNARKSuperNova-1circuit-StepCircuitSize-1038732
Prove
Verify
384.81 ms
(✅ 1.00x)298.40 ms
(✅ 1.29x faster)RecursiveSNARKSuperNova-2circuit-StepCircuitSize-0
Prove
Verify
47.62 ms
(✅ 1.00x)26.80 ms
(✅ 1.78x faster)RecursiveSNARKSuperNova-2circuit-StepCircuitSize-6540
Prove
Verify
55.30 ms
(✅ 1.00x)33.40 ms
(✅ 1.66x faster)RecursiveSNARKSuperNova-2circuit-StepCircuitSize-22924
Prove
Verify
74.64 ms
(✅ 1.00x)49.16 ms
(✅ 1.52x faster)RecursiveSNARKSuperNova-2circuit-StepCircuitSize-55692
Prove
Verify
91.58 ms
(✅ 1.00x)54.13 ms
(✅ 1.69x faster)RecursiveSNARKSuperNova-2circuit-StepCircuitSize-121228
Prove
Verify
76.87 ms
(✅ 1.00x)42.69 ms
(🚀 1.80x faster)RecursiveSNARKSuperNova-2circuit-StepCircuitSize-252300
Prove
Verify
104.46 ms
(✅ 1.00x)63.52 ms
(✅ 1.64x faster)RecursiveSNARKSuperNova-2circuit-StepCircuitSize-514444
Prove
Verify
214.83 ms
(✅ 1.00x)152.77 ms
(✅ 1.41x faster)RecursiveSNARKSuperNova-2circuit-StepCircuitSize-1038732
Prove
Verify
382.07 ms
(✅ 1.00x)297.13 ms
(✅ 1.29x faster)CompressedSNARK-StepCircuitSize-0
Prove
Verify
550.55 ms
(✅ 1.00x)29.51 ms
(🚀 18.66x faster)CompressedSNARK-StepCircuitSize-6559
Prove
Verify
564.42 ms
(✅ 1.00x)29.66 ms
(🚀 19.03x faster)CompressedSNARK-StepCircuitSize-22943
Prove
Verify
816.71 ms
(✅ 1.00x)39.30 ms
(🚀 20.78x faster)CompressedSNARK-StepCircuitSize-55711
Prove
Verify
1.37 s
(✅ 1.00x)24.80 ms
(🚀 55.39x faster)CompressedSNARK-StepCircuitSize-121247
Prove
Verify
2.33 s
(✅ 1.00x)36.10 ms
(🚀 64.55x faster)CompressedSNARK-StepCircuitSize-252319
Prove
Verify
4.31 s
(✅ 1.00x)53.29 ms
(🚀 80.87x faster)CompressedSNARK-StepCircuitSize-514463
Prove
Verify
8.36 s
(✅ 1.00x)88.36 ms
(🚀 94.65x faster)CompressedSNARK-StepCircuitSize-1038751
Prove
Verify
16.27 s
(✅ 1.00x)212.11 ms
(🚀 76.69x faster)CompressedSNARK-Commitments-StepCircuitSize-0
Prove
Verify
4.43 s
(✅ 1.00x)30.20 ms
(🚀 146.75x faster)CompressedSNARK-Commitments-StepCircuitSize-6559
Prove
Verify
8.20 s
(✅ 1.00x)39.01 ms
(🚀 210.07x faster)CompressedSNARK-Commitments-StepCircuitSize-22943
Prove
Verify
7.35 s
(✅ 1.00x)38.87 ms
(🚀 189.23x faster)CompressedSNARK-Commitments-StepCircuitSize-55711
Prove
Verify
14.61 s
(✅ 1.00x)63.02 ms
(🚀 231.91x faster)CompressedSNARK-Commitments-StepCircuitSize-121247
Prove
Verify
10.98 s
(✅ 1.00x)63.85 ms
(🚀 172.02x faster)CompressedSNARK-Commitments-StepCircuitSize-252319
Prove
Verify
21.86 s
(✅ 1.00x)147.37 ms
(🚀 148.32x faster)CompressedSNARK
ref=85c04b3ab1d8446b0a8337ad738ea11aa94f45b4
Prove-StepCircuitSize-0
544.44 ms
(✅ 1.00x)Verify-StepCircuitSize-0
29.58 ms
(✅ 1.00x)Prove-StepCircuitSize-6559
561.90 ms
(✅ 1.00x)Verify-StepCircuitSize-6559
29.75 ms
(✅ 1.00x)Prove-StepCircuitSize-22943
811.53 ms
(✅ 1.00x)Verify-StepCircuitSize-22943
39.13 ms
(✅ 1.00x)Prove-StepCircuitSize-55711
1.36 s
(✅ 1.00x)Verify-StepCircuitSize-55711
25.66 ms
(✅ 1.00x)Prove-StepCircuitSize-121247
2.32 s
(✅ 1.00x)Verify-StepCircuitSize-121247
36.83 ms
(✅ 1.00x)Prove-StepCircuitSize-252319
4.27 s
(✅ 1.00x)Verify-StepCircuitSize-252319
53.03 ms
(✅ 1.00x)Prove-StepCircuitSize-514463
8.27 s
(✅ 1.00x)Verify-StepCircuitSize-514463
87.86 ms
(✅ 1.00x)Prove-StepCircuitSize-1038751
16.12 s
(✅ 1.00x)Verify-StepCircuitSize-1038751
210.99 ms
(✅ 1.00x)CompressedSNARK-Commitments
ref=85c04b3ab1d8446b0a8337ad738ea11aa94f45b4
Prove-StepCircuitSize-0
4.40 s
(✅ 1.00x)Verify-StepCircuitSize-0
29.99 ms
(✅ 1.00x)Prove-StepCircuitSize-6559
8.08 s
(✅ 1.00x)Verify-StepCircuitSize-6559
38.87 ms
(✅ 1.00x)Prove-StepCircuitSize-22943
7.34 s
(✅ 1.00x)Verify-StepCircuitSize-2294...
39.10 ms
(✅ 1.00x)Prove-StepCircuitSize-55711
14.63 s
(✅ 1.00x)Verify-StepCircuitSize-5571...
62.38 ms
(✅ 1.00x)Prove-StepCircuitSize-12124...
11.03 s
(✅ 1.00x)Verify-StepCircuitSize-1212...
61.80 ms
(✅ 1.00x)Prove-StepCircuitSize-25231...
21.64 s
(✅ 1.00x)Verify-StepCircuitSize-2523...
145.71 ms
(✅ 1.00x)CompressedSNARKSuperNova-1circuit-StepCircuitSize-0
Prove
Verify
631.35 ms
(✅ 1.00x)41.60 ms
(🚀 15.18x faster)CompressedSNARKSuperNova-1circuit-StepCircuitSize-6540
Prove
Verify
627.13 ms
(✅ 1.00x)41.83 ms
(🚀 14.99x faster)CompressedSNARKSuperNova-1circuit-StepCircuitSize-22924
Prove
Verify
889.70 ms
(✅ 1.00x)52.14 ms
(🚀 17.06x faster)CompressedSNARKSuperNova-1circuit-StepCircuitSize-55692
Prove
Verify
1.43 s
(✅ 1.00x)39.45 ms
(🚀 36.17x faster)CompressedSNARKSuperNova-1circuit-StepCircuitSize-121228
Prove
Verify
2.41 s
(✅ 1.00x)49.07 ms
(🚀 49.13x faster)CompressedSNARKSuperNova-1circuit-StepCircuitSize-252300
Prove
Verify
4.44 s
(✅ 1.00x)66.00 ms
(🚀 67.21x faster)CompressedSNARKSuperNova-1circuit-StepCircuitSize-514444
Prove
Verify
8.30 s
(✅ 1.00x)121.44 ms
(🚀 68.38x faster)CompressedSNARKSuperNova-1circuit-StepCircuitSize-1038732
Prove
Verify
16.11 s
(✅ 1.00x)254.93 ms
(🚀 63.19x faster)CompressedSNARKSuperNova-2circuit-StepCircuitSize-0
Prove
Verify
629.65 ms
(✅ 1.00x)43.43 ms
(🚀 14.50x faster)CompressedSNARKSuperNova-2circuit-StepCircuitSize-6540
Prove
Verify
640.03 ms
(✅ 1.00x)43.64 ms
(🚀 14.67x faster)CompressedSNARKSuperNova-2circuit-StepCircuitSize-22924
Prove
Verify
890.85 ms
(✅ 1.00x)55.57 ms
(🚀 16.03x faster)CompressedSNARKSuperNova-2circuit-StepCircuitSize-55692
Prove
Verify
1.42 s
(✅ 1.00x)45.52 ms
(🚀 31.30x faster)CompressedSNARKSuperNova-2circuit-StepCircuitSize-121228
Prove
Verify
2.46 s
(✅ 1.00x)57.82 ms
(🚀 42.50x faster)CompressedSNARKSuperNova-2circuit-StepCircuitSize-252300
Prove
Verify
4.57 s
(✅ 1.00x)77.71 ms
(🚀 58.83x faster)CompressedSNARKSuperNova-2circuit-StepCircuitSize-514444
Prove
Verify
8.69 s
(✅ 1.00x)155.16 ms
(🚀 56.00x faster)CompressedSNARKSuperNova-2circuit-StepCircuitSize-1038732
Prove
Verify
16.21 s
(✅ 1.00x)341.11 ms
(🚀 47.52x faster)CompressedSNARKSuperNova-Commitments-2circuit-StepCircuitSize-0
Prove
Verify
8.18 s
(✅ 1.00x)68.10 ms
(🚀 120.14x faster)CompressedSNARKSuperNova-Commitments-2circuit-StepCircuitSize-6540
Prove
Verify
14.12 s
(✅ 1.00x)82.46 ms
(🚀 171.28x faster)CompressedSNARKSuperNova-Commitments-2circuit-StepCircuitSize-22924
Prove
Verify
12.58 s
(✅ 1.00x)81.91 ms
(🚀 153.60x faster)CompressedSNARKSuperNova-Commitments-2circuit-StepCircuitSize-55692
Prove
Verify
22.57 s
(✅ 1.00x)127.41 ms
(🚀 177.14x faster)CompressedSNARKSuperNova-Commitments-2circuit-StepCircuitSize-121228
Prove
Verify
15.77 s
(✅ 1.00x)128.00 ms
(🚀 123.24x faster)CompressedSNARKSuperNova-Commitments-2circuit-StepCircuitSize-252300
Prove
Verify
29.83 s
(✅ 1.00x)245.26 ms
(🚀 121.62x faster)CompressedSNARKSuperNova-Commitments-2circuit-StepCircuitSize-514444
Prove
Verify
58.21 s
(✅ 1.00x)421.23 ms
(🚀 138.18x faster)CompressedSNARKSuperNova-Commitments-2circuit-StepCircuitSize-1038732
Prove
Verify
111.86 s
(✅ 1.00x)778.01 ms
(🚀 143.77x faster)Made with criterion-table