diff --git a/prover/src/constraints/composition_poly.rs b/prover/src/constraints/composition_poly.rs index 228e059e7..66b646690 100644 --- a/prover/src/constraints/composition_poly.rs +++ b/prover/src/constraints/composition_poly.rs @@ -7,6 +7,7 @@ use alloc::vec::Vec; use air::proof::QuotientOodFrame; use math::{fft, polynom::degree_of, FieldElement, StarkField}; +use tracing::instrument; use super::{ColMatrix, StarkDomain}; @@ -98,6 +99,7 @@ impl CompositionPoly { } /// Returns evaluations of all composition polynomial columns at points `z` and `g * z`. + #[instrument(skip_all)] pub fn get_ood_frame(&self, z: E) -> QuotientOodFrame { let log_trace_len = self.column_len().ilog2(); let g = E::from(E::BaseField::get_root_of_unity(log_trace_len)); diff --git a/prover/src/lib.rs b/prover/src/lib.rs index 7d89e97b5..811a9cee7 100644 --- a/prover/src/lib.rs +++ b/prover/src/lib.rs @@ -383,6 +383,7 @@ pub trait Prover { .commit_to_constraint_evaluations(&air, composition_poly_trace, &domain, &mut channel)); // 4 ----- build DEEP composition polynomial ---------------------------------------------- + let opening_span = info_span!("opening").entered(); let deep_composition_poly = { let span = info_span!("build_deep_composition_poly").entered(); // draw an out-of-domain point z. Depending on the type of E, the point is drawn either @@ -460,6 +461,7 @@ pub trait Prover { drop(span); query_positions }; + drop(opening_span); // 8 ----- build proof object ------------------------------------------------------------- let proof = { diff --git a/prover/src/matrix/col_matrix.rs b/prover/src/matrix/col_matrix.rs index 6b15f8088..71d58c038 100644 --- a/prover/src/matrix/col_matrix.rs +++ b/prover/src/matrix/col_matrix.rs @@ -8,6 +8,7 @@ use core::{iter::FusedIterator, slice}; use crypto::{ElementHasher, VectorCommitment}; use math::{fft, polynom, FieldElement}; +use tracing::info_span; #[cfg(feature = "concurrent")] use utils::iterators::*; use utils::{batch_iter_mut, iter, iter_mut, uninit_vector}; @@ -246,7 +247,9 @@ impl ColMatrix { where F: FieldElement + From, { - iter!(self.columns).map(|p| polynom::eval(p, x)).collect() + let dim = (self.num_cols(), self.num_rows()); + info_span!("compute opened values with Horner evaluation", ?dim) + .in_scope(|| iter!(self.columns).map(|p| polynom::eval(p, x)).collect()) } // COMMITMENTS diff --git a/prover/src/trace/poly_table.rs b/prover/src/trace/poly_table.rs index b5d1c6df1..5a4662608 100644 --- a/prover/src/trace/poly_table.rs +++ b/prover/src/trace/poly_table.rs @@ -7,6 +7,7 @@ use alloc::vec::Vec; use air::proof::TraceOodFrame; use math::{FieldElement, StarkField}; +use tracing::instrument; use crate::{matrix::ColumnIter, ColMatrix}; @@ -65,6 +66,7 @@ impl TracePolyTable { /// Returns an out-of-domain evaluation frame constructed by evaluating trace polynomials for /// all columns at points z and z * g, where g is the generator of the trace domain. + #[instrument(skip_all)] pub fn get_ood_frame(&self, z: E) -> TraceOodFrame { let log_trace_len = self.poly_size().ilog2(); let g = E::from(E::BaseField::get_root_of_unity(log_trace_len));