mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-25 00:53:25 +00:00
Only log timing for the final proof in recursion tests (#315)
* Only log timing for the final proof in recursion tests Just to reduce noise; the performance of the final proof is most meaningful * fmt
This commit is contained in:
parent
6463e4f4e7
commit
b0b2a10da0
@ -413,7 +413,7 @@ mod tests {
|
||||
builder.assert_permutation(a, b);
|
||||
|
||||
let data = builder.build();
|
||||
let proof = data.prove(pw).unwrap();
|
||||
let proof = data.prove(pw)?;
|
||||
|
||||
verify(proof, &data.verifier_only, &data.common)
|
||||
}
|
||||
@ -442,7 +442,7 @@ mod tests {
|
||||
builder.assert_permutation(a, b);
|
||||
|
||||
let data = builder.build();
|
||||
let proof = data.prove(pw).unwrap();
|
||||
let proof = data.prove(pw)?;
|
||||
|
||||
verify(proof, &data.verifier_only, &data.common)
|
||||
}
|
||||
@ -470,7 +470,7 @@ mod tests {
|
||||
builder.assert_permutation(a, b);
|
||||
|
||||
let data = builder.build();
|
||||
data.prove(pw).unwrap();
|
||||
data.prove(pw)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -19,6 +19,7 @@ use crate::plonk::proof::ProofWithPublicInputs;
|
||||
use crate::plonk::prover::prove;
|
||||
use crate::plonk::verifier::verify;
|
||||
use crate::util::marking::MarkedTargets;
|
||||
use crate::util::timing::TimingTree;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct CircuitConfig {
|
||||
@ -107,7 +108,12 @@ pub struct CircuitData<F: RichField + Extendable<D>, const D: usize> {
|
||||
|
||||
impl<F: RichField + Extendable<D>, const D: usize> CircuitData<F, D> {
|
||||
pub fn prove(&self, inputs: PartialWitness<F>) -> Result<ProofWithPublicInputs<F, D>> {
|
||||
prove(&self.prover_only, &self.common, inputs)
|
||||
prove(
|
||||
&self.prover_only,
|
||||
&self.common,
|
||||
inputs,
|
||||
&mut TimingTree::default(),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn verify(&self, proof_with_pis: ProofWithPublicInputs<F, D>) -> Result<()> {
|
||||
@ -129,7 +135,12 @@ pub struct ProverCircuitData<F: RichField + Extendable<D>, const D: usize> {
|
||||
|
||||
impl<F: RichField + Extendable<D>, const D: usize> ProverCircuitData<F, D> {
|
||||
pub fn prove(&self, inputs: PartialWitness<F>) -> Result<ProofWithPublicInputs<F, D>> {
|
||||
prove(&self.prover_only, &self.common, inputs)
|
||||
prove(
|
||||
&self.prover_only,
|
||||
&self.common,
|
||||
inputs,
|
||||
&mut TimingTree::default(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -26,8 +26,8 @@ pub(crate) fn prove<F: RichField + Extendable<D>, const D: usize>(
|
||||
prover_data: &ProverOnlyCircuitData<F, D>,
|
||||
common_data: &CommonCircuitData<F, D>,
|
||||
inputs: PartialWitness<F>,
|
||||
timing: &mut TimingTree,
|
||||
) -> Result<ProofWithPublicInputs<F, D>> {
|
||||
let mut timing = TimingTree::new("prove", Level::Debug);
|
||||
let config = &common_data.config;
|
||||
let num_challenges = config.num_challenges;
|
||||
let quotient_degree = common_data.quotient_degree();
|
||||
@ -73,7 +73,7 @@ pub(crate) fn prove<F: RichField + Extendable<D>, const D: usize>(
|
||||
config.rate_bits,
|
||||
config.zero_knowledge & PlonkPolynomials::WIRES.blinding,
|
||||
config.cap_height,
|
||||
&mut timing,
|
||||
timing,
|
||||
prover_data.fft_root_table.as_ref(),
|
||||
)
|
||||
);
|
||||
@ -119,7 +119,7 @@ pub(crate) fn prove<F: RichField + Extendable<D>, const D: usize>(
|
||||
config.rate_bits,
|
||||
config.zero_knowledge & PlonkPolynomials::ZS_PARTIAL_PRODUCTS.blinding,
|
||||
config.cap_height,
|
||||
&mut timing,
|
||||
timing,
|
||||
prover_data.fft_root_table.as_ref(),
|
||||
)
|
||||
);
|
||||
@ -169,7 +169,7 @@ pub(crate) fn prove<F: RichField + Extendable<D>, const D: usize>(
|
||||
config.rate_bits,
|
||||
config.zero_knowledge & PlonkPolynomials::QUOTIENT.blinding,
|
||||
config.cap_height,
|
||||
&mut timing,
|
||||
timing,
|
||||
prover_data.fft_root_table.as_ref(),
|
||||
)
|
||||
);
|
||||
@ -191,12 +191,10 @@ pub(crate) fn prove<F: RichField + Extendable<D>, const D: usize>(
|
||||
zeta,
|
||||
&mut challenger,
|
||||
common_data,
|
||||
&mut timing,
|
||||
timing,
|
||||
)
|
||||
);
|
||||
|
||||
timing.print();
|
||||
|
||||
let proof = Proof {
|
||||
wires_cap: wires_commitment.merkle_tree.cap,
|
||||
plonk_zs_partial_products_cap: zs_partial_products_commitment.merkle_tree.cap,
|
||||
|
||||
@ -124,7 +124,7 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use anyhow::Result;
|
||||
use log::info;
|
||||
use log::{info, Level};
|
||||
|
||||
use super::*;
|
||||
use crate::field::goldilocks_field::GoldilocksField;
|
||||
@ -141,7 +141,9 @@ mod tests {
|
||||
CompressedProofWithPublicInputs, OpeningSetTarget, Proof, ProofTarget,
|
||||
ProofWithPublicInputs,
|
||||
};
|
||||
use crate::plonk::prover::prove;
|
||||
use crate::util::log2_strict;
|
||||
use crate::util::timing::TimingTree;
|
||||
|
||||
// Construct a `FriQueryRoundTarget` with the same dimensions as the ones in `proof`.
|
||||
fn get_fri_query_round<F: RichField + Extendable<D>, const D: usize>(
|
||||
@ -367,7 +369,7 @@ mod tests {
|
||||
let config = CircuitConfig::standard_recursion_config();
|
||||
|
||||
let (proof, vd, cd) = dummy_proof::<F, D>(&config, 8_000)?;
|
||||
let (proof, _vd, cd) = recursive_proof(proof, vd, cd, &config, &config, true)?;
|
||||
let (proof, _vd, cd) = recursive_proof(proof, vd, cd, &config, &config, true, true)?;
|
||||
test_serialization(&proof, &cd)?;
|
||||
|
||||
Ok(())
|
||||
@ -383,8 +385,8 @@ mod tests {
|
||||
let config = CircuitConfig::standard_recursion_config();
|
||||
|
||||
let (proof, vd, cd) = dummy_proof::<F, D>(&config, 8_000)?;
|
||||
let (proof, vd, cd) = recursive_proof(proof, vd, cd, &config, &config, false)?;
|
||||
let (proof, _vd, cd) = recursive_proof(proof, vd, cd, &config, &config, true)?;
|
||||
let (proof, vd, cd) = recursive_proof(proof, vd, cd, &config, &config, false, false)?;
|
||||
let (proof, _vd, cd) = recursive_proof(proof, vd, cd, &config, &config, true, true)?;
|
||||
|
||||
test_serialization(&proof, &cd)?;
|
||||
|
||||
@ -414,8 +416,9 @@ mod tests {
|
||||
|
||||
let (proof, vd, cd) = dummy_proof::<F, D>(&normal_config, 8_000)?;
|
||||
let (proof, vd, cd) =
|
||||
recursive_proof(proof, vd, cd, &normal_config, &normal_config, false)?;
|
||||
let (proof, _vd, cd) = recursive_proof(proof, vd, cd, &normal_config, &final_config, true)?;
|
||||
recursive_proof(proof, vd, cd, &normal_config, &normal_config, false, false)?;
|
||||
let (proof, _vd, cd) =
|
||||
recursive_proof(proof, vd, cd, &normal_config, &final_config, true, true)?;
|
||||
|
||||
test_serialization(&proof, &cd)?;
|
||||
|
||||
@ -449,6 +452,7 @@ mod tests {
|
||||
inner_config: &CircuitConfig,
|
||||
config: &CircuitConfig,
|
||||
print_gate_counts: bool,
|
||||
print_timing: bool,
|
||||
) -> Result<(
|
||||
ProofWithPublicInputs<F, D>,
|
||||
VerifierOnlyCircuitData<F>,
|
||||
@ -474,7 +478,13 @@ mod tests {
|
||||
}
|
||||
|
||||
let data = builder.build();
|
||||
let proof = data.prove(pw)?;
|
||||
|
||||
let mut timing = TimingTree::new("prove", Level::Debug);
|
||||
let proof = prove(&data.prover_only, &data.common, pw, &mut timing)?;
|
||||
if print_timing {
|
||||
timing.print();
|
||||
}
|
||||
|
||||
data.verify(proof.clone())?;
|
||||
|
||||
Ok((proof, data.verifier_only, data.common))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user