diff --git a/Cargo.lock b/Cargo.lock index 0270c4569..6985c018c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1541,6 +1541,8 @@ dependencies = [ "rand_chacha", "rayon", "serde", + "sumcheck", + "tracing", "transcript", "whir", "witness", diff --git a/mpcs/Cargo.toml b/mpcs/Cargo.toml index ee7e68d22..bec6e8478 100644 --- a/mpcs/Cargo.toml +++ b/mpcs/Cargo.toml @@ -33,11 +33,13 @@ plonky2.workspace = true poseidon.workspace = true rand.workspace = true rand_chacha.workspace = true +tracing.workspace = true rayon = { workspace = true, optional = true } serde.workspace = true transcript = { path = "../transcript" } whir = { path = "../whir", features = ["ceno"] } witness = { path = "../witness" } +ceno_sumcheck = { path = "../sumcheck", package = "sumcheck" } zeroize = "1.8" [dev-dependencies] diff --git a/mpcs/benches/whir.rs b/mpcs/benches/whir.rs index 9ebea830f..84bed0967 100644 --- a/mpcs/benches/whir.rs +++ b/mpcs/benches/whir.rs @@ -43,7 +43,7 @@ fn bench_commit_open_verify_goldilocks>(c: &m let mut transcript = T::new(b"BaseFold"); let rmm = RowMajorMatrix::rand(&mut OsRng, 1 << num_vars, 1); - let poly = rmm.to_mles().remove(0); + let poly: ArcMultilinearExtension<_> = rmm.to_mles().remove(0).into(); let comm = Pcs::commit_and_write(&pp, rmm, &mut transcript).unwrap(); group.bench_function(BenchmarkId::new("commit", format!("{}", num_vars)), |b| { diff --git a/mpcs/src/basefold.rs b/mpcs/src/basefold.rs index 1c2eaf0f0..80b157e41 100644 --- a/mpcs/src/basefold.rs +++ b/mpcs/src/basefold.rs @@ -19,6 +19,7 @@ use crate::{ validate_input, }; use ark_std::{end_timer, start_timer}; +use ceno_sumcheck::macros::{entered_span, exit_span}; pub use encoding::{ Basecode, BasecodeDefaultSpec, EncodingProverParameters, EncodingScheme, RSCode, RSCodeDefaultSpec, @@ -345,7 +346,9 @@ where pp: &Self::ProverParam, rmm: witness::RowMajorMatrix<::BaseField>, ) -> Result { + let span = entered_span!("to_mles", profiling_3 = true); let polys = rmm.to_mles(); + exit_span!(span); // assumptions // 1. there must be at least one polynomial // 2. all polynomials must exist in the same field type @@ -376,12 +379,15 @@ where let timer = start_timer!(|| "Basefold::batch commit"); let encode_timer = start_timer!(|| "Basefold::batch commit::encoding and interpolations"); + let span = entered_span!("encode_codeword_and_mle", profiling_3 = true); let evals_codewords = polys .par_iter() .map(|poly| Self::get_poly_bh_evals_and_codeword(pp, poly)) .collect::>>(); + exit_span!(span); end_timer!(encode_timer); + let span = entered_span!("build mt", profiling_3 = true); // build merkle tree from leaves let ret = match evals_codewords[0] { PolyEvalsCodeword::Normal(_) => { @@ -436,7 +442,7 @@ where } PolyEvalsCodeword::TooBig(num_vars) => return Err(Error::PolynomialTooLarge(num_vars)), }; - + exit_span!(span); end_timer!(timer); Ok(ret) diff --git a/mpcs/src/basefold/commit_phase.rs b/mpcs/src/basefold/commit_phase.rs index 964529ed5..75315459e 100644 --- a/mpcs/src/basefold/commit_phase.rs +++ b/mpcs/src/basefold/commit_phase.rs @@ -313,7 +313,6 @@ where FieldType::Ext(basecode) => basecode, _ => panic!("Should be ext field"), }; - let mut new_running_oracle = new_running_oracle; reverse_index_bits_in_place(&mut new_running_oracle); assert_eq!(basecode, new_running_oracle);