Correlator class librery now uses volk_profile information to select the best architecture for the SIMD enabled functions.

git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@184 64b25241-fba3-4117-9849-534c7e92360d
This commit is contained in:
Javier Arribas 2012-03-09 15:31:32 +00:00
parent e3f8b0aeaa
commit 5f51f513a3
2 changed files with 26 additions and 13 deletions

View File

@ -213,19 +213,19 @@ Channel0.satellite=2
Channel1.system=GPS Channel1.system=GPS
Channel1.signal=1C Channel1.signal=1C
Channel1.satellite=14 ;Channel1.satellite=14
;######### CHANNEL 2 CONFIG ############ ;######### CHANNEL 2 CONFIG ############
Channel2.system=GPS Channel2.system=GPS
Channel2.signal=1C Channel2.signal=1C
Channel2.satellite=21 ;Channel2.satellite=21
;######### CHANNEL 3 CONFIG ############ ;######### CHANNEL 3 CONFIG ############
Channel3.system=GPS Channel3.system=GPS
Channel3.signal=1C Channel3.signal=1C
Channel3.satellite=13 ;Channel3.satellite=13
;######### ACQUISITION GLOBAL CONFIG ############ ;######### ACQUISITION GLOBAL CONFIG ############
@ -295,25 +295,33 @@ Acquisition4.doppler_step=250
;######### ACQUISITION CH 5 CONFIG ############ ;######### ACQUISITION CH 5 CONFIG ############
Acquisition5.implementation=GPS_L1_CA_PCPS_Acquisition Acquisition5.implementation=GPS_L1_CA_PCPS_Acquisition
Acquisition5.threshold=70 Acquisition5.threshold=50
Acquisition5.doppler_max=10000 Acquisition5.doppler_max=10000
Acquisition5.doppler_step=250 Acquisition5.doppler_step=250
;Acquisition5.repeat_satellite=true ;Acquisition5.repeat_satellite=true
;######### ACQUISITION CH 6 CONFIG ############ ;######### ACQUISITION CH 6 CONFIG ############
Acquisition6.implementation=GPS_L1_CA_PCPS_Acquisition Acquisition6.implementation=GPS_L1_CA_PCPS_Acquisition
Acquisition6.threshold=70 Acquisition6.threshold=50
Acquisition6.doppler_max=10000 Acquisition6.doppler_max=10000
Acquisition6.doppler_step=250 Acquisition6.doppler_step=250
;Acquisition6.repeat_satellite=true ;Acquisition6.repeat_satellite=true
;######### ACQUISITION CH 7 CONFIG ############ ;######### ACQUISITION CH 7 CONFIG ############
Acquisition7.implementation=GPS_L1_CA_PCPS_Acquisition Acquisition7.implementation=GPS_L1_CA_PCPS_Acquisition
Acquisition7.threshold=70 Acquisition7.threshold=50
Acquisition7.doppler_max=10000 Acquisition7.doppler_max=10000
Acquisition7.doppler_step=250 Acquisition7.doppler_step=250
;Acquisition7.repeat_satellite=true ;Acquisition7.repeat_satellite=true
;######### ACQUISITION CH 8 CONFIG ############
Acquisition8.implementation=GPS_L1_CA_PCPS_Acquisition
Acquisition8.threshold=50
Acquisition8.doppler_max=10000
Acquisition8.doppler_step=250
;Acquisition8.repeat_satellite=true
;######### TRACKING GLOBAL CONFIG ############ ;######### TRACKING GLOBAL CONFIG ############
;#implementatiion: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] ;#implementatiion: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking]
@ -368,7 +376,7 @@ Observables.dump_filename=./observables.dat
PVT.implementation=GPS_L1_CA_PVT PVT.implementation=GPS_L1_CA_PVT
;#averaging_depth: Number of PVT observations in the moving average algorithm ;#averaging_depth: Number of PVT observations in the moving average algorithm
PVT.averaging_depth=2 PVT.averaging_depth=10
;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] ;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false]
PVT.flag_averaging=true PVT.flag_averaging=true

View File

@ -91,10 +91,15 @@ void Correlator::Carrier_wipeoff_and_EPL_volk(int signal_length_samples,const gr
memcpy(input_aligned,input,signal_length_samples * sizeof(gr_complex)); memcpy(input_aligned,input,signal_length_samples * sizeof(gr_complex));
//memcpy(carrier_aligned,carrier,signal_length_samples*sizeof(gr_complex)); //memcpy(carrier_aligned,carrier,signal_length_samples*sizeof(gr_complex));
volk_32fc_x2_multiply_32fc_a_manual(bb_signal, input_aligned, carrier, signal_length_samples, volk_32fc_x2_multiply_32fc_a_best_arch.c_str()); //volk_32fc_x2_multiply_32fc_a_manual(bb_signal, input_aligned, carrier, signal_length_samples, volk_32fc_x2_multiply_32fc_a_best_arch.c_str());
volk_32fc_x2_dot_prod_32fc_a_manual(E_out, bb_signal, E_code, signal_length_samples * sizeof(gr_complex), volk_32fc_x2_dot_prod_32fc_a_best_arch.c_str()); //volk_32fc_x2_dot_prod_32fc_a_manual(E_out, bb_signal, E_code, signal_length_samples * sizeof(gr_complex), volk_32fc_x2_dot_prod_32fc_a_best_arch.c_str());
volk_32fc_x2_dot_prod_32fc_a_manual(P_out, bb_signal, P_code, signal_length_samples * sizeof(gr_complex), volk_32fc_x2_dot_prod_32fc_a_best_arch.c_str()); //volk_32fc_x2_dot_prod_32fc_a_manual(P_out, bb_signal, P_code, signal_length_samples * sizeof(gr_complex), volk_32fc_x2_dot_prod_32fc_a_best_arch.c_str());
volk_32fc_x2_dot_prod_32fc_a_manual(L_out, bb_signal, L_code, signal_length_samples * sizeof(gr_complex), volk_32fc_x2_dot_prod_32fc_a_best_arch.c_str()); //volk_32fc_x2_dot_prod_32fc_a_manual(L_out, bb_signal, L_code, signal_length_samples * sizeof(gr_complex), volk_32fc_x2_dot_prod_32fc_a_best_arch.c_str());
volk_32fc_x2_multiply_32fc_a(bb_signal, input_aligned, carrier, signal_length_samples);
volk_32fc_x2_dot_prod_32fc_a(E_out, bb_signal, E_code, signal_length_samples * sizeof(gr_complex));
volk_32fc_x2_dot_prod_32fc_a(P_out, bb_signal, P_code, signal_length_samples * sizeof(gr_complex));
volk_32fc_x2_dot_prod_32fc_a(L_out, bb_signal, L_code, signal_length_samples * sizeof(gr_complex));
free(bb_signal); free(bb_signal);
free(input_aligned); free(input_aligned);
@ -173,8 +178,8 @@ void Correlator::cpu_arch_test_volk_32fc_x2_multiply_32fc_a()
Correlator::Correlator () Correlator::Correlator ()
{ {
cpu_arch_test_volk_32fc_x2_dot_prod_32fc_a(); //cpu_arch_test_volk_32fc_x2_dot_prod_32fc_a();
cpu_arch_test_volk_32fc_x2_multiply_32fc_a(); //cpu_arch_test_volk_32fc_x2_multiply_32fc_a();
} }
Correlator::~Correlator () Correlator::~Correlator ()