Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: fold proving key polys instead of prover polys (#5436)
The prover folds the proving key polynomials instead of the prover polynomials, where the difference is only in the shifted polynomials. The prover will derive the shifted polynomials from the proving key polynomials instead. This results in a ~200ms improvement in Client IVC Bench, with the vast majority coming from the 20% reduction (55 to 44 polynomials) in polynomials that the prover folds while computing the next accumulator. High level differences in benchmark: Total time: 23750->23573ms accumulator_update_round: 724ms->570ms ``` -------------------------------------------------------------------------------- Benchmark Time CPU Iterations UserCounters... -------------------------------------------------------------------------------- ClientIVCBench/Full/6 23573 ms 18649 ms 1 Decider::construct_proof=1 Decider::construct_proof(t)=750.843M ECCVMComposer::compute_commitment_key=1 ECCVMComposer::compute_commitment_key(t)=3.68625M ECCVMComposer::compute_witness=1 ECCVMComposer::compute_witness(t)=128.974M ECCVMComposer::create_prover=1 ECCVMComposer::create_prover(t)=148.813M ECCVMComposer::create_proving_key=1 ECCVMComposer::create_proving_key(t)=15.9237M ECCVMProver::construct_proof=1 ECCVMProver::construct_proof(t)=1.75397G Goblin::merge=11 Goblin::merge(t)=135.218M GoblinTranslatorCircuitBuilder::constructor=1 GoblinTranslatorCircuitBuilder::constructor(t)=57.2252M GoblinTranslatorProver=1 GoblinTranslatorProver(t)=120.492M GoblinTranslatorProver::construct_proof=1 GoblinTranslatorProver::construct_proof(t)=944.363M ProtoGalaxyProver_::accumulator_update_round=10 ProtoGalaxyProver_::accumulator_update_round(t)=570.325M ProtoGalaxyProver_::combiner_quotient_round=10 ProtoGalaxyProver_::combiner_quotient_round(t)=7.19019G ProtoGalaxyProver_::perturbator_round=10 ProtoGalaxyProver_::perturbator_round(t)=1.31137G ProtoGalaxyProver_::preparation_round=10 ProtoGalaxyProver_::preparation_round(t)=4.13424G ProtogalaxyProver::fold_instances=10 ProtogalaxyProver::fold_instances(t)=13.2061G ProverInstance(Circuit&)=11 ProverInstance(Circuit&)(t)=1.95959G batch_mul_with_endomorphism=30 batch_mul_with_endomorphism(t)=563.661M commit=426 commit(t)=4.00095G compute_combiner=10 compute_combiner(t)=7.18806G compute_perturbator=9 compute_perturbator(t)=1.31106G compute_univariate=48 compute_univariate(t)=1.41724G construct_circuits=6 construct_circuits(t)=4.47437G Benchmarking lock deleted. client_ivc_bench.json 100% 3993 122.1KB/s 00:00 function ms % sum construct_circuits(t) 4474 19.14% ProverInstance(Circuit&)(t) 1960 8.38% ProtogalaxyProver::fold_instances(t) 13206 56.50% Decider::construct_proof(t) 751 3.21% ECCVMComposer::create_prover(t) 149 0.64% ECCVMProver::construct_proof(t) 1754 7.50% GoblinTranslatorProver::construct_proof(t) 944 4.04% Goblin::merge(t) 135 0.58% Total time accounted for: 23373ms/23573ms = 99.15% Major contributors: function ms % sum commit(t) 4001 17.12% compute_combiner(t) 7188 30.75% compute_perturbator(t) 1311 5.61% compute_univariate(t) 1417 6.06% Breakdown of ProtogalaxyProver::fold_instances: ProtoGalaxyProver_::preparation_round(t) 4134 31.31% ProtoGalaxyProver_::perturbator_round(t) 1311 9.93% ProtoGalaxyProver_::combiner_quotient_round(t) 7190 54.45% ProtoGalaxyProver_::accumulator_update_round(t) 570 4.32% ```
- Loading branch information