From 52b4aee1bde356f05bb017536968a8ec77e3878b Mon Sep 17 00:00:00 2001 From: Nick Foster Date: Mon, 9 May 2011 18:44:08 -0700 Subject: Volk: Each QA test runs in separate Boost test case so it prints statistics for you. --- volk/lib/qa_utils.h | 2 +- volk/lib/testqa.cc | 182 +++++++++++++++++++++++++--------------------------- 2 files changed, 89 insertions(+), 95 deletions(-) (limited to 'volk') diff --git a/volk/lib/qa_utils.h b/volk/lib/qa_utils.h index 5103589cc..304a00533 100644 --- a/volk/lib/qa_utils.h +++ b/volk/lib/qa_utils.h @@ -22,7 +22,7 @@ void random_floats(float *buf, unsigned n); bool run_volk_tests(struct volk_func_desc, void(*)(), std::string, float, float, int, int); -#define VOLK_RUN_TESTS(func, tol, scalar, len, iter) BOOST_CHECK_EQUAL(run_volk_tests(func##_get_func_desc(), (void (*)())func##_manual, std::string(#func), tol, scalar, len, iter), 0) +#define VOLK_RUN_TESTS(func, tol, scalar, len, iter) BOOST_AUTO_TEST_CASE(func##_test) { BOOST_CHECK_EQUAL(run_volk_tests(func##_get_func_desc(), (void (*)())func##_manual, std::string(#func), tol, scalar, len, iter), 0); } typedef void (*volk_fn_1arg)(void *, unsigned int, const char*); //one input, operate in place typedef void (*volk_fn_2arg)(void *, void *, unsigned int, const char*); diff --git a/volk/lib/testqa.cc b/volk/lib/testqa.cc index 47d3c1328..349fb0630 100644 --- a/volk/lib/testqa.cc +++ b/volk/lib/testqa.cc @@ -2,98 +2,92 @@ #include #include -BOOST_AUTO_TEST_CASE(volk_test_all) { - //in order... -// VOLK_RUN_TESTS(volk_16i_x5_add_quad_16i_x4_a16, 1e-4, 2046, 10000); -// VOLK_RUN_TESTS(volk_16i_branch_4_state_8_a16, 1e-4, 2046, 10000); - VOLK_RUN_TESTS(volk_16ic_deinterleave_16i_x2_a16, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_16ic_s32f_deinterleave_32f_x2_a16, 1e-4, 32768.0, 204600, 1000); - VOLK_RUN_TESTS(volk_16ic_deinterleave_real_16i_a16, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_16ic_s32f_deinterleave_real_32f_a16, 1e-5, 32768.0, 204600, 10000); - VOLK_RUN_TESTS(volk_16ic_deinterleave_real_8i_a16, 0, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_16ic_deinterleave_16i_x2_a16, 0, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_16ic_s32f_deinterleave_32f_x2_a16, 1e-4, 32768.0, 204600, 1000); - VOLK_RUN_TESTS(volk_16ic_deinterleave_real_16i_a16, 0, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_16ic_magnitude_16i_a16, 1, 0, 204600, 100); - VOLK_RUN_TESTS(volk_16ic_s32f_magnitude_32f_a16, 1e-5, 32768.0, 204600, 1000); - VOLK_RUN_TESTS(volk_16i_s32f_convert_32f_a16, 1e-4, 32768.0, 204600, 10000); - VOLK_RUN_TESTS(volk_16i_s32f_convert_32f_u, 1e-4, 32768.0, 204600, 10000); - VOLK_RUN_TESTS(volk_16i_convert_8i_a16, 0, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_16i_convert_8i_u, 0, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_16i_max_star_16i_a16, 0, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_16i_max_star_horizontal_16i_a16, 0, 0, 204600, 10000); -// VOLK_RUN_TESTS(volk_16i_permute_and_scalar_add_a16, 1e-4, 0, 2046, 10000); -// VOLK_RUN_TESTS(volk_16i_x4_quad_max_star_16i_a16, 1e-4, 0, 2046, 10000); - VOLK_RUN_TESTS(volk_16u_byteswap_a16, 0, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_accumulator_s32f_a16, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_x2_add_32f_a16, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32fc_32f_multiply_32fc_a16, 1e-4, 0, 204600, 1000); - VOLK_RUN_TESTS(volk_32fc_s32f_power_32fc_a16, 1e-4, 0, 204600, 50); - VOLK_RUN_TESTS(volk_32f_s32f_calc_spectral_noise_floor_32f_a16, 1e-4, 20.0, 204600, 1000); - VOLK_RUN_TESTS(volk_32fc_s32f_atan2_32f_a16, 1e-4, 10.0, 204600, 100); - //VOLK_RUN_TESTS(volk_32fc_x2_conjugate_dot_prod_32fc_a16, 1e-4, 0, 2046, 10000); - VOLK_RUN_TESTS(volk_32fc_x2_conjugate_dot_prod_32fc_u, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32fc_deinterleave_32f_x2_a16, 1e-4, 0, 204600, 1000); - VOLK_RUN_TESTS(volk_32fc_deinterleave_64f_x2_a16, 1e-4, 0, 204600, 1000); - VOLK_RUN_TESTS(volk_32fc_s32f_deinterleave_real_16i_a16, 0, 32768, 204600, 10000); - VOLK_RUN_TESTS(volk_32fc_deinterleave_real_32f_a16, 1e-4, 0, 204600, 5000); - VOLK_RUN_TESTS(volk_32fc_deinterleave_real_64f_a16, 1e-4, 0, 204600, 1000); - VOLK_RUN_TESTS(volk_32fc_x2_dot_prod_32fc_a16, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32fc_index_max_16u_a16, 0, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32fc_s32f_magnitude_16i_a16, 1, 32768, 204600, 100); - VOLK_RUN_TESTS(volk_32fc_magnitude_32f_a16, 1e-4, 0, 204600, 1000); - VOLK_RUN_TESTS(volk_32fc_x2_multiply_32fc_a16, 1e-4, 0, 204600, 1000); - VOLK_RUN_TESTS(volk_32f_s32f_convert_16i_a16, 1, 32768, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_s32f_convert_16i_u, 1, 32768, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_s32f_convert_32i_a16, 1, 2<<31, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_s32f_convert_32i_u, 1, 2<<31, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_convert_64f_a16, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_convert_64f_u, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_s32f_convert_8i_a16, 1, 128, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_s32f_convert_8i_u, 1, 128, 204600, 10000); -// VOLK_RUN_TESTS(volk_32fc_s32f_x2_power_spectral_density_32f_a16, 1e-4, 2046, 10000); - VOLK_RUN_TESTS(volk_32fc_s32f_power_spectrum_32f_a16, 1e-4, 0, 20460, 100); - VOLK_RUN_TESTS(volk_32fc_x2_square_dist_32f_a16, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32fc_x2_s32f_square_dist_scalar_mult_32f_a16, 1e-4, 10, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_x2_divide_32f_a16, 1e-4, 0, 204600, 2000); - VOLK_RUN_TESTS(volk_32f_x2_dot_prod_32f_a16, 1e-4, 0, 204600, 5000); - VOLK_RUN_TESTS(volk_32f_x2_dot_prod_32f_u, 1e-4, 0, 204600, 5000); -// VOLK_RUN_TESTS(volk_32f_s32f_32f_fm_detect_32f_a16, 1e-4, 2046, 10000); - VOLK_RUN_TESTS(volk_32f_index_max_16u_a16, 0, 0, 204600, 5000); - VOLK_RUN_TESTS(volk_32f_x2_s32f_interleave_16ic_a16, 1, 32768, 204600, 3000); - VOLK_RUN_TESTS(volk_32f_x2_interleave_32fc_a16, 0, 0, 204600, 5000); - VOLK_RUN_TESTS(volk_32f_x2_max_32f_a16, 1e-4, 0, 204600, 2000); - VOLK_RUN_TESTS(volk_32f_x2_min_32f_a16, 1e-4, 0, 204600, 2000); - VOLK_RUN_TESTS(volk_32f_x2_multiply_32f_a16, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_s32f_normalize_a16, 1e-4, 100, 204600, 10000); - VOLK_RUN_TESTS(volk_32f_s32f_power_32f_a16, 1e-4, 4, 204600, 100); - VOLK_RUN_TESTS(volk_32f_sqrt_32f_a16, 1e-4, 0, 204600, 100); - VOLK_RUN_TESTS(volk_32f_s32f_stddev_32f_a16, 1e-4, 100, 204600, 3000); - VOLK_RUN_TESTS(volk_32f_stddev_and_mean_32f_x2_a16, 1e-4, 0, 204600, 3000); - VOLK_RUN_TESTS(volk_32f_x2_subtract_32f_a16, 1e-4, 0, 204600, 5000); - VOLK_RUN_TESTS(volk_32f_x3_sum_of_poly_32f_a16, 1e-4, 0, 204600, 5000); - VOLK_RUN_TESTS(volk_32i_x2_and_32i_a16, 0, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32i_s32f_convert_32f_a16, 1e-4, 100, 204600, 10000); - VOLK_RUN_TESTS(volk_32i_s32f_convert_32f_u, 1e-4, 100, 204600, 10000); - VOLK_RUN_TESTS(volk_32i_x2_or_32i_a16, 0, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_32u_byteswap_a16, 0, 0, 204600, 2000); -// VOLK_RUN_TESTS(volk_32u_popcnt_a16, 0, 0, 2046, 10000); - VOLK_RUN_TESTS(volk_64f_convert_32f_a16, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_64f_convert_32f_u, 1e-4, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_64f_x2_max_64f_a16, 1e-4, 0, 204600, 1000); - VOLK_RUN_TESTS(volk_64f_x2_min_64f_a16, 1e-4, 0, 204600, 1000); - VOLK_RUN_TESTS(volk_64u_byteswap_a16, 0, 0, 204600, 1000); -// VOLK_RUN_TESTS(volk_64u_popcnt_a16, 0, 0, 2046, 10000); - VOLK_RUN_TESTS(volk_8ic_deinterleave_16i_x2_a16, 0, 0, 204600, 3000); - VOLK_RUN_TESTS(volk_8ic_s32f_deinterleave_32f_x2_a16, 1e-4, 100, 204600, 3000); - VOLK_RUN_TESTS(volk_8ic_deinterleave_real_16i_a16, 0, 256, 204600, 3000); - VOLK_RUN_TESTS(volk_8ic_s32f_deinterleave_real_32f_a16, 1e-4, 100, 204600, 3000); - VOLK_RUN_TESTS(volk_8ic_deinterleave_real_8i_a16, 0, 0, 204600, 10000); - VOLK_RUN_TESTS(volk_8ic_x2_multiply_conjugate_16ic_a16, 0, 0, 204600, 400); - VOLK_RUN_TESTS(volk_8ic_x2_s32f_multiply_conjugate_32fc_a16, 1e-4, 100, 204600, 400); - VOLK_RUN_TESTS(volk_8i_convert_16i_a16, 0, 0, 204600, 20000); - VOLK_RUN_TESTS(volk_8i_convert_16i_u, 0, 0, 204600, 2000); - VOLK_RUN_TESTS(volk_8i_s32f_convert_32f_a16, 1e-4, 100, 204600, 2000); - VOLK_RUN_TESTS(volk_8i_s32f_convert_32f_u, 1e-4, 100, 204600, 2000); +//VOLK_RUN_TESTS(volk_16i_x5_add_quad_16i_x4_a16, 1e-4, 2046, 10000); +//VOLK_RUN_TESTS(volk_16i_branch_4_state_8_a16, 1e-4, 2046, 10000); +VOLK_RUN_TESTS(volk_16ic_s32f_deinterleave_real_32f_a16, 1e-5, 32768.0, 204600, 10000); +VOLK_RUN_TESTS(volk_16ic_deinterleave_real_8i_a16, 0, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_16ic_deinterleave_16i_x2_a16, 0, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_16ic_s32f_deinterleave_32f_x2_a16, 1e-4, 32768.0, 204600, 1000); +VOLK_RUN_TESTS(volk_16ic_deinterleave_real_16i_a16, 0, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_16ic_magnitude_16i_a16, 1, 0, 204600, 100); +VOLK_RUN_TESTS(volk_16ic_s32f_magnitude_32f_a16, 1e-5, 32768.0, 204600, 1000); +VOLK_RUN_TESTS(volk_16i_s32f_convert_32f_a16, 1e-4, 32768.0, 204600, 10000); +VOLK_RUN_TESTS(volk_16i_s32f_convert_32f_u, 1e-4, 32768.0, 204600, 10000); +VOLK_RUN_TESTS(volk_16i_convert_8i_a16, 0, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_16i_convert_8i_u, 0, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_16i_max_star_16i_a16, 0, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_16i_max_star_horizontal_16i_a16, 0, 0, 204600, 10000); +//VOLK_RUN_TESTS(volk_16i_permute_and_scalar_add_a16, 1e-4, 0, 2046, 10000); +//VOLK_RUN_TESTS(volk_16i_x4_quad_max_star_16i_a16, 1e-4, 0, 2046, 10000); +VOLK_RUN_TESTS(volk_16u_byteswap_a16, 0, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_accumulator_s32f_a16, 1e-4, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_x2_add_32f_a16, 1e-4, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32fc_32f_multiply_32fc_a16, 1e-4, 0, 204600, 1000); +VOLK_RUN_TESTS(volk_32fc_s32f_power_32fc_a16, 1e-4, 0, 204600, 50); +VOLK_RUN_TESTS(volk_32f_s32f_calc_spectral_noise_floor_32f_a16, 1e-4, 20.0, 204600, 1000); +VOLK_RUN_TESTS(volk_32fc_s32f_atan2_32f_a16, 1e-4, 10.0, 204600, 100); +//VOLK_RUN_TESTS(volk_32fc_x2_conjugate_dot_prod_32fc_a16, 1e-4, 0, 2046, 10000); +VOLK_RUN_TESTS(volk_32fc_x2_conjugate_dot_prod_32fc_u, 1e-4, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32fc_deinterleave_32f_x2_a16, 1e-4, 0, 204600, 1000); +VOLK_RUN_TESTS(volk_32fc_deinterleave_64f_x2_a16, 1e-4, 0, 204600, 1000); +VOLK_RUN_TESTS(volk_32fc_s32f_deinterleave_real_16i_a16, 0, 32768, 204600, 10000); +VOLK_RUN_TESTS(volk_32fc_deinterleave_real_32f_a16, 1e-4, 0, 204600, 5000); +VOLK_RUN_TESTS(volk_32fc_deinterleave_real_64f_a16, 1e-4, 0, 204600, 1000); +VOLK_RUN_TESTS(volk_32fc_x2_dot_prod_32fc_a16, 1e-4, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32fc_index_max_16u_a16, 0, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32fc_s32f_magnitude_16i_a16, 1, 32768, 204600, 100); +VOLK_RUN_TESTS(volk_32fc_magnitude_32f_a16, 1e-4, 0, 204600, 1000); +VOLK_RUN_TESTS(volk_32fc_x2_multiply_32fc_a16, 1e-4, 0, 204600, 1000); +VOLK_RUN_TESTS(volk_32f_s32f_convert_16i_a16, 1, 32768, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_s32f_convert_16i_u, 1, 32768, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_s32f_convert_32i_a16, 1, 2<<31, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_s32f_convert_32i_u, 1, 2<<31, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_convert_64f_a16, 1e-4, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_convert_64f_u, 1e-4, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_s32f_convert_8i_a16, 1, 128, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_s32f_convert_8i_u, 1, 128, 204600, 10000); +//VOLK_RUN_TESTS(volk_32fc_s32f_x2_power_spectral_density_32f_a16, 1e-4, 2046, 10000); +VOLK_RUN_TESTS(volk_32fc_s32f_power_spectrum_32f_a16, 1e-4, 0, 20460, 100); +VOLK_RUN_TESTS(volk_32fc_x2_square_dist_32f_a16, 1e-4, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32fc_x2_s32f_square_dist_scalar_mult_32f_a16, 1e-4, 10, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_x2_divide_32f_a16, 1e-4, 0, 204600, 2000); +VOLK_RUN_TESTS(volk_32f_x2_dot_prod_32f_a16, 1e-4, 0, 204600, 5000); +VOLK_RUN_TESTS(volk_32f_x2_dot_prod_32f_u, 1e-4, 0, 204600, 5000); +//VOLK_RUN_TESTS(volk_32f_s32f_32f_fm_detect_32f_a16, 1e-4, 2046, 10000); +VOLK_RUN_TESTS(volk_32f_index_max_16u_a16, 0, 0, 204600, 5000); +VOLK_RUN_TESTS(volk_32f_x2_s32f_interleave_16ic_a16, 1, 32768, 204600, 3000); +VOLK_RUN_TESTS(volk_32f_x2_interleave_32fc_a16, 0, 0, 204600, 5000); +VOLK_RUN_TESTS(volk_32f_x2_max_32f_a16, 1e-4, 0, 204600, 2000); +VOLK_RUN_TESTS(volk_32f_x2_min_32f_a16, 1e-4, 0, 204600, 2000); +VOLK_RUN_TESTS(volk_32f_x2_multiply_32f_a16, 1e-4, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_s32f_normalize_a16, 1e-4, 100, 204600, 10000); +VOLK_RUN_TESTS(volk_32f_s32f_power_32f_a16, 1e-4, 4, 204600, 100); +VOLK_RUN_TESTS(volk_32f_sqrt_32f_a16, 1e-4, 0, 204600, 100); +VOLK_RUN_TESTS(volk_32f_s32f_stddev_32f_a16, 1e-4, 100, 204600, 3000); +VOLK_RUN_TESTS(volk_32f_stddev_and_mean_32f_x2_a16, 1e-4, 0, 204600, 3000); +VOLK_RUN_TESTS(volk_32f_x2_subtract_32f_a16, 1e-4, 0, 204600, 5000); +VOLK_RUN_TESTS(volk_32f_x3_sum_of_poly_32f_a16, 1e-4, 0, 204600, 5000); +VOLK_RUN_TESTS(volk_32i_x2_and_32i_a16, 0, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32i_s32f_convert_32f_a16, 1e-4, 100, 204600, 10000); +VOLK_RUN_TESTS(volk_32i_s32f_convert_32f_u, 1e-4, 100, 204600, 10000); +VOLK_RUN_TESTS(volk_32i_x2_or_32i_a16, 0, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_32u_byteswap_a16, 0, 0, 204600, 2000); +//VOLK_RUN_TESTS(volk_32u_popcnt_a16, 0, 0, 2046, 10000); +VOLK_RUN_TESTS(volk_64f_convert_32f_a16, 1e-4, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_64f_convert_32f_u, 1e-4, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_64f_x2_max_64f_a16, 1e-4, 0, 204600, 1000); +VOLK_RUN_TESTS(volk_64f_x2_min_64f_a16, 1e-4, 0, 204600, 1000); +VOLK_RUN_TESTS(volk_64u_byteswap_a16, 0, 0, 204600, 1000); +//VOLK_RUN_TESTS(volk_64u_popcnt_a16, 0, 0, 2046, 10000); +VOLK_RUN_TESTS(volk_8ic_deinterleave_16i_x2_a16, 0, 0, 204600, 3000); +VOLK_RUN_TESTS(volk_8ic_s32f_deinterleave_32f_x2_a16, 1e-4, 100, 204600, 3000); +VOLK_RUN_TESTS(volk_8ic_deinterleave_real_16i_a16, 0, 256, 204600, 3000); +VOLK_RUN_TESTS(volk_8ic_s32f_deinterleave_real_32f_a16, 1e-4, 100, 204600, 3000); +VOLK_RUN_TESTS(volk_8ic_deinterleave_real_8i_a16, 0, 0, 204600, 10000); +VOLK_RUN_TESTS(volk_8ic_x2_multiply_conjugate_16ic_a16, 0, 0, 204600, 400); +VOLK_RUN_TESTS(volk_8ic_x2_s32f_multiply_conjugate_32fc_a16, 1e-4, 100, 204600, 400); +VOLK_RUN_TESTS(volk_8i_convert_16i_a16, 0, 0, 204600, 20000); +VOLK_RUN_TESTS(volk_8i_convert_16i_u, 0, 0, 204600, 2000); +VOLK_RUN_TESTS(volk_8i_s32f_convert_32f_a16, 1e-4, 100, 204600, 2000); +VOLK_RUN_TESTS(volk_8i_s32f_convert_32f_u, 1e-4, 100, 204600, 2000); -} -- cgit