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}