Commit 5461757f authored by lfarizav's avatar lfarizav

Running C-RAN emulations

parent e7b2b644
...@@ -384,7 +384,7 @@ float dac_fixed_gain_prach_SSE_float(float *s_re[2], ...@@ -384,7 +384,7 @@ float dac_fixed_gain_prach_SSE_float(float *s_re[2],
_mm_storeu_ps(&s_re[aa][4*i],input_re128); _mm_storeu_ps(&s_re[aa][4*i],input_re128);
_mm_storeu_ps(&s_im[aa][4*i],input_im128); _mm_storeu_ps(&s_im[aa][4*i],input_im128);
if (2*i+input_offset==12*2*ofdm_symbol_size) if (4*i+input_offset==12*2*ofdm_symbol_size)
i=0; i=0;
} }
} }
...@@ -449,7 +449,7 @@ float dac_fixed_gain_prach_AVX_float(float *s_re[2], ...@@ -449,7 +449,7 @@ float dac_fixed_gain_prach_AVX_float(float *s_re[2],
_mm256_storeu_ps(&s_re[aa][8*i],input_re256); _mm256_storeu_ps(&s_re[aa][8*i],input_re256);
_mm256_storeu_ps(&s_im[aa][8*i],input_im256); _mm256_storeu_ps(&s_im[aa][8*i],input_im256);
if (2*i+input_offset==12*2*ofdm_symbol_size) if (8*i+input_offset==12*2*ofdm_symbol_size)
i=0; i=0;
} }
} }
......
...@@ -432,9 +432,9 @@ clock_t start=clock();*/ ...@@ -432,9 +432,9 @@ clock_t start=clock();*/
//gauss_1_128_sqrt_NOW = _mm_set_ps(gaussdouble(0.0,1.0),gaussdouble(0.0,1.0),gaussdouble(0.0,1.0),gaussdouble(0.0,1.0)); //gauss_1_128_sqrt_NOW = _mm_set_ps(gaussdouble(0.0,1.0),gaussdouble(0.0,1.0),gaussdouble(0.0,1.0),gaussdouble(0.0,1.0));
//gauss_0_128_sqrt_NOW = _mm_set_ps(ziggurat(0.0,1.0),ziggurat(0.0,1.0),ziggurat(0.0,1.0),ziggurat(0.0,1.0)); //gauss_0_128_sqrt_NOW = _mm_set_ps(ziggurat(0.0,1.0),ziggurat(0.0,1.0),ziggurat(0.0,1.0),ziggurat(0.0,1.0));
//gauss_1_128_sqrt_NOW = _mm_set_ps(ziggurat(0.0,1.0),ziggurat(0.0,1.0),ziggurat(0.0,1.0),ziggurat(0.0,1.0)); //gauss_1_128_sqrt_NOW = _mm_set_ps(ziggurat(0.0,1.0),ziggurat(0.0,1.0),ziggurat(0.0,1.0),ziggurat(0.0,1.0));
//boxmuller_SSE_float(&gauss_0_128_sqrt_NOW, &gauss_1_128_sqrt_NOW); boxmuller_SSE_float(&gauss_0_128_sqrt_NOW, &gauss_1_128_sqrt_NOW);
gauss_0_128_sqrt_NOW = ziggurat_SSE_float(); //gauss_0_128_sqrt_NOW = ziggurat_SSE_float();
gauss_1_128_sqrt_NOW = ziggurat_SSE_float(); //gauss_1_128_sqrt_NOW = ziggurat_SSE_float();
//stop_meas(&desc->ziggurat); //stop_meas(&desc->ziggurat);
gauss_0_128_sqrt_NOW = _mm_mul_ps(gauss_0_128_sqrt_NOW,_mm_set1_ps(sqrt_NOW)); gauss_0_128_sqrt_NOW = _mm_mul_ps(gauss_0_128_sqrt_NOW,_mm_set1_ps(sqrt_NOW));
gauss_1_128_sqrt_NOW = _mm_mul_ps(gauss_1_128_sqrt_NOW,_mm_set1_ps(sqrt_NOW)); gauss_1_128_sqrt_NOW = _mm_mul_ps(gauss_1_128_sqrt_NOW,_mm_set1_ps(sqrt_NOW));
......
...@@ -232,7 +232,7 @@ int init_freq_channel_SSE_float(channel_desc_t *desc,uint16_t nb_rb,int16_t n_sa ...@@ -232,7 +232,7 @@ int init_freq_channel_SSE_float(channel_desc_t *desc,uint16_t nb_rb,int16_t n_sa
//printf("f %d,l %d (cos,sin) (%e,%e):\n",4*f,l,cos_lut_f[(n_samples>>1)][l],sin_lut_f[(n_samples>>1)][l]); //printf("f %d,l %d (cos,sin) (%e,%e):\n",4*f,l,cos_lut_f[(n_samples>>1)][l],sin_lut_f[(n_samples>>1)][l]);
} }
for (f=1; f<=(n_samples>>3)+1; f++) { for (f=1; f<=(n_samples>>3); f++) {
//count++; //count++;
//freq=delta_f*(double)f*1e-6;// due to the fact that delays is in mus //freq=delta_f*(double)f*1e-6;// due to the fact that delays is in mus
for (l=0; l<(int)desc->nb_taps; l++) { for (l=0; l<(int)desc->nb_taps; l++) {
...@@ -314,7 +314,7 @@ int init_freq_channel_AVX_float(channel_desc_t *desc,uint16_t nb_rb,int16_t n_sa ...@@ -314,7 +314,7 @@ int init_freq_channel_AVX_float(channel_desc_t *desc,uint16_t nb_rb,int16_t n_sa
delay = desc->delays[l]; delay = desc->delays[l];
else else
delay = desc->delays[l]+NB_SAMPLES_CHANNEL_OFFSET/desc->sampling_rate; delay = desc->delays[l]+NB_SAMPLES_CHANNEL_OFFSET/desc->sampling_rate;
sincos256_ps(_mm256_set_ps(twopi*(4*f)*delay,twopi*(4*f-1)*delay,twopi*(4*f-2)*delay,twopi*(4*f-3)*delay,twopi*(4*f-4)*delay,twopi*(4*f-5)*delay,twopi*(4*f-6)*delay,twopi*(4*f-7)*delay), &sin_lut256, &cos_lut256); sincos256_ps(_mm256_set_ps(twopi*(8*f)*delay,twopi*(8*f-1)*delay,twopi*(8*f-2)*delay,twopi*(8*f-3)*delay,twopi*(8*f-4)*delay,twopi*(8*f-5)*delay,twopi*(8*f-6)*delay,twopi*(8*f-7)*delay), &sin_lut256, &cos_lut256);
//cos_lut256=_mm256_set_ps(cos(twopi*(4*f)*delay),cos(twopi*(4*f-1)*delay),cos(twopi*(4*f-2)*delay),cos(twopi*(4*f-3)*delay),cos(twopi*(4*f-4)*delay),cos(twopi*(4*f-5)*delay),cos(twopi*(4*f-6)*delay),cos(twopi*(4*f-7)*delay)); //cos_lut256=_mm256_set_ps(cos(twopi*(4*f)*delay),cos(twopi*(4*f-1)*delay),cos(twopi*(4*f-2)*delay),cos(twopi*(4*f-3)*delay),cos(twopi*(4*f-4)*delay),cos(twopi*(4*f-5)*delay),cos(twopi*(4*f-6)*delay),cos(twopi*(4*f-7)*delay));
//sin_lut256=_mm256_set_ps(sin(twopi*(4*f)*delay),sin(twopi*(4*f-1)*delay),sin(twopi*(4*f-2)*delay),sin(twopi*(4*f-3)*delay),sin(twopi*(4*f-4)*delay),sin(twopi*(4*f-5)*delay),sin(twopi*(4*f-6)*delay),sin(twopi*(4*f-7)*delay)); //sin_lut256=_mm256_set_ps(sin(twopi*(4*f)*delay),sin(twopi*(4*f-1)*delay),sin(twopi*(4*f-2)*delay),sin(twopi*(4*f-3)*delay),sin(twopi*(4*f-4)*delay),sin(twopi*(4*f-5)*delay),sin(twopi*(4*f-6)*delay),sin(twopi*(4*f-7)*delay));
_mm256_storeu_ps(&cos_lut_f[l][8*f-7+(n_samples>>1)],cos_lut256); _mm256_storeu_ps(&cos_lut_f[l][8*f-7+(n_samples>>1)],cos_lut256);
......
...@@ -1520,14 +1520,34 @@ void do_UL_sig_freq_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB ...@@ -1520,14 +1520,34 @@ void do_UL_sig_freq_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB
if (UE2eNB[UE_id][eNB_id][CC_id]->first_run == 1) if (UE2eNB[UE_id][eNB_id][CC_id]->first_run == 1)
UE2eNB[UE_id][eNB_id][CC_id]->first_run = 0; UE2eNB[UE_id][eNB_id][CC_id]->first_run = 0;
__m256 r_re0_f_prach_256,r_im0_f_prach_256,r_re_UL_f_prach_256,r_im_UL_f_prach_256;
pthread_mutex_lock(&UE_output_mutex[eNB_id]); pthread_mutex_lock(&UE_output_mutex[eNB_id]);
#ifdef SSE_float
for (aa=0; aa<nb_antennas_rx; aa++) {
for (i=0; i<(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti)>>3; i++) {
//r_re_UL_f_prach[eNB_id][aa][i]+=r_re0_f_prach[aa][i];
//r_im_UL_f_prach[eNB_id][aa][i]+=r_im0_f_prach[aa][i];
r_re0_f_prach_256 = _mm256_loadu_ps(&r_re0_f_prach[aa][8*i]);
r_im0_f_prach_256 = _mm256_loadu_ps(&r_im0_f_prach[aa][8*i]);
r_re_UL_f_prach_256 = _mm256_loadu_ps(&r_re_UL_f_prach[eNB_id][aa][8*i]);
r_im_UL_f_prach_256 = _mm256_loadu_ps(&r_im_UL_f_prach[eNB_id][aa][8*i]);
r_re_UL_f_prach_256 = _mm256_add_ps(r_re_UL_f_prach_256,r_re0_f_prach_256);
r_im_UL_f_prach_256 = _mm256_add_ps(r_im_UL_f_prach_256,r_im0_f_prach_256);
_mm256_storeu_ps(&r_re_UL_f_prach[eNB_id][aa][8*i],r_re_UL_f_prach_256);
_mm256_storeu_ps(&r_im_UL_f_prach[eNB_id][aa][8*i],r_im_UL_f_prach_256);
}
}
#else
for (aa=0; aa<nb_antennas_rx; aa++) { for (aa=0; aa<nb_antennas_rx; aa++) {
for (i=0; i<frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti; i++) { for (i=0; i<frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti; i++) {
r_re_UL_f_prach[eNB_id][aa][i]+=r_re0_f_prach[aa][i]; r_re_UL_f_prach[eNB_id][aa][i]+=r_re0_f_prach[aa][i];
r_im_UL_f_prach[eNB_id][aa][i]+=r_im0_f_prach[aa][i]; r_im_UL_f_prach[eNB_id][aa][i]+=r_im0_f_prach[aa][i];
} }
} }
#endif
pthread_mutex_unlock(&UE_output_mutex[eNB_id]); pthread_mutex_unlock(&UE_output_mutex[eNB_id]);
} }
} //UE_id } //UE_id
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment