diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/volk_gnsssdr_profile.cc b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/volk_gnsssdr_profile.cc index cdd37f774..5202b0d77 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/volk_gnsssdr_profile.cc +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/volk_gnsssdr_profile.cc @@ -48,7 +48,7 @@ int main(int argc, char *argv[]) { boost::program_options::value()->default_value( 1e-6 ), "Set the default error tolerance for tests") ("vlen,v", - boost::program_options::value()->default_value( 131071 ), + boost::program_options::value()->default_value( 8111 ), //it is also prime "Set the default vector length for tests") // default is a mersenne prime ("iter,i", boost::program_options::value()->default_value( 1987 ), diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h index 2ce65acd9..75be95579 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h @@ -40,6 +40,7 @@ #include #include #include +//#include #ifdef LV_HAVE_GENERIC @@ -56,12 +57,10 @@ static inline void volk_gnsssdr_16ic_x2_dot_prod_16ic_generic(lv_16sc_t* result, for (unsigned int n = 0; n < num_points; n++) { //r*a.r - i*a.i, i*a.r + r*a.i - //result[0]+=in_a[n]*in_b[n]; lv_16sc_t tmp = in_a[n] * in_b[n]; result[0] = lv_cmake(sat_adds16i(lv_creal(result[0]), lv_creal(tmp)), sat_adds16i(lv_cimag(result[0]), lv_cimag(tmp) )); - //result[0].real(sat_adds16i(result[0].real(),lv_creal(tmp))); - //result[0].imag(sat_adds16i(result[0].imag(),tmp.imag())); } + //printf("generic result = %i,%i", lv_creal(result[0]),lv_cimag(result[0])); } #endif /*LV_HAVE_GENERIC*/ @@ -129,18 +128,13 @@ static inline void volk_gnsssdr_16ic_x2_dot_prod_16ic_a_sse2(lv_16sc_t* out, con for (int i = 0; i < 4; ++i) { dotProduct = lv_cmake(sat_adds16i(lv_creal(dotProduct), lv_creal(dotProductVector[i])), sat_adds16i(lv_cimag(dotProduct), lv_cimag(dotProductVector[i]))); - //dotProduct.real(sat_adds16i(lv_creal(dotProduct),lv_creal(dotProductVector[i]))); - //dotProduct.imag(sat_adds16i(lv_cimag(dotProduct),lv_cimag(dotProductVector[i]))); } } for (unsigned int i = 0; i < (num_points % 4); ++i) { - //dotProduct += (*_in_a++) * (*_in_b++); lv_16sc_t tmp = (*_in_a++) * (*_in_b++); dotProduct = lv_cmake( sat_adds16i(lv_creal(dotProduct), lv_creal(tmp)), sat_adds16i(lv_cimag(dotProduct), lv_cimag(tmp))); - //dotProduct.real(sat_adds16i(lv_creal(dotProduct),lv_creal(tmp))); - //dotProduct.imag(sat_adds16i(lv_cimag(dotProduct),lv_cimag(tmp))); } *_out = dotProduct; diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/kernel_tests.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/kernel_tests.h index c06b7f09d..510cf0351 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/kernel_tests.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/kernel_tests.h @@ -72,7 +72,7 @@ std::vector init_test_list(volk_gnsssdr_test_params_t (VOLK_INIT_TEST(volk_gnsssdr_32fc_convert_16ic, test_params)) (VOLK_INIT_TEST(volk_gnsssdr_16ic_x2_dot_prod_16ic, test_params)) (VOLK_INIT_TEST(volk_gnsssdr_16ic_x2_multiply_16ic, test_params)) - (VOLK_INIT_TEST(volk_gnsssdr_16ic_x2_dot_prod_16ic_xn, volk_gnsssdr_test_params_t(1e-2, test_params.scalar(), test_params.vlen(), test_params.iter(), test_params.benchmark_mode(), test_params.kernel_regex()))) + //(VOLK_INIT_TEST(volk_gnsssdr_16ic_x2_dot_prod_16ic_xn,test_params)) //(VOLK_INIT_TEST(volk_gnsssdr_16ic_resampler_16ic, test_params)) //(VOLK_INIT_TEST(volk_gnsssdr_16ic_xn_resampler_16ic_xn, test_params)) ; diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc index 5eac77fb0..7f5c68c41 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc @@ -73,13 +73,16 @@ void load_random_data(void *data, volk_gnsssdr_type_t type, unsigned int n) break; case 4: - if(type.is_signed) ((int32_t *)data)[i] = (int32_t) scaled_rand; - else ((uint32_t *)data)[i] = (uint32_t) scaled_rand; + if(type.is_signed) ((int32_t *)data)[i] = (int32_t) scaled_rand; + else ((uint32_t *)data)[i] = (uint32_t) scaled_rand; break; case 2: - if(type.is_signed) ((int16_t *)data)[i] = (int16_t) scaled_rand / 11; //sqrt(std::abs(scaled_rand / 2.0)); //// std::cout << "222222222222" << std::endl;} - else ((uint16_t *)data)[i] = (uint16_t) scaled_rand; + // 16 bits dot product saturates very fast even with moderate lenght vectors + // we produce here only 4 bits input range + if(type.is_signed) ((int16_t *)data)[i] = (int16_t)((int16_t) scaled_rand % 16); + + else ((uint16_t *)data)[i] = (uint16_t) (int16_t)((int16_t) scaled_rand % 16); break; case 1: if(type.is_signed) ((int8_t *)data)[i] = (int8_t) scaled_rand;