Skip to content

Commit

Permalink
Centralise bench parameters (#135)
Browse files Browse the repository at this point in the history
  • Loading branch information
matthew-a-klein authored Dec 5, 2024
1 parent 181a6f1 commit 16e7daf
Show file tree
Hide file tree
Showing 4 changed files with 201 additions and 387 deletions.
170 changes: 10 additions & 160 deletions latticefold/benches/decomposition.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ use cyclotomic_rings::{
},
};
use std::{fmt::Debug, time::Duration};
mod macros;
mod utils;
use ark_std::UniformRand;
use latticefold::{
Expand Down Expand Up @@ -222,7 +223,7 @@ macro_rules! define_params {
};
}

macro_rules! run_single_starkprime_scalar_benchmark {
macro_rules! run_single_starkprime_benchmark {
($crit:expr, $io:expr, $cw:expr, $w:expr, $b:expr, $l:expr, $b_small:expr, $k:expr) => {
define_params!($w, $b, $l, $b_small, $k);
paste::paste! {
Expand All @@ -241,7 +242,7 @@ macro_rules! run_single_starkprime_non_scalar_benchmark {
}

#[macro_export]
macro_rules! run_single_goldilocks_scalar_benchmark {
macro_rules! run_single_goldilocks_benchmark {
($crit:expr, $io:expr, $cw:expr, $w:expr, $b:expr, $l:expr, $b_small:expr, $k:expr) => {
define_params!($w, $b, $l, $b_small, $k);
paste::paste! {
Expand Down Expand Up @@ -283,192 +284,41 @@ macro_rules! run_single_frog_benchmark {
}

fn benchmarks_main(c: &mut Criterion) {
// // Babybear
// {
// let plot_config = PlotConfiguration::default().summary_scale(AxisScale::Logarithmic);
// let mut group = c.benchmark_group("Decomposition BabyBear");
// group.plot_config(plot_config.clone());

// // TODO: Update configurations
// run_single_babybear_benchmark!(1, &mut group, 6, 1024, 10, 2);
// }

// Goldilocks
{
let plot_config = PlotConfiguration::default().summary_scale(AxisScale::Logarithmic);
let mut group = c.benchmark_group("Decomposition Godlilocks");
group.plot_config(plot_config.clone());

// Parameters Criterion, X_LEN, C, W, B, L, B_small, K
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 6, 512, 120, 10, 2, 7);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 7, 512, 256, 8, 2, 8);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 7, 512, 256, 8, 4, 4);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 8, 512, 512, 7, 2, 9);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 8, 1024, 512, 7, 2, 9);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 8, 2048, 256, 8, 2, 8);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 9, 1024, 1024, 7, 2, 10);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 9, 2048, 512, 7, 2, 9);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 10, 512, 2048, 6, 2, 11);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 10, 1024, 2048, 6, 2, 11);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 11, 1024, 4096, 6, 2, 12);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 11, 2048, 2048, 6, 2, 12);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 12, 1024, 8192, 6, 2, 13);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 13, 1024, 16384, 5, 2, 14);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 13, 2048, 8192, 5, 2, 13);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 14, 1024, 32768, 5, 2, 15);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 14, 2048, 16384, 5, 2, 14);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 15, 2048, 32768, 4, 2, 15);
run_single_goldilocks_scalar_benchmark!(&mut group, 1, 16, 2048, 65536, 4, 2, 16);
#[allow(clippy::identity_op)]
{
run_goldilocks_benchmarks!(group);
}
}
// Goldilocks non scalar
{
let plot_config = PlotConfiguration::default().summary_scale(AxisScale::Logarithmic);
let mut group = c.benchmark_group("Linearization Goldilocks non scalar");
group.plot_config(plot_config.clone());

// Parameters Criterion, X_LEN, C, W, B, L, B_small, K

run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 6, 512, 128, 9, 2, 7);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 7, 512, 256, 8, 2, 8);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 8, 512, 512, 7, 2, 9);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 8, 1024, 512, 7, 2, 9);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 8, 2048, 256, 8, 2, 8);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 9, 1024, 1024, 7, 2, 10);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 9, 2048, 512, 7, 2, 9);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 10, 512, 2048, 6, 2, 11);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 10, 1024, 2048, 6, 2, 11);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 11, 1024, 4096, 6, 2, 12);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 11, 2048, 2048, 6, 2, 12);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 12, 1024, 8192, 6, 2, 13);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 13, 1024, 16384, 5, 2, 14);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 13, 2048, 8192, 5, 2, 13);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 14, 1024, 32768, 5, 2, 15);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 14, 2048, 16384, 5, 2, 14);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 15, 2048, 32768, 4, 2, 15);
run_single_goldilocks_non_scalar_benchmark!(&mut group, 1, 16, 2048, 65536, 4, 2, 16);
run_goldilocks_non_scalar_benchmarks!(group);
}
// StarkPrime
{
let plot_config = PlotConfiguration::default().summary_scale(AxisScale::Logarithmic);
let mut group = c.benchmark_group("Decomposition StarkPrime");
group.plot_config(plot_config.clone());

// Parameters Criterion, X_LEN, C, W, B, L, B_small, K
#[allow(clippy::identity_op)]
{
run_single_starkprime_scalar_benchmark!(
&mut group,
1,
15,
1024,
3052596316u128,
1,
2,
30
);
run_single_starkprime_scalar_benchmark!(
&mut group,
1,
16,
1024,
4294967296u128,
1,
2,
32
);
run_single_starkprime_scalar_benchmark!(
&mut group,
1,
17,
2048,
8589934592u128,
1,
2,
33
);
run_single_starkprime_scalar_benchmark!(
&mut group,
1,
18,
2048,
20833367754u128,
1,
2,
34
);
run_single_starkprime_scalar_benchmark!(
&mut group,
1,
19,
2048,
34359738368u128,
1,
2,
35
);
run_starkprime_benchmarks!(group);
}
}

// StarkPrime non scalar
{
let plot_config = PlotConfiguration::default().summary_scale(AxisScale::Logarithmic);
let mut group = c.benchmark_group("Decomposition StarkPrime non scalar");
group.plot_config(plot_config.clone());

// Parameters Criterion, X_LEN, C, W, B, L, B_small, K
#[allow(clippy::identity_op)]
{
run_single_starkprime_non_scalar_benchmark!(
&mut group,
1,
15,
1024,
3052596316u128,
1,
2,
30
);
run_single_starkprime_non_scalar_benchmark!(
&mut group,
1,
16,
1024,
4294967296u128,
1,
2,
32
);
run_single_starkprime_non_scalar_benchmark!(
&mut group,
1,
17,
2048,
8589934592u128,
1,
2,
33
);
run_single_starkprime_non_scalar_benchmark!(
&mut group,
1,
18,
2048,
20833367754u128,
1,
2,
34
);
run_single_starkprime_non_scalar_benchmark!(
&mut group,
1,
19,
2048,
34359738368u128,
1,
2,
35
);
}
run_starkprime_non_scalar_benchmarks!(group);
}
}

Expand Down
Loading

0 comments on commit 16e7daf

Please sign in to comment.