Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,22 +41,22 @@ serde = { version = "1.0", default-features = false, features = [
"alloc",
] }
rayon = { version = "1.0", optional = true }
p3-field = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-baby-bear = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-koala-bear = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-merkle-tree = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-symmetric = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-matrix = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-commit = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-goldilocks = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-dft = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-util = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-maybe-rayon = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139", features = [
] }
p3-interpolation = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-challenger = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-multilinear-util = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-keccak = { git = "https://github.com/Plonky3/Plonky3.git", rev = "b0fa5139" }
p3-field = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-baby-bear = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-koala-bear = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-merkle-tree = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-symmetric = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-matrix = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-commit = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-goldilocks = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-dft = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-util = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-maybe-rayon = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-interpolation = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-challenger = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-multilinear-util = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-keccak = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }
p3-whir = { git = "https://github.com/Plonky3/Plonky3", branch = "main" }

hashbrown = "0.16"
itertools = { version = "0.14.0", default-features = false, features = [
Expand Down
20 changes: 8 additions & 12 deletions benches/eval_multilinear.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main};
use p3_baby_bear::BabyBear;
use p3_field::{ExtensionField, Field, extension::BinomialExtensionField};
use p3_multilinear_util::{evals::EvaluationsList, multilinear::MultilinearPoint};
use p3_multilinear_util::{point::Point, poly::Poly};
use rand::{
RngExt, SeedableRng,
distr::{Distribution, StandardUniform},
Expand All @@ -12,17 +12,17 @@ type F = BabyBear;
type EF = BinomialExtensionField<F, 4>;

// Generate random evaluation data and a random point.
fn setup<F, EF>(n_vars: usize) -> (EvaluationsList<F>, MultilinearPoint<EF>)
fn setup<F, EF>(n_vars: usize) -> (Poly<F>, Point<EF>)
where
F: Field,
EF: ExtensionField<F>,
StandardUniform: Distribution<F> + Distribution<EF>,
{
let mut rng = SmallRng::seed_from_u64(1);
let evals: Vec<F> = (0..1 << n_vars).map(|_| rng.random()).collect();
let evals = EvaluationsList::new(evals);
let evals = Poly::new(evals);
let point_vec: Vec<EF> = (0..n_vars).map(|_| rng.random()).collect();
let point = MultilinearPoint::new(point_vec);
let point = Point::new(point_vec);
(evals, point)
}

Expand All @@ -37,10 +37,8 @@ fn bench_eval_multilinear_base(c: &mut Criterion) {

let bench_id = BenchmarkId::new("packed-split", num_vars);
group.bench_with_input(bench_id, &num_vars, |b, &n_vars| {
let routine = |(evals, point): (EvaluationsList<F>, MultilinearPoint<EF>)| {
let _ = std::hint::black_box(
evals.evaluate_hypercube_base(std::hint::black_box(&point)),
);
let routine = |(evals, point): (Poly<F>, Point<EF>)| {
let _ = std::hint::black_box(evals.eval_base(std::hint::black_box(&point)));
};
b.iter_batched(
|| setup::<F, EF>(n_vars),
Expand All @@ -63,10 +61,8 @@ fn bench_eval_multilinear_ext(c: &mut Criterion) {

let bench_id = BenchmarkId::new("packed-split", num_vars);
group.bench_with_input(bench_id, &num_vars, |b, &n_vars| {
let routine = |(evals, point): (EvaluationsList<EF>, MultilinearPoint<EF>)| {
let _ = std::hint::black_box(
evals.evaluate_hypercube_ext::<F>(std::hint::black_box(&point)),
);
let routine = |(evals, point): (Poly<EF>, Point<EF>)| {
let _ = std::hint::black_box(evals.eval_ext::<F>(std::hint::black_box(&point)));
};
b.iter_batched(
|| setup::<EF, EF>(n_vars),
Expand Down
10 changes: 5 additions & 5 deletions benches/evaluate.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
use criterion::{BatchSize, BenchmarkId, Criterion, criterion_group, criterion_main};
use p3_field::extension::BinomialExtensionField;
use p3_koala_bear::KoalaBear;
use p3_multilinear_util::{evals::EvaluationsList, multilinear::MultilinearPoint};
use p3_multilinear_util::{point::Point, poly::Poly};
use rand::{RngExt, SeedableRng, rngs::SmallRng};

type F = KoalaBear;
type EF4 = BinomialExtensionField<F, 4>;

fn generate_test_case(num_variables: usize) -> (EvaluationsList<F>, MultilinearPoint<EF4>) {
fn generate_test_case(num_variables: usize) -> (Poly<F>, Point<EF4>) {
let mut rng = SmallRng::seed_from_u64(1);
let num_coeffs = 1 << num_variables;
let coeffs = (0..num_coeffs).map(|_| rng.random()).collect();
let point = MultilinearPoint::new((0..num_variables).map(|_| rng.random()).collect());
(EvaluationsList::new(coeffs), point)
let point = Point::new((0..num_variables).map(|_| rng.random()).collect());
(Poly::new(coeffs), point)
}

fn benchmark_evaluate(c: &mut Criterion) {
Expand All @@ -28,7 +28,7 @@ fn benchmark_evaluate(c: &mut Criterion) {
b.iter_batched(
|| (poly.clone(), point.clone()),
|(poly, point)| {
let _ = poly.evaluate_hypercube_base(&point);
let _ = poly.eval_base(&point);
},
BatchSize::SmallInput,
);
Expand Down
10 changes: 5 additions & 5 deletions benches/sumcheck.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use p3_baby_bear::{BabyBear, Poseidon2BabyBear};
use p3_challenger::{DuplexChallenger, FieldChallenger};
use p3_field::{Field, extension::BinomialExtensionField};
use p3_merkle_tree::MerkleTreeMmcs;
use p3_multilinear_util::{evals::EvaluationsList, multilinear::MultilinearPoint};
use p3_multilinear_util::{point::Point, poly::Poly};
use p3_symmetric::{PaddingFreeSponge, TruncatedPermutation};
use rand::{RngExt, SeedableRng, rngs::SmallRng};
use whir_p3::{
Expand Down Expand Up @@ -48,10 +48,10 @@ fn setup_challenger() -> MyChallenger {
}

/// Helper to generate a random multilinear polynomial.
fn generate_poly(num_vars: usize) -> EvaluationsList<F> {
fn generate_poly(num_vars: usize) -> Poly<F> {
let mut rng = SmallRng::seed_from_u64(1);
let evals = (0..1 << num_vars).map(|_| rng.random()).collect();
EvaluationsList::new(evals)
Poly::new(evals)
}

/// Main benchmark function to test the sumcheck prover.
Expand Down Expand Up @@ -85,7 +85,7 @@ fn bench_sumcheck_prover(c: &mut Criterion) {
SumcheckStrategy::Classic,
);
for _ in 0..3 {
let _ = initial_statement.evaluate(&MultilinearPoint::expand_from_univariate(
let _ = initial_statement.evaluate(&Point::expand_from_univariate(
challenger.sample_algebra_element(),
*num_vars,
));
Expand Down Expand Up @@ -133,7 +133,7 @@ fn bench_sumcheck_prover(c: &mut Criterion) {
SumcheckStrategy::Svo,
);
for _ in 0..3 {
let _ = initial_statement.evaluate(&MultilinearPoint::expand_from_univariate(
let _ = initial_statement.evaluate(&Point::expand_from_univariate(
challenger.sample_algebra_element(),
*num_vars,
));
Expand Down
6 changes: 3 additions & 3 deletions benches/whir.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use p3_dft::Radix2DFTSmallBatch;
use p3_field::{Field, extension::BinomialExtensionField};
use p3_koala_bear::{KoalaBear, Poseidon2KoalaBear};
use p3_merkle_tree::MerkleTreeMmcs;
use p3_multilinear_util::{evals::EvaluationsList, multilinear::MultilinearPoint};
use p3_multilinear_util::{point::Point, poly::Poly};
use p3_symmetric::{PaddingFreeSponge, TruncatedPermutation};
use rand::{RngExt, SeedableRng, rngs::SmallRng};
use whir_p3::{
Expand Down Expand Up @@ -95,11 +95,11 @@ fn prepare_inputs() -> (
let mut rng = SmallRng::seed_from_u64(0);

// Sample a random multilinear polynomial over `F`, represented by its evaluations.
let polynomial = EvaluationsList::<F>::new((0..num_coeffs).map(|_| rng.random()).collect());
let polynomial = Poly::<F>::new((0..num_coeffs).map(|_| rng.random()).collect());

// Build a simple initial statement with one evaluation constraint.
let mut initial_statement = params.initial_statement(polynomial, SumcheckStrategy::Svo);
let _ = initial_statement.evaluate(&MultilinearPoint::rand(&mut rng, num_variables));
let _ = initial_statement.evaluate(&Point::rand(&mut rng, num_variables));

// Fiat-Shamir setup

Expand Down
6 changes: 3 additions & 3 deletions src/bin/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use p3_dft::Radix2DFTSmallBatch;
use p3_field::{Field, extension::BinomialExtensionField};
use p3_koala_bear::{KoalaBear, Poseidon2KoalaBear};
use p3_merkle_tree::MerkleTreeMmcs;
use p3_multilinear_util::{evals::EvaluationsList, multilinear::MultilinearPoint};
use p3_multilinear_util::{point::Point, poly::Poly};
use p3_symmetric::{PaddingFreeSponge, TruncatedPermutation};
use rand::{
RngExt, SeedableRng,
Expand Down Expand Up @@ -125,13 +125,13 @@ fn main() {
let params = WhirConfig::<EF, F, MyMmcs, MyChallenger>::new(num_variables, whir_params.clone());

let mut rng = StdRng::seed_from_u64(0);
let polynomial = EvaluationsList::<F>::new((0..num_coeffs).map(|_| rng.random()).collect());
let polynomial = Poly::<F>::new((0..num_coeffs).map(|_| rng.random()).collect());
let mut initial_statement = params.initial_statement(polynomial, SumcheckStrategy::default());

// Sample `num_points` random multilinear points in the Boolean hypercube
// And add constraints for each sampled point (equality constraints)
(0..num_evaluations).for_each(|_| {
let _ = initial_statement.evaluate(&MultilinearPoint::rand(&mut rng, num_variables));
let _ = initial_statement.evaluate(&Point::rand(&mut rng, num_variables));
});

let verifier_statement = initial_statement.normalize();
Expand Down
Loading