diff --git a/Makefile.toml b/Makefile.toml index ce579bb..ebbc95c 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -4,6 +4,7 @@ CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true [tasks.tests] args = [ "test", + "--all-features", # Run everything but 'benches'. "--lib", "--bins", @@ -16,6 +17,14 @@ env = { RUST_MIN_STACK = "33554432" } workspace = false [tasks.clippy] -args = ["clippy", "--workspace", "--all-targets", "--", "-D", "warnings"] +args = [ + "clippy", + "--workspace", + "--all-targets", + "--all-features", + "--", + "-D", + "warnings", +] command = "cargo" workspace = false diff --git a/crates/curves/Cargo.toml b/crates/curves/Cargo.toml index c51daaf..67bd2e1 100644 --- a/crates/curves/Cargo.toml +++ b/crates/curves/Cargo.toml @@ -24,9 +24,9 @@ serde = { workspace = true, features = ["derive"] } typenum = "1.17.0" cfg-if.workspace = true -ff_ext = { version = "0.1.0", path = "../ff_ext" } -itertools = { workspace = true } -multilinear_extensions = { version = "0.1.0", path = "../multilinear_extensions" } +ff_ext.workspace = true +itertools.workspace = true +multilinear_extensions.workspace = true rug = { version = "1.26.1", optional = true } [dev-dependencies] diff --git a/crates/mpcs/Cargo.toml b/crates/mpcs/Cargo.toml index 20e3063..4ae4972 100644 --- a/crates/mpcs/Cargo.toml +++ b/crates/mpcs/Cargo.toml @@ -14,7 +14,7 @@ bincode = "1.3.3" clap.workspace = true ff_ext.workspace = true itertools.workspace = true -whir.workspace = true +whir = { workspace = true, optional = true } multilinear_extensions.workspace = true num-integer = "0.1" p3.workspace = true @@ -32,18 +32,9 @@ witness.workspace = true criterion.workspace = true [features] -benchmark = ["parallel"] -default = ["parallel"] # Add "sanity-check" to debug -nightly-features = [ - "p3/nightly-features", - "ff_ext/nightly-features", - "multilinear_extensions/nightly-features", - "sumcheck/nightly-features", - "transcript/nightly-features", - "whir/nightly-features", - "witness/nightly-features", -] -parallel = ["dep:rayon"] +nightly-features = ["ff_ext/nightly-features"] +parallel = ["p3/parallel", "dep:rayon"] +whir = ["dep:whir"] print-trace = ["whir/print-trace"] sanity-check = [] diff --git a/crates/mpcs/benches/interpolate.rs b/crates/mpcs/benches/interpolate.rs index 435a9a6..f7298bd 100644 --- a/crates/mpcs/benches/interpolate.rs +++ b/crates/mpcs/benches/interpolate.rs @@ -7,9 +7,9 @@ use itertools::Itertools; use mpcs::util::arithmetic::interpolate_field_type_over_boolean_hypercube; use multilinear_extensions::mle::{FieldType, MultilinearExtension}; +use p3::maybe_rayon::prelude::*; use rand::{SeedableRng, rngs::OsRng}; use rand_chacha::ChaCha8Rng; -use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; type E = GoldilocksExt2; diff --git a/crates/mpcs/src/basefold/commit_phase.rs b/crates/mpcs/src/basefold/commit_phase.rs index d563334..bcf1aff 100644 --- a/crates/mpcs/src/basefold/commit_phase.rs +++ b/crates/mpcs/src/basefold/commit_phase.rs @@ -38,11 +38,7 @@ use multilinear_extensions::{ mle::{IntoMLE, MultilinearExtension}, virtual_poly::build_eq_x_r_vec, }; -use rayon::{ - iter::{IntoParallelIterator, IntoParallelRefMutIterator}, - prelude::{IndexedParallelIterator, ParallelIterator}, - slice::ParallelSlice, -}; +use p3::maybe_rayon::prelude::*; use super::structure::BasefoldCommitmentWithWitness; diff --git a/crates/mpcs/src/lib.rs b/crates/mpcs/src/lib.rs index aa08767..0959d75 100644 --- a/crates/mpcs/src/lib.rs +++ b/crates/mpcs/src/lib.rs @@ -258,6 +258,7 @@ pub enum Error { PolynomialSizesNotEqual, MerkleRootMismatch, PointEvalMismatch(String), + #[cfg(feature = "whir")] WhirError(whir_external::error::Error), } @@ -266,9 +267,11 @@ pub use basefold::{ Basefold, BasefoldCommitment, BasefoldCommitmentWithWitness, BasefoldDefault, BasefoldParams, BasefoldRSParams, BasefoldSpec, EncodingScheme, RSCode, RSCodeDefaultSpec, }; +#[cfg(feature = "whir")] extern crate whir as whir_external; mod whir; use multilinear_extensions::mle::ArcMultilinearExtension; +#[cfg(feature = "whir")] pub use whir::{Whir, WhirDefault, WhirDefaultSpec}; // TODO: Need to use some functions here in the integration benchmarks. But diff --git a/crates/mpcs/src/util.rs b/crates/mpcs/src/util.rs index c6cabe0..587df7b 100644 --- a/crates/mpcs/src/util.rs +++ b/crates/mpcs/src/util.rs @@ -101,7 +101,7 @@ pub(crate) fn codeword_fold_with_challenge( lo + challenge * (hi - lo) } -#[cfg(any(test, feature = "benchmark"))] +#[cfg(test)] pub mod test { use ff_ext::FromUniformBytes; use rand::{ diff --git a/crates/multilinear_extensions/Cargo.toml b/crates/multilinear_extensions/Cargo.toml index 0b6d409..c4f8ea2 100644 --- a/crates/multilinear_extensions/Cargo.toml +++ b/crates/multilinear_extensions/Cargo.toml @@ -26,9 +26,8 @@ log = "0.4" serde_json.workspace = true [features] -default = ["parallel"] -nightly-features = ["p3/nightly-features", "ff_ext/nightly-features"] -parallel = [] +nightly-features = ["ff_ext/nightly-features"] +parallel = ["p3/parallel"] [[bench]] harness = false diff --git a/crates/multilinear_extensions/src/expression.rs b/crates/multilinear_extensions/src/expression.rs index e5c4c45..fa1051d 100644 --- a/crates/multilinear_extensions/src/expression.rs +++ b/crates/multilinear_extensions/src/expression.rs @@ -9,8 +9,7 @@ use crate::{ }; use ff_ext::{ExtensionField, SmallField}; use itertools::{Either, Itertools, chain, izip}; -use p3::field::FieldAlgebra; -use rayon::iter::{IntoParallelIterator, IntoParallelRefIterator, ParallelIterator}; +use p3::{field::FieldAlgebra, maybe_rayon::prelude::*}; use serde::de::DeserializeOwned; use std::{ cmp::max, diff --git a/crates/multilinear_extensions/src/mle.rs b/crates/multilinear_extensions/src/mle.rs index f02eb9c..f1370da 100644 --- a/crates/multilinear_extensions/src/mle.rs +++ b/crates/multilinear_extensions/src/mle.rs @@ -9,15 +9,13 @@ use crate::{ }; use either::Either; use ff_ext::{ExtensionField, FromUniformBytes}; -use p3::field::{Field, FieldAlgebra}; -use rand::Rng; -use rayon::{ - iter::{ - IndexedParallelIterator, IntoParallelIterator, IntoParallelRefIterator, - IntoParallelRefMutIterator, ParallelIterator, - }, - slice::ParallelSliceMut, +#[cfg(not(feature = "parallel"))] +use itertools::Itertools; +use p3::{ + field::{Field, FieldAlgebra}, + maybe_rayon::prelude::*, }; +use rand::Rng; use serde::{Deserialize, Serialize, de::DeserializeOwned}; use std::fmt::Debug; @@ -612,10 +610,8 @@ impl<'a, E: ExtensionField> MultilinearExtension<'a, E> { Cow::Owned(MultilinearExtension::from_evaluations_ext_vec( self.num_vars() - 1, evaluations - .par_iter() - .chunks(2) - .with_min_len(64) - .map(|buf| *point * (*buf[1] - *buf[0]) + *buf[0]) + .par_chunks(2) + .map(|buf| *point * (buf[1] - buf[0]) + buf[0]) .collect(), )) }); @@ -645,10 +641,8 @@ impl<'a, E: ExtensionField> MultilinearExtension<'a, E> { match &mut self.evaluations { FieldType::Base(slice) => { let slice_ext = slice - .par_iter() - .chunks(2) - .with_min_len(64) - .map(|buf| *point * (*buf[1] - *buf[0]) + *buf[0]) + .par_chunks(2) + .map(|buf| *point * (buf[1] - buf[0]) + buf[0]) .collect(); let _ = mem::replace( &mut self.evaluations, @@ -658,10 +652,8 @@ impl<'a, E: ExtensionField> MultilinearExtension<'a, E> { FieldType::Ext(slice) => { let slice_mut = slice.to_mut(); slice_mut - .par_iter_mut() - .chunks(2) - .with_min_len(64) - .for_each(|mut buf| *buf[0] = *buf[0] + (*buf[1] - *buf[0]) * *point); + .par_chunks_mut(2) + .for_each(|buf| buf[0] = buf[0] + (buf[1] - buf[0]) * *point); // sequentially update buf[b1, b2,..bt] = buf[b1, b2,..bt, 0] for index in 0..1 << (max_log2_size - 1) { diff --git a/crates/multilinear_extensions/src/virtual_poly.rs b/crates/multilinear_extensions/src/virtual_poly.rs index bdc78ee..795ca61 100644 --- a/crates/multilinear_extensions/src/virtual_poly.rs +++ b/crates/multilinear_extensions/src/virtual_poly.rs @@ -10,12 +10,8 @@ use crate::{ use either::Either; use ff_ext::ExtensionField; use itertools::Itertools; -use p3::field::Field; +use p3::{field::Field, maybe_rayon::prelude::*}; use rand::Rng; -use rayon::{ - iter::{IndexedParallelIterator, IntoParallelIterator, ParallelIterator}, - slice::ParallelSliceMut, -}; use serde::{Deserialize, Serialize, de::DeserializeOwned}; pub type MonomialTermsType<'a, E> = diff --git a/crates/p3/Cargo.toml b/crates/p3/Cargo.toml index cd16d15..6154570 100644 --- a/crates/p3/Cargo.toml +++ b/crates/p3/Cargo.toml @@ -27,7 +27,6 @@ p3-symmetric.workspace = true p3-util.workspace = true [features] -default = ["parallel"] nightly-features = [ "p3-baby-bear/nightly-features", "p3-dft/nightly-features", diff --git a/crates/poseidon/Cargo.toml b/crates/poseidon/Cargo.toml index e9e8f90..ed49c18 100644 --- a/crates/poseidon/Cargo.toml +++ b/crates/poseidon/Cargo.toml @@ -18,4 +18,4 @@ serde.workspace = true rand.workspace = true [features] -nightly-features = ["p3/nightly-features", "ff_ext/nightly-features"] +nightly-features = ["ff_ext/nightly-features"] diff --git a/crates/sumcheck/Cargo.toml b/crates/sumcheck/Cargo.toml index c0f56b7..2a0cfc6 100644 --- a/crates/sumcheck/Cargo.toml +++ b/crates/sumcheck/Cargo.toml @@ -13,16 +13,14 @@ version.workspace = true either.workspace = true ff_ext.workspace = true itertools.workspace = true -multilinear_extensions = { path = "../multilinear_extensions", features = [ - "parallel", -] } +multilinear_extensions.workspace = true p3.workspace = true rayon.workspace = true serde.workspace = true -sumcheck_macro = { path = "../sumcheck_macro" } +sumcheck_macro.workspace = true thiserror.workspace = true tracing.workspace = true -transcript = { path = "../transcript" } +transcript.workspace = true [dev-dependencies] criterion.workspace = true @@ -31,13 +29,9 @@ poseidon.workspace = true rand.workspace = true [features] -nightly-features = [ - "p3/nightly-features", - "ff_ext/nightly-features", - "multilinear_extensions/nightly-features", - "sumcheck_macro/nightly-features", - "transcript/nightly-features", -] +nightly-features = ["ff_ext/nightly-features"] +parallel = ["p3/parallel", "multilinear_extensions/parallel"] + [[bench]] harness = false diff --git a/crates/sumcheck/src/prover.rs b/crates/sumcheck/src/prover.rs index 9778005..ec8982f 100644 --- a/crates/sumcheck/src/prover.rs +++ b/crates/sumcheck/src/prover.rs @@ -10,10 +10,7 @@ use multilinear_extensions::{ virtual_poly::{MonomialTerms, VirtualPolynomial}, virtual_polys::{PolyMeta, VirtualPolynomials}, }; -use rayon::{ - iter::{IndexedParallelIterator, IntoParallelRefIterator, IntoParallelRefMutIterator}, - prelude::{IntoParallelIterator, ParallelIterator}, -}; +use p3::maybe_rayon::prelude::*; use sumcheck_macro::sumcheck_code_gen; use transcript::{Challenge, Transcript}; @@ -41,12 +38,14 @@ impl<'a, E: ExtensionField> Phase1Workers<'a, E> { ) -> (Vec>, Vec>) { let mut prover_msgs = Vec::with_capacity(num_variables); for _ in 0..num_variables { - let evaluations = self - .workers_states - .par_iter_mut() - .map(|state| state.run_round()) - .reduce(|| AdditiveVec::new(max_degree + 1), |a, b| a + b); - + let evaluations: AdditiveVec = self.workers_states.par_iter_mut().par_fold_reduce( + || AdditiveVec::new(max_degree + 1), + |mut acc, state| { + acc += state.run_round(); + acc + }, + |a, b| a + b, + ); transcript.append_field_element_exts(&evaluations.0); let challenge = transcript.sample_and_append_challenge(b"Internal round"); @@ -166,8 +165,8 @@ impl<'a, E: ExtensionField> IOPProverState<'a, E> { max_thread_id, num_variables, poly_meta, - polys, max_degree, + polys, transcript, ); exit_span!(span); @@ -234,8 +233,8 @@ impl<'a, E: ExtensionField> IOPProverState<'a, E> { max_thread_id: usize, num_variables: usize, poly_meta: Vec, - mut polys: Vec>, max_degree: usize, + mut polys: Vec>, transcript: &mut impl Transcript, ) -> (Vec>, Vec>) { let log2_max_thread_id = ceil_log2(max_thread_id); // do not support SIZE not power of 2 @@ -599,8 +598,8 @@ impl<'a, E: ExtensionField> IOPProverState<'a, E> { .poly .products .par_iter() - .fold_with( - AdditiveVec::new(self.poly.aux_info.max_degree + 1), + .par_fold_reduce( + || AdditiveVec::new(self.poly.aux_info.max_degree + 1), |mut uni_polys, MonomialTerms { terms }| { for Term { scalar, @@ -642,9 +641,9 @@ impl<'a, E: ExtensionField> IOPProverState<'a, E> { } uni_polys }, - ) - .reduce_with(|acc, item| acc + item) - .unwrap(); + |acc, item| acc + item, + ); + exit_span!(span); exit_span!(start); diff --git a/crates/sumcheck_macro/Cargo.toml b/crates/sumcheck_macro/Cargo.toml index 177ceda..1da511a 100644 --- a/crates/sumcheck_macro/Cargo.toml +++ b/crates/sumcheck_macro/Cargo.toml @@ -21,9 +21,9 @@ rand.workspace = true syn = { version = "2.0", features = ["full"] } [features] -nightly-features = ["p3/nightly-features"] +nightly-features = ["ff_ext/nightly-features"] [dev-dependencies] ff_ext.workspace = true -multilinear_extensions = { path = "../multilinear_extensions" } +multilinear_extensions.workspace = true sumcheck.workspace = true diff --git a/crates/sumcheck_macro/src/lib.rs b/crates/sumcheck_macro/src/lib.rs index 5d2a2f6..e3e66d1 100644 --- a/crates/sumcheck_macro/src/lib.rs +++ b/crates/sumcheck_macro/src/lib.rs @@ -237,7 +237,7 @@ pub fn sumcheck_code_gen(input: proc_macro::TokenStream) -> proc_macro::TokenStr }; let iter = if parallalize { - quote! {.into_par_iter().step_by(2).rev().with_min_len(64)} + quote! {.into_par_iter().step_by(2).rev()} } else { quote! {.step_by(2).rev()} }; diff --git a/crates/transcript/Cargo.toml b/crates/transcript/Cargo.toml index ad8efe9..48b31f7 100644 --- a/crates/transcript/Cargo.toml +++ b/crates/transcript/Cargo.toml @@ -16,8 +16,4 @@ p3.workspace = true poseidon.workspace = true [features] -nightly-features = [ - "p3/nightly-features", - "ff_ext/nightly-features", - "poseidon/nightly-features", -] +nightly-features = ["ff_ext/nightly-features"] diff --git a/crates/whir/Cargo.toml b/crates/whir/Cargo.toml index eacf319..d928c40 100644 --- a/crates/whir/Cargo.toml +++ b/crates/whir/Cargo.toml @@ -15,18 +15,18 @@ default-run = "main" [dependencies] bincode = "1.3.3" clap.workspace = true -ff_ext = { path = "../ff_ext" } -multilinear_extensions = { path = "../multilinear_extensions" } +ff_ext.workspace = true +multilinear_extensions.workspace = true p3.workspace = true rand = "0.8" rand_chacha = "0.3" rayon = { workspace = true, optional = true } serde = { version = "1.0", features = ["derive"] } -sumcheck = { path = "../sumcheck" } +sumcheck.workspace = true tracing.workspace = true -transcript = { path = "../transcript" } +transcript.workspace = true transpose = "0.2.3" -witness = { path = "../witness" } +witness.workspace = true derive_more = { version = "1.0.0", features = ["debug"] } itertools = "0.14.0" @@ -34,14 +34,7 @@ itertools = "0.14.0" [features] asm = [] default = ["parallel"] -nightly-features = [ - "p3/nightly-features", - "ff_ext/nightly-features", - "multilinear_extensions/nightly-features", - "sumcheck/nightly-features", - "transcript/nightly-features", - "witness/nightly-features", -] -parallel = ["dep:rayon"] +nightly-features = ["ff_ext/nightly-features"] +parallel = ["sumcheck/parallel", "dep:rayon"] print-trace = ["tracing/log"] rayon = ["dep:rayon"] diff --git a/crates/whir/src/crypto/mod.rs b/crates/whir/src/crypto/mod.rs index c816640..daa6feb 100644 --- a/crates/whir/src/crypto/mod.rs +++ b/crates/whir/src/crypto/mod.rs @@ -5,8 +5,8 @@ use p3::{ Dimensions, dense::{DenseMatrix, RowMajorMatrix}, }, + maybe_rayon::prelude::*, }; -use rayon::iter::{IndexedParallelIterator, IntoParallelRefIterator, ParallelIterator}; use serde::{Deserialize, Serialize, de::DeserializeOwned}; use transcript::Transcript; diff --git a/crates/whir/src/ntt/mod.rs b/crates/whir/src/ntt/mod.rs index 9d2959a..a927223 100644 --- a/crates/whir/src/ntt/mod.rs +++ b/crates/whir/src/ntt/mod.rs @@ -13,9 +13,8 @@ use p3::{ dft::{Radix2DitParallel, TwoAdicSubgroupDft}, field::TwoAdicField, matrix::Matrix, + maybe_rayon::prelude::*, }; -#[cfg(feature = "parallel")] -use rayon::prelude::*; use tracing::instrument; use witness::{InstancePaddingStrategy, RowMajorMatrix}; diff --git a/crates/whir/src/ntt/ntt_impl.rs b/crates/whir/src/ntt/ntt_impl.rs index 48a4e86..2f0d2c5 100644 --- a/crates/whir/src/ntt/ntt_impl.rs +++ b/crates/whir/src/ntt/ntt_impl.rs @@ -14,16 +14,15 @@ use p3::{ Matrix, dense::{DenseMatrix, RowMajorMatrix}, }, + maybe_rayon::prelude::*, }; use std::{ any::{Any, TypeId}, + cmp::max, collections::HashMap, sync::{Arc, LazyLock, Mutex, RwLock, RwLockReadGuard}, }; -#[cfg(feature = "parallel")] -use {rayon::prelude::*, std::cmp::max}; - /// Global cache for NTT engines, indexed by field. // TODO: Skip `LazyLock` when `HashMap::with_hasher` becomes const. // see https://github.com/rust-lang/rust/issues/102575 diff --git a/crates/whir/src/ntt/transpose.rs b/crates/whir/src/ntt/transpose.rs index cc7fb48..04bbb0d 100644 --- a/crates/whir/src/ntt/transpose.rs +++ b/crates/whir/src/ntt/transpose.rs @@ -3,10 +3,10 @@ use crate::ntt::matrix_skip::MatrixMutSkip; use super::{super::utils::is_power_of_two, MatrixMut, utils::workload_size}; use std::mem::swap; -use p3::matrix::{Matrix, dense::RowMajorMatrix}; -use rayon::iter::{IndexedParallelIterator, IntoParallelRefMutIterator, ParallelIterator}; -#[cfg(feature = "parallel")] -use rayon::join; +use p3::{ + matrix::{Matrix, dense::RowMajorMatrix}, + maybe_rayon::prelude::*, +}; use sumcheck::macros::{entered_span, exit_span}; // NOTE: The assumption that rows and cols are a power of two are actually only relevant for the square matrix case. diff --git a/crates/whir/src/ntt/wavelet.rs b/crates/whir/src/ntt/wavelet.rs index d5a7b84..edbe03f 100644 --- a/crates/whir/src/ntt/wavelet.rs +++ b/crates/whir/src/ntt/wavelet.rs @@ -2,8 +2,7 @@ use super::{transpose, utils::workload_size}; use p3::field::Field; use std::cmp::max; -#[cfg(feature = "parallel")] -use rayon::prelude::*; +use p3::maybe_rayon::prelude::*; /// Fast Wavelet Transform. /// diff --git a/crates/whir/src/sumcheck/prover_batched.rs b/crates/whir/src/sumcheck/prover_batched.rs index ef3c202..8d27100 100644 --- a/crates/whir/src/sumcheck/prover_batched.rs +++ b/crates/whir/src/sumcheck/prover_batched.rs @@ -1,9 +1,7 @@ use super::proof::SumcheckPolynomial; use crate::sumcheck::prover_single::SumcheckSingle; use ff_ext::ExtensionField; -use p3::{field::Field, util::log2_strict_usize}; -#[cfg(feature = "parallel")] -use rayon::{join, prelude::*}; +use p3::{field::Field, maybe_rayon::prelude::*, util::log2_strict_usize}; pub struct SumcheckBatched { // The evaluation on each p and eq diff --git a/crates/whir/src/sumcheck/prover_single.rs b/crates/whir/src/sumcheck/prover_single.rs index 73a35f8..e2f69a4 100644 --- a/crates/whir/src/sumcheck/prover_single.rs +++ b/crates/whir/src/sumcheck/prover_single.rs @@ -1,9 +1,7 @@ use super::proof::SumcheckPolynomial; use ff_ext::ExtensionField; -use p3::util::log2_strict_usize; -#[cfg(feature = "parallel")] -use rayon::{join, prelude::*}; +use p3::{maybe_rayon::prelude::*, util::log2_strict_usize}; pub struct SumcheckSingle { // The evaluation of p diff --git a/crates/whir/src/utils.rs b/crates/whir/src/utils.rs index c176851..738a39e 100644 --- a/crates/whir/src/utils.rs +++ b/crates/whir/src/utils.rs @@ -4,10 +4,7 @@ use multilinear_extensions::mle::FieldType; use p3::{ field::Field, matrix::{Matrix, dense::RowMajorMatrix}, -}; -use rayon::{ - iter::ParallelIterator, - slice::{ParallelSlice, ParallelSliceMut}, + maybe_rayon::prelude::*, }; use std::collections::BTreeSet; use sumcheck::macros::{entered_span, exit_span}; diff --git a/crates/whir/src/whir/batch/committer.rs b/crates/whir/src/whir/batch/committer.rs index 2b69e21..233d462 100644 --- a/crates/whir/src/whir/batch/committer.rs +++ b/crates/whir/src/whir/batch/committer.rs @@ -13,14 +13,12 @@ use derive_more::Debug; use ff_ext::ExtensionField; use p3::{ matrix::{Matrix, dense::RowMajorMatrix}, + maybe_rayon::prelude::*, util::log2_strict_usize, }; use sumcheck::macros::{entered_span, exit_span}; use transcript::{BasicTranscript, Transcript}; -#[cfg(feature = "parallel")] -use rayon::prelude::*; - #[derive(Debug)] pub struct Witnesses { pub(crate) polys: Vec>, diff --git a/crates/whir/src/whir/batch/prover.rs b/crates/whir/src/whir/batch/prover.rs index 15dea4e..baa641a 100644 --- a/crates/whir/src/whir/batch/prover.rs +++ b/crates/whir/src/whir/batch/prover.rs @@ -21,13 +21,11 @@ use crate::{ use ff_ext::{ExtensionField, PoseidonField}; use itertools::zip_eq; use multilinear_extensions::mle::{FieldType, MultilinearExtension}; -use p3::{commit::Mmcs, matrix::dense::RowMajorMatrix}; +use p3::{commit::Mmcs, matrix::dense::RowMajorMatrix, maybe_rayon::prelude::*}; use sumcheck::macros::{entered_span, exit_span}; use transcript::Transcript; use crate::whir::fs_utils::get_challenge_stir_queries; -#[cfg(feature = "parallel")] -use rayon::prelude::*; struct RoundStateBatch<'a, E: ExtensionField> { round_state: RoundState<'a, E>, diff --git a/crates/whir/src/whir/batch/verifier.rs b/crates/whir/src/whir/batch/verifier.rs index 3494184..c113c89 100644 --- a/crates/whir/src/whir/batch/verifier.rs +++ b/crates/whir/src/whir/batch/verifier.rs @@ -17,8 +17,7 @@ use crate::{ use ff_ext::{ExtensionField, PoseidonField}; use itertools::zip_eq; use multilinear_extensions::{mle::MultilinearExtension, virtual_poly::eq_eval}; -use p3::{commit::Mmcs, util::log2_strict_usize}; -use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; +use p3::{commit::Mmcs, maybe_rayon::prelude::*, util::log2_strict_usize}; use sumcheck::macros::{entered_span, exit_span}; use transcript::Transcript; diff --git a/crates/whir/src/whir/fold.rs b/crates/whir/src/whir/fold.rs index f193178..a2e13bc 100644 --- a/crates/whir/src/whir/fold.rs +++ b/crates/whir/src/whir/fold.rs @@ -6,9 +6,8 @@ use crate::{ use p3::{ field::{Field, TwoAdicField}, matrix::Matrix, + maybe_rayon::prelude::*, }; -#[cfg(feature = "parallel")] -use rayon::prelude::*; /// Given the evaluation of f on the coset specified by coset_offset * /// Compute the fold on that point diff --git a/crates/whir/src/whir/prover.rs b/crates/whir/src/whir/prover.rs index 1a90df7..fe41305 100644 --- a/crates/whir/src/whir/prover.rs +++ b/crates/whir/src/whir/prover.rs @@ -14,8 +14,7 @@ use crate::{ }; use ff_ext::ExtensionField; use multilinear_extensions::mle::{FieldType, MultilinearExtension}; -use p3::matrix::dense::RowMajorMatrix; -use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; +use p3::{matrix::dense::RowMajorMatrix, maybe_rayon::prelude::*}; use sumcheck::macros::{entered_span, exit_span}; use transcript::Transcript; diff --git a/crates/whir/src/whir/verifier.rs b/crates/whir/src/whir/verifier.rs index 9c3ce8c..3983843 100644 --- a/crates/whir/src/whir/verifier.rs +++ b/crates/whir/src/whir/verifier.rs @@ -7,8 +7,8 @@ use multilinear_extensions::{mle::MultilinearExtension, virtual_poly::eq_eval}; use p3::{ commit::Mmcs, field::{Field, FieldAlgebra}, + maybe_rayon::prelude::*, }; -use rayon::iter::{IndexedParallelIterator, IntoParallelRefIterator, ParallelIterator}; use serde::{Deserialize, Serialize, de::DeserializeOwned}; use std::iter; use sumcheck::macros::{entered_span, exit_span}; diff --git a/crates/witness/Cargo.toml b/crates/witness/Cargo.toml index 6fa5f68..8c2e725 100644 --- a/crates/witness/Cargo.toml +++ b/crates/witness/Cargo.toml @@ -11,15 +11,11 @@ version.workspace = true [dependencies] ff_ext.workspace = true -multilinear_extensions = { version = "0", path = "../multilinear_extensions" } +multilinear_extensions.workspace = true p3.workspace = true rand.workspace = true rayon.workspace = true tracing.workspace = true [features] -nightly-features = [ - "p3/nightly-features", - "ff_ext/nightly-features", - "multilinear_extensions/nightly-features", -] +nightly-features = ["ff_ext/nightly-features"] diff --git a/crates/witness/src/lib.rs b/crates/witness/src/lib.rs index f7a40d3..f7d6471 100644 --- a/crates/witness/src/lib.rs +++ b/crates/witness/src/lib.rs @@ -6,7 +6,7 @@ use p3::{ use rand::{Rng, distributions::Standard, prelude::Distribution}; use rayon::{ iter::{IndexedParallelIterator, IntoParallelIterator, ParallelExtend, ParallelIterator}, - slice::ParallelSliceMut, + prelude::ParallelSliceMut, }; use std::{ ops::{Deref, DerefMut, Index},