From 519533d4b775b8f1a7cf4ccb1e4fa6a39b26aadf Mon Sep 17 00:00:00 2001 From: Daniel Lubarov Date: Thu, 1 Jul 2021 10:53:42 -0700 Subject: [PATCH] Benchmark tweaks (#83) - Configure FRI with a list of arities that's more appropriate for a 2^14 instance. The previous config resulted in a huge final polynomial. - Log the blinding factors, and other logging tweaks. --- src/bin/bench_recursion.rs | 4 +--- src/circuit_builder.rs | 8 ++++++-- src/gadgets/arithmetic.rs | 1 - src/gadgets/arithmetic_extension.rs | 2 +- src/gates/gate_tree.rs | 2 +- src/polynomial/polynomial.rs | 4 +--- src/util/timing.rs | 2 +- 7 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/bin/bench_recursion.rs b/src/bin/bench_recursion.rs index 0f1b9783..b55ee841 100644 --- a/src/bin/bench_recursion.rs +++ b/src/bin/bench_recursion.rs @@ -21,8 +21,6 @@ fn main() { } fn bench_prove, const D: usize>() { - let gmimc_gate = GMiMCGate::::with_automatic_constants(); - let config = CircuitConfig { num_wires: 134, num_routed_wires: 27, @@ -32,7 +30,7 @@ fn bench_prove, const D: usize>() { fri_config: FriConfig { proof_of_work_bits: 1, rate_bits: 3, - reduction_arity_bits: vec![1, 1, 1, 1], + reduction_arity_bits: vec![2, 2, 2, 2, 2], num_query_rounds: 1, }, }; diff --git a/src/circuit_builder.rs b/src/circuit_builder.rs index 06c554e3..2d00b403 100644 --- a/src/circuit_builder.rs +++ b/src/circuit_builder.rs @@ -277,6 +277,10 @@ impl, const D: usize> CircuitBuilder { fn blind_and_pad(&mut self) { let (regular_poly_openings, z_openings) = self.blinding_counts(); + info!( + "Adding {} blinding terms for witness polynomials, and {}*2 for Z polynomials", + regular_poly_openings, z_openings + ); let num_routed_wires = self.config.num_routed_wires; let num_wires = self.config.num_wires; @@ -383,12 +387,12 @@ impl, const D: usize> CircuitBuilder { pub fn build(mut self) -> CircuitData { let start = Instant::now(); info!( - "degree before blinding & padding: {}", + "Degree before blinding & padding: {}", self.gate_instances.len() ); self.blind_and_pad(); let degree = self.gate_instances.len(); - info!("degree after blinding & padding: {}", degree); + info!("Degree after blinding & padding: {}", degree); let gates = self.gates.iter().cloned().collect(); let (gate_tree, max_filtered_constraint_degree, num_constants) = Tree::from_gates(gates); diff --git a/src/gadgets/arithmetic.rs b/src/gadgets/arithmetic.rs index bda70624..5c328362 100644 --- a/src/gadgets/arithmetic.rs +++ b/src/gadgets/arithmetic.rs @@ -1,7 +1,6 @@ use crate::circuit_builder::CircuitBuilder; use crate::field::extension_field::Extendable; use crate::target::Target; -use crate::util::bits_u64; impl, const D: usize> CircuitBuilder { /// Computes `-x`. diff --git a/src/gadgets/arithmetic_extension.rs b/src/gadgets/arithmetic_extension.rs index ce53c59f..4f7b1e14 100644 --- a/src/gadgets/arithmetic_extension.rs +++ b/src/gadgets/arithmetic_extension.rs @@ -6,7 +6,7 @@ use num::Integer; use crate::circuit_builder::CircuitBuilder; use crate::field::extension_field::target::{ExtensionAlgebraTarget, ExtensionTarget}; -use crate::field::extension_field::{Extendable, FieldExtension, OEF}; +use crate::field::extension_field::{Extendable, OEF}; use crate::field::field::Field; use crate::gates::arithmetic::ArithmeticExtensionGate; use crate::generator::SimpleGenerator; diff --git a/src/gates/gate_tree.rs b/src/gates/gate_tree.rs index bf56a690..5c2e084e 100644 --- a/src/gates/gate_tree.rs +++ b/src/gates/gate_tree.rs @@ -86,7 +86,7 @@ impl, const D: usize> Tree> { } } info!( - "Found tree with max degree {} and {} constants wires in {}s.", + "Found tree with max degree {} and {} constants wires in {:.4}s.", best_degree, best_num_constants, timer.elapsed().as_secs_f32() diff --git a/src/polynomial/polynomial.rs b/src/polynomial/polynomial.rs index 5f295030..81d07b8f 100644 --- a/src/polynomial/polynomial.rs +++ b/src/polynomial/polynomial.rs @@ -1,5 +1,3 @@ -use std::time::Instant; - use std::cmp::max; use std::iter::Sum; use std::ops::{Add, AddAssign, Mul, MulAssign, Sub, SubAssign}; @@ -7,7 +5,7 @@ use std::ops::{Add, AddAssign, Mul, MulAssign, Sub, SubAssign}; use anyhow::{ensure, Result}; use crate::field::extension_field::Extendable; -use crate::field::fft::{fft, ifft, fft_with_options}; +use crate::field::fft::{fft, fft_with_options, ifft}; use crate::field::field::Field; use crate::util::log2_strict; diff --git a/src/util/timing.rs b/src/util/timing.rs index 17136f36..6f27a9d1 100644 --- a/src/util/timing.rs +++ b/src/util/timing.rs @@ -7,7 +7,7 @@ macro_rules! timed { let timer = Instant::now(); let res = $a; - info!("{:.3}s {}", timer.elapsed().as_secs_f32(), $msg); + info!("{:.4}s {}", timer.elapsed().as_secs_f32(), $msg); res }}; }