mirror of
https://github.com/arnaucube/poulpy.git
synced 2026-02-10 13:16:44 +01:00
* Add bivariate-convolution * Add pair-wise convolution + tests + benches * Add take_cnv_pvec_[left/right] to Scratch & updated CHANGELOG.md * cross-base2k normalization with positive offset * clippy & fix CI doctest avx compile error * more streamlined bounds derivation for normalization * Working cross-base2k normalization with pos/neg offset * Update normalization API & tests * Add glwe tensoring test * Add relinearization + preliminary test * Fix GGLWEToGGSW key infos * Add (X,Y) convolution by const (1, Y) poly * Faster normalization test + add bench for cnv_by_const * Update changelog
117 lines
3.3 KiB
Rust
117 lines
3.3 KiB
Rust
use criterion::{Criterion, criterion_group, criterion_main};
|
|
|
|
#[cfg(not(all(
|
|
feature = "enable-avx",
|
|
target_arch = "x86_64",
|
|
target_feature = "avx2",
|
|
target_feature = "fma"
|
|
)))]
|
|
fn bench_cnv_prepare_left_cpu_avx_fft64(_c: &mut Criterion) {
|
|
eprintln!("Skipping: AVX IFft benchmark requires x86_64 + AVX2 + FMA");
|
|
}
|
|
|
|
#[cfg(all(
|
|
feature = "enable-avx",
|
|
target_arch = "x86_64",
|
|
target_feature = "avx2",
|
|
target_feature = "fma"
|
|
))]
|
|
fn bench_cnv_prepare_left_cpu_avx_fft64(c: &mut Criterion) {
|
|
use poulpy_cpu_avx::FFT64Avx;
|
|
poulpy_hal::bench_suite::convolution::bench_cnv_prepare_left::<FFT64Avx>(c, "cpu_avx::fft64");
|
|
}
|
|
|
|
#[cfg(not(all(
|
|
feature = "enable-avx",
|
|
target_arch = "x86_64",
|
|
target_feature = "avx2",
|
|
target_feature = "fma"
|
|
)))]
|
|
fn bench_cnv_prepare_right_cpu_avx_fft64(_c: &mut Criterion) {
|
|
eprintln!("Skipping: AVX IFft benchmark requires x86_64 + AVX2 + FMA");
|
|
}
|
|
|
|
#[cfg(all(
|
|
feature = "enable-avx",
|
|
target_arch = "x86_64",
|
|
target_feature = "avx2",
|
|
target_feature = "fma"
|
|
))]
|
|
fn bench_cnv_prepare_right_cpu_avx_fft64(c: &mut Criterion) {
|
|
use poulpy_cpu_avx::FFT64Avx;
|
|
poulpy_hal::bench_suite::convolution::bench_cnv_prepare_right::<FFT64Avx>(c, "cpu_avx::fft64");
|
|
}
|
|
|
|
#[cfg(not(all(
|
|
feature = "enable-avx",
|
|
target_arch = "x86_64",
|
|
target_feature = "avx2",
|
|
target_feature = "fma"
|
|
)))]
|
|
fn bench_cnv_apply_dft_cpu_avx_fft64(_c: &mut Criterion) {
|
|
eprintln!("Skipping: AVX IFft benchmark requires x86_64 + AVX2 + FMA");
|
|
}
|
|
|
|
#[cfg(all(
|
|
feature = "enable-avx",
|
|
target_arch = "x86_64",
|
|
target_feature = "avx2",
|
|
target_feature = "fma"
|
|
))]
|
|
fn bench_cnv_apply_dft_cpu_avx_fft64(c: &mut Criterion) {
|
|
use poulpy_cpu_avx::FFT64Avx;
|
|
poulpy_hal::bench_suite::convolution::bench_cnv_apply_dft::<FFT64Avx>(c, "cpu_avx::fft64");
|
|
}
|
|
|
|
#[cfg(not(all(
|
|
feature = "enable-avx",
|
|
target_arch = "x86_64",
|
|
target_feature = "avx2",
|
|
target_feature = "fma"
|
|
)))]
|
|
fn bench_cnv_pairwise_apply_dft_cpu_avx_fft64(_c: &mut Criterion) {
|
|
eprintln!("Skipping: AVX IFft benchmark requires x86_64 + AVX2 + FMA");
|
|
}
|
|
|
|
#[cfg(all(
|
|
feature = "enable-avx",
|
|
target_arch = "x86_64",
|
|
target_feature = "avx2",
|
|
target_feature = "fma"
|
|
))]
|
|
fn bench_cnv_pairwise_apply_dft_cpu_avx_fft64(c: &mut Criterion) {
|
|
use poulpy_cpu_avx::FFT64Avx;
|
|
poulpy_hal::bench_suite::convolution::bench_cnv_pairwise_apply_dft::<FFT64Avx>(c, "cpu_avx::fft64");
|
|
}
|
|
|
|
#[cfg(not(all(
|
|
feature = "enable-avx",
|
|
target_arch = "x86_64",
|
|
target_feature = "avx2",
|
|
target_feature = "fma"
|
|
)))]
|
|
fn bench_cnv_by_const_apply_cpu_avx_fft64(_c: &mut Criterion) {
|
|
eprintln!("Skipping: AVX IFft benchmark requires x86_64 + AVX2 + FMA");
|
|
}
|
|
|
|
#[cfg(all(
|
|
feature = "enable-avx",
|
|
target_arch = "x86_64",
|
|
target_feature = "avx2",
|
|
target_feature = "fma"
|
|
))]
|
|
fn bench_cnv_by_const_apply_cpu_avx_fft64(c: &mut Criterion) {
|
|
use poulpy_cpu_avx::FFT64Avx;
|
|
poulpy_hal::bench_suite::convolution::bench_cnv_by_const_apply::<FFT64Avx>(c, "cpu_avx::fft64");
|
|
}
|
|
|
|
criterion_group!(
|
|
benches,
|
|
bench_cnv_prepare_left_cpu_avx_fft64,
|
|
bench_cnv_prepare_right_cpu_avx_fft64,
|
|
bench_cnv_apply_dft_cpu_avx_fft64,
|
|
bench_cnv_pairwise_apply_dft_cpu_avx_fft64,
|
|
bench_cnv_by_const_apply_cpu_avx_fft64,
|
|
);
|
|
criterion_main!(benches);
|