remove 1 NTT from galois_auto AND add NTT benches

This commit is contained in:
Janmajaya Mall
2024-06-05 10:28:10 +05:30
parent 0583c9ba40
commit 15464c1ecc
8 changed files with 590 additions and 22 deletions

36
benches/ntt.rs Normal file
View File

@@ -0,0 +1,36 @@
use bin_rs::{Ntt, NttBackendU64, NttInit};
use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion};
use itertools::Itertools;
use rand::{thread_rng, Rng};
use rand_distr::Uniform;
fn benchmark(c: &mut Criterion) {
let mut group = c.benchmark_group("ntt");
// 55
for prime in [36028797017456641] {
for ring_size in [1 << 11, 1 << 15] {
let ntt = NttBackendU64::new(&prime, ring_size);
let mut rng = thread_rng();
let a = rng
.sample_iter(Uniform::new(0, prime))
.take(ring_size)
.collect_vec();
group.bench_function(
BenchmarkId::new("forward", format!("q={prime}/{ring_size}")),
|b| {
b.iter_batched_ref(
|| a.clone(),
|mut a| black_box(ntt.forward(&mut a)),
criterion::BatchSize::PerIteration,
)
},
);
}
}
group.finish();
}
criterion_group!(ntt, benchmark);
criterion_main!(ntt);