Repository navigation
Parallelize verifier pairing inputs under std - #1000
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1000 +/- ##
==========================================
- Coverage 92.27% 92.25% -0.03%
==========================================
Files 81 81
Lines 8886 8887 +1
==========================================
- Hits 8200 8199 -1
- Misses 686 688 +2
Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
bff9e35 to
c8532cc
Compare
c8532cc to
e69cb40
Compare
moCello
left a comment
There was a problem hiding this comment.
COMMENT — The verifier change is correct: both closures read only public, already computed values, the pairing equation is unchanged, and the split matches the rayon::join pattern in the prover. Approval waits on the new bench, which cannot run from this repo and makes make bench fail.
One small note below on the V1 path.
e69cb40 to
874e789
Compare
moCello
left a comment
There was a problem hiding this comment.
APPROVE — Both verifier paths compute the two pairing inputs with rayon::join, as the prover already does, and the pairing equation does not change. The closures read only public values that the transcript fixes, the no_std path stays serial, and the new bench runs from this repository.
- Process note: the pull request description still says that a Phoenix V3 benchmark is added, and its timing table comes from that external fixture. The bench in this change is a synthetic circuit with 32 public inputs. Update the description so that it names the bench that lands.
874e789 to
9ad817f
Compare
Summary
This change parallelizes the construction of the two independent G1 pairing inputs during proof verification using rayon via joining two closures.
The left opening-witness computation and the right grouped MSM are independent, so they can execute concurrently under
std. The existing non-parallel behavior is retained forno_std.This does not change the verification equations, transcript, proof format, or public API.
A Criterion verification benchmark using a synthetic circuit with 32 public inputs is added as well.
Performance
The timings below were measured separately using an existing valid Phoenix V3 fixture with 32 public inputs (not the synthetic benchmark added in this PR), with verifier/proof decoding outside the timed section.
3 paired runs were performed (25 warmups and 500 timed verifications each), using the default 32-worker Rayon pool.
This measures single-proof verification latency.