arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/poulpy-cpu-avx/src/tests.rs
poulpy-cpu-avx/src/tests.rsRaw
  1use poulpy_hal::{
  2    api::ModuleNew,
  3    layouts::Module,
  4    test_suite::convolution::{test_convolution, test_convolution_by_const, test_convolution_pairwise},
  5};
  6
  7use crate::FFT64Avx;
  8
  9#[cfg(test)]
 10mod poulpy_cpu_avx {
 11    use poulpy_hal::{backend_test_suite, cross_backend_test_suite};
 12
 13    cross_backend_test_suite! {
 14        mod vec_znx,
 15        backend_ref =  poulpy_cpu_ref::FFT64Ref,
 16        backend_test = crate::FFT64Avx,
 17        size = 1<<8,
 18        base2k = 12,
 19        tests = {
 20            test_vec_znx_add => poulpy_hal::test_suite::vec_znx::test_vec_znx_add,
 21            test_vec_znx_add_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_add_inplace,
 22            test_vec_znx_add_scalar => poulpy_hal::test_suite::vec_znx::test_vec_znx_add_scalar,
 23            test_vec_znx_add_scalar_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_add_scalar_inplace,
 24            test_vec_znx_sub => poulpy_hal::test_suite::vec_znx::test_vec_znx_sub,
 25            test_vec_znx_sub_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_sub_inplace,
 26            test_vec_znx_sub_negate_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_sub_negate_inplace,
 27            test_vec_znx_sub_scalar => poulpy_hal::test_suite::vec_znx::test_vec_znx_sub_scalar,
 28            test_vec_znx_sub_scalar_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_sub_scalar_inplace,
 29            test_vec_znx_rsh => poulpy_hal::test_suite::vec_znx::test_vec_znx_rsh,
 30            test_vec_znx_rsh_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_rsh_inplace,
 31            test_vec_znx_lsh => poulpy_hal::test_suite::vec_znx::test_vec_znx_lsh,
 32            test_vec_znx_lsh_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_lsh_inplace,
 33            test_vec_znx_negate => poulpy_hal::test_suite::vec_znx::test_vec_znx_negate,
 34            test_vec_znx_negate_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_negate_inplace,
 35            test_vec_znx_rotate => poulpy_hal::test_suite::vec_znx::test_vec_znx_rotate,
 36            test_vec_znx_rotate_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_rotate_inplace,
 37            test_vec_znx_automorphism => poulpy_hal::test_suite::vec_znx::test_vec_znx_automorphism,
 38            test_vec_znx_automorphism_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_automorphism_inplace,
 39            test_vec_znx_mul_xp_minus_one => poulpy_hal::test_suite::vec_znx::test_vec_znx_mul_xp_minus_one,
 40            test_vec_znx_mul_xp_minus_one_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_mul_xp_minus_one_inplace,
 41            test_vec_znx_normalize => poulpy_hal::test_suite::vec_znx::test_vec_znx_normalize,
 42            test_vec_znx_normalize_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_normalize_inplace,
 43            test_vec_znx_switch_ring => poulpy_hal::test_suite::vec_znx::test_vec_znx_switch_ring,
 44            test_vec_znx_split_ring => poulpy_hal::test_suite::vec_znx::test_vec_znx_split_ring,
 45            test_vec_znx_copy => poulpy_hal::test_suite::vec_znx::test_vec_znx_copy,
 46        }
 47    }
 48    cross_backend_test_suite! {
 49        mod svp,
 50        backend_ref =  poulpy_cpu_ref::FFT64Ref,
 51        backend_test = crate::FFT64Avx,
 52        size = 1<<8,
 53        base2k = 12,
 54        tests = {
 55            test_svp_apply_dft_to_dft => poulpy_hal::test_suite::svp::test_svp_apply_dft_to_dft,
 56            test_svp_apply_dft_to_dft_inplace => poulpy_hal::test_suite::svp::test_svp_apply_dft_to_dft_inplace,
 57        }
 58    }
 59    cross_backend_test_suite! {
 60        mod vec_znx_big,
 61        backend_ref =  poulpy_cpu_ref::FFT64Ref,
 62        backend_test = crate::FFT64Avx,
 63        size = 1<<8,
 64        base2k = 12,
 65        tests = {
 66            test_vec_znx_big_add => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_add,
 67            test_vec_znx_big_add_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_add_inplace,
 68            test_vec_znx_big_add_small => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_add_small,
 69            test_vec_znx_big_add_small_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_add_small_inplace,
 70            test_vec_znx_big_sub => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub,
 71            test_vec_znx_big_sub_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_inplace,
 72            test_vec_znx_big_automorphism => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_automorphism,
 73            test_vec_znx_big_automorphism_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_automorphism_inplace,
 74            test_vec_znx_big_negate => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_negate,
 75            test_vec_znx_big_negate_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_negate_inplace,
 76            test_vec_znx_big_normalize => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_normalize,
 77            test_vec_znx_big_sub_negate_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_negate_inplace,
 78            test_vec_znx_big_sub_small_a => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_small_a,
 79            test_vec_znx_big_sub_small_a_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_small_a_inplace,
 80            test_vec_znx_big_sub_small_b => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_small_b,
 81            test_vec_znx_big_sub_small_b_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_small_b_inplace,
 82        }
 83    }
 84    cross_backend_test_suite! {
 85        mod vec_znx_dft,
 86        backend_ref =  poulpy_cpu_ref::FFT64Ref,
 87        backend_test = crate::FFT64Avx,
 88        size = 1<<8,
 89        base2k = 12,
 90        tests = {
 91            test_vec_znx_dft_add => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_dft_add,
 92            test_vec_znx_dft_add_inplace => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_dft_add_inplace,
 93            test_vec_znx_dft_sub => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_dft_sub,
 94            test_vec_znx_dft_sub_inplace => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_dft_sub_inplace,
 95            test_vec_znx_dft_sub_negate_inplace => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_dft_sub_negate_inplace,
 96            test_vec_znx_idft_apply => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_idft_apply,
 97            test_vec_znx_idft_apply_consume => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_idft_apply_consume,
 98            test_vec_znx_idft_apply_tmpa => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_idft_apply_tmpa,
 99        }
100    }
101    cross_backend_test_suite! {
102        mod vmp,
103        backend_ref =  poulpy_cpu_ref::FFT64Ref,
104        backend_test = crate::FFT64Avx,
105        size = 1<<8,
106        base2k = 12,
107        tests = {
108            test_vmp_apply_dft_to_dft => poulpy_hal::test_suite::vmp::test_vmp_apply_dft_to_dft,
109            test_vmp_apply_dft_to_dft_add => poulpy_hal::test_suite::vmp::test_vmp_apply_dft_to_dft_add,
110        }
111    }
112
113    backend_test_suite! {
114        mod sampling,
115        backend = crate::FFT64Avx,
116        size = 1<<12,
117        tests = {
118            test_vec_znx_fill_uniform => poulpy_hal::test_suite::vec_znx::test_vec_znx_fill_uniform,
119            test_vec_znx_fill_normal => poulpy_hal::test_suite::vec_znx::test_vec_znx_fill_normal,
120            test_vec_znx_add_normal => poulpy_hal::test_suite::vec_znx::test_vec_znx_add_normal,
121        }
122    }
123}
124
125#[test]
126fn test_convolution_by_const_fft64_avx() {
127    let module: Module<FFT64Avx> = Module::<FFT64Avx>::new(8);
128    test_convolution_by_const(&module);
129}
130
131#[test]
132fn test_convolution_fft64_avx() {
133    let module: Module<FFT64Avx> = Module::<FFT64Avx>::new(8);
134    test_convolution(&module);
135}
136
137#[test]
138fn test_convolution_pairwise_fft64_avx() {
139    let module: Module<FFT64Avx> = Module::<FFT64Avx>::new(8);
140    test_convolution_pairwise(&module);
141}