Commit cabec282 authored by root's avatar root

fixes to prevoius commit + some timing measurements

parent 192be604
...@@ -348,7 +348,7 @@ int dlsch_encoding_2threads0(te_params *tep) { ...@@ -348,7 +348,7 @@ int dlsch_encoding_2threads0(te_params *tep) {
else else
Kr_int = Kr; Kr_int = Kr;
for (r0=0,r=segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][current_worker]; r<segments_per_worker[dlsch->harq_processes[harq_pid]->C][current_worker+1]; r0++,r++) { for (r0=0,r=segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][current_worker]; r<segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][current_worker+1]; r0++,r++) {
memset(dlsch->harq_processes[harq_pid]->d[r],0,(96+12+3+3*8448)*sizeof(uint8_t)); memset(dlsch->harq_processes[harq_pid]->d[r],0,(96+12+3+3*8448)*sizeof(uint8_t));
c_tmp[r0] = &dlsch->harq_processes[harq_pid]->c[r][0]; c_tmp[r0] = &dlsch->harq_processes[harq_pid]->c[r][0];
d_tmp[r0] = &dlsch->harq_processes[harq_pid]->d[r][96]; d_tmp[r0] = &dlsch->harq_processes[harq_pid]->d[r][96];
...@@ -356,7 +356,7 @@ int dlsch_encoding_2threads0(te_params *tep) { ...@@ -356,7 +356,7 @@ int dlsch_encoding_2threads0(te_params *tep) {
ldpc_encoder_optim_8seg(c_tmp,d_tmp,Kr,1,3,r0,NULL,NULL,NULL,NULL); ldpc_encoder_optim_8seg(c_tmp,d_tmp,Kr,1,3,r0,NULL,NULL,NULL,NULL);
for (r0=0,r=segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][current_worker]; r<segments_per_worker[dlsch->harq_processes[harq_pid]->C][current_worker+1]; r0++,r++) { for (r0=0,r=segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][current_worker]; r<segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][current_worker+1]; r0++,r++) {
dlsch->harq_processes[harq_pid]->RTC[r] = dlsch->harq_processes[harq_pid]->RTC[r] =
sub_block_interleaving_turbo((Kr_int), sub_block_interleaving_turbo((Kr_int),
&dlsch->harq_processes[harq_pid]->d[r][96], &dlsch->harq_processes[harq_pid]->d[r][96],
...@@ -369,8 +369,8 @@ int dlsch_encoding_2threads0(te_params *tep) { ...@@ -369,8 +369,8 @@ int dlsch_encoding_2threads0(te_params *tep) {
// Fill in the "e"-sequence from 36-212, V8.6 2009-03, p. 16-17 (for each "e") and concatenate the // Fill in the "e"-sequence from 36-212, V8.6 2009-03, p. 16-17 (for each "e") and concatenate the
// outputs for each code segment, see Section 5.1.5 p.20 // outputs for each code segment, see Section 5.1.5 p.20
for (r=0,r_offset=0; r<segments_per_worker[dlsch->harq_processes[harq_pid]->C][current_worker+1]; r++) { for (r=0,r_offset=0; r<segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][current_worker+1]; r++) {
if(r<segments_per_worker[dlsch->harq_processes[harq_pid]->C][current_worker]){ if(r<segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][current_worker]){
int Nl=dlsch->harq_processes[harq_pid]->Nl; int Nl=dlsch->harq_processes[harq_pid]->Nl;
int Qm=dlsch->harq_processes[harq_pid]->Qm; int Qm=dlsch->harq_processes[harq_pid]->Qm;
int C = dlsch->harq_processes[harq_pid]->C; int C = dlsch->harq_processes[harq_pid]->C;
...@@ -451,12 +451,12 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB, ...@@ -451,12 +451,12 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
uint8_t subframe, uint8_t subframe,
time_stats_t *rm_stats, time_stats_t *rm_stats,
time_stats_t *te_stats, time_stats_t *te_stats,
time_stats_t *te_wait_stats, time_stats_t *te_wait_stats,
time_stats_t *te_main_stats, time_stats_t *te_main_stats,
time_stats_t *te_wakeup_stats0, time_stats_t *te_wakeup_stats0,
time_stats_t *te_wakeup_stats1, time_stats_t *te_wakeup_stats1,
time_stats_t *i_stats, time_stats_t *i_stats,
int worker_num) int worker_num)
{ {
//start_meas(&eNB->dlsch_turbo_encoding_preperation_stats); //start_meas(&eNB->dlsch_turbo_encoding_preperation_stats);
...@@ -523,6 +523,10 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB, ...@@ -523,6 +523,10 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
stop_meas(&eNB->dlsch_turbo_encoding_segmentation_stats); stop_meas(&eNB->dlsch_turbo_encoding_segmentation_stats);
if (dlsch->harq_processes[harq_pid]->C >= 7) worker_num=2;
else if (dlsch->harq_processes[harq_pid]->C >=4) worker_num=1;
else worker_num=0;
start_meas(&eNB->dlsch_turbo_encoding_signal_stats); start_meas(&eNB->dlsch_turbo_encoding_signal_stats);
for(int i=0;i<worker_num;i++) for(int i=0;i<worker_num;i++)
{ {
...@@ -557,7 +561,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB, ...@@ -557,7 +561,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
#ifdef TD_DECODING #ifdef TD_DECODING
start_meas(te_main_stats); start_meas(te_main_stats);
for (r=segments_per_worker[dlsch->harq_processes[harq_pid]->C][worker_num-1]; r<dlsch->harq_processes[harq_pid]->C; r++) { for (r=(woker_num==0 ? 0 : segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][worker_num-1]); r<dlsch->harq_processes[harq_pid]->C; r++) {
if (r<dlsch->harq_processes[harq_pid]->Cminus) if (r<dlsch->harq_processes[harq_pid]->Cminus)
Kr = dlsch->harq_processes[harq_pid]->Kminus; Kr = dlsch->harq_processes[harq_pid]->Kminus;
...@@ -609,9 +613,9 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB, ...@@ -609,9 +613,9 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
else else
Kr_int = Kr; Kr_int = Kr;
for (r0=0,r=segments_per_worker[dlsch->harq_processes[harq_pid]->C][worker_num-1]; r<dlsch->harq_processes[harq_pid]->C; r++,r0++) { for (r0=0,r=segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][worker_num-1]; r<dlsch->harq_processes[harq_pid]->C; r++,r0++) {
memset(dlsch->harq_processes[harq_pid]->d[r],0,(96+12+3+3*8448)*sizeof(uint8_t)); memset(dlsch->harq_processes[harq_pid]->d[r],0,(96+12+3+3*8448)*sizeof(uint8_t));
d_tmp[r0] = &dlsch->harq_processes[harq_pid]->c[r][0]; c_tmp[r0] = &dlsch->harq_processes[harq_pid]->c[r][0];
d_tmp[r0] = &dlsch->harq_processes[harq_pid]->d[r][96]; d_tmp[r0] = &dlsch->harq_processes[harq_pid]->d[r][96];
} }
...@@ -620,7 +624,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB, ...@@ -620,7 +624,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
stop_meas(te_stats); stop_meas(te_stats);
start_meas(i_stats); start_meas(i_stats);
for (r=segments_per_worker[dlsch->harq_processes[harq_pid]->C][worker_num-1]; r<dlsch->harq_processes[harq_pid]->C; r++) { for (r=segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][worker_num-1]; r<dlsch->harq_processes[harq_pid]->C; r++) {
dlsch->harq_processes[harq_pid]->RTC[r] = dlsch->harq_processes[harq_pid]->RTC[r] =
sub_block_interleaving_turbo((Kr_int), sub_block_interleaving_turbo((Kr_int),
&dlsch->harq_processes[harq_pid]->d[r][96], &dlsch->harq_processes[harq_pid]->d[r][96],
...@@ -653,7 +657,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB, ...@@ -653,7 +657,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
for (r=0,r_offset=0; r<dlsch->harq_processes[harq_pid]->C; r++) { for (r=0,r_offset=0; r<dlsch->harq_processes[harq_pid]->C; r++) {
// get information for E for the segments that are handled by the worker thread // get information for E for the segments that are handled by the worker thread
if (r<segments_per_worker[dlsch->harq_processes[harq_pid]->C][worker_num-1]) { if (r<segments_per_worker[dlsch->harq_processes[harq_pid]->C-1][worker_num-1]) {
int Nl=dlsch->harq_processes[harq_pid]->Nl; int Nl=dlsch->harq_processes[harq_pid]->Nl;
int Qm=dlsch->harq_processes[harq_pid]->Qm; int Qm=dlsch->harq_processes[harq_pid]->Qm;
int C = dlsch->harq_processes[harq_pid]->C; int C = dlsch->harq_processes[harq_pid]->C;
...@@ -728,6 +732,7 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB, ...@@ -728,6 +732,7 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB,
time_stats_t *i_stats) time_stats_t *i_stats)
{ {
int encoding_return = 0; int encoding_return = 0;
/*
unsigned int L,C,B; unsigned int L,C,B;
B = dlsch->harq_processes[dlsch->harq_ids[subframe]]->B; B = dlsch->harq_processes[dlsch->harq_ids[subframe]]->B;
if(B<=8448) if(B<=8448)
...@@ -744,8 +749,8 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB, ...@@ -744,8 +749,8 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB,
C = C+1; C = C+1;
} }
} }
/* */
if(C >= 8 && get_nprocs()>=8 && codingw)//one main three worker //if(C >= 8 && get_nprocs()>=8 && codingw)//one main three worker
{ {
encoding_return = encoding_return =
dlsch_encoding_2threads(eNB, dlsch_encoding_2threads(eNB,
...@@ -763,7 +768,7 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB, ...@@ -763,7 +768,7 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB,
i_stats, i_stats,
3); 3);
} }
*/ /*
if(C >= 7 && get_nprocs()>=6 && codingw)//one main two worker if(C >= 7 && get_nprocs()>=6 && codingw)//one main two worker
{ {
encoding_return = encoding_return =
...@@ -802,6 +807,7 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB, ...@@ -802,6 +807,7 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB,
} }
else else
{ {
printf("what? C=%d, nproc=%d, codingw=%d\n",C,get_nprocs(),codingw);
encoding_return = encoding_return =
dlsch_encoding(eNB, dlsch_encoding(eNB,
a, a,
...@@ -813,6 +819,7 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB, ...@@ -813,6 +819,7 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB,
te_stats, te_stats,
i_stats); i_stats);
} }
*/
return encoding_return; return encoding_return;
} }
...@@ -1033,6 +1040,7 @@ int dlsch_encoding(PHY_VARS_eNB *eNB, ...@@ -1033,6 +1040,7 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
// Fill in the "e"-sequence from 36-212, V8.6 2009-03, p. 16-17 (for each "e") and concatenate the // Fill in the "e"-sequence from 36-212, V8.6 2009-03, p. 16-17 (for each "e") and concatenate the
// outputs for each code segment, see Section 5.1.5 p.20 // outputs for each code segment, see Section 5.1.5 p.20
start_meas(rm_stats);
for (r=0; r<dlsch->harq_processes[harq_pid]->C; r++) { for (r=0; r<dlsch->harq_processes[harq_pid]->C; r++) {
#ifdef DEBUG_DLSCH_CODING #ifdef DEBUG_DLSCH_CODING
printf("Rate Matching, Code segment %d (coded bits (G) %d,unpunctured/repeated bits per code segment %d,mod_order %d, nb_rb %d)...\n", printf("Rate Matching, Code segment %d (coded bits (G) %d,unpunctured/repeated bits per code segment %d,mod_order %d, nb_rb %d)...\n",
...@@ -1042,7 +1050,6 @@ int dlsch_encoding(PHY_VARS_eNB *eNB, ...@@ -1042,7 +1050,6 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
mod_order,nb_rb); mod_order,nb_rb);
#endif #endif
start_meas(rm_stats);
#ifdef DEBUG_DLSCH_CODING #ifdef DEBUG_DLSCH_CODING
printf("rvidx in encoding = %d\n", dlsch->harq_processes[harq_pid]->rvidx); printf("rvidx in encoding = %d\n", dlsch->harq_processes[harq_pid]->rvidx);
#endif #endif
...@@ -1060,7 +1067,6 @@ int dlsch_encoding(PHY_VARS_eNB *eNB, ...@@ -1060,7 +1067,6 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
r, r,
nb_rb); nb_rb);
// m); // r // m); // r
stop_meas(rm_stats);
#ifdef DEBUG_DLSCH_CODING #ifdef DEBUG_DLSCH_CODING
if (r==dlsch->harq_processes[harq_pid]->C-1) if (r==dlsch->harq_processes[harq_pid]->C-1)
...@@ -1068,6 +1074,7 @@ int dlsch_encoding(PHY_VARS_eNB *eNB, ...@@ -1068,6 +1074,7 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
#endif #endif
} }
stop_meas(rm_stats);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_OUT); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_OUT);
......
...@@ -734,7 +734,11 @@ static void* process_stats_thread(void* param) { ...@@ -734,7 +734,11 @@ static void* process_stats_thread(void* param) {
{ {
print_meas(&eNB->dlsch_turbo_encoding_preperation_stats,"dlsch_coding_prepare",NULL,NULL); print_meas(&eNB->dlsch_turbo_encoding_preperation_stats,"dlsch_coding_prepare",NULL,NULL);
print_meas(&eNB->dlsch_turbo_encoding_segmentation_stats,"dlsch_segmentation",NULL,NULL); print_meas(&eNB->dlsch_turbo_encoding_segmentation_stats,"dlsch_segmentation",NULL,NULL);
print_meas(&eNB->dlsch_turbo_encoding_stats,"turbo_encoding",NULL,NULL);
print_meas(&eNB->dlsch_rate_matching_stats,"rate_matching",NULL,NULL);
print_meas(&eNB->dlsch_interleaving_stats,"interleaving",NULL,NULL);
print_meas(&eNB->dlsch_encoding_stats,"dlsch_encoding",NULL,NULL); print_meas(&eNB->dlsch_encoding_stats,"dlsch_encoding",NULL,NULL);
print_meas(&eNB->dlsch_scrambling_stats,"dlsch_scrambling",NULL,NULL);
print_meas(&eNB->dlsch_turbo_encoding_signal_stats,"coding_signal",NULL,NULL); print_meas(&eNB->dlsch_turbo_encoding_signal_stats,"coding_signal",NULL,NULL);
print_meas(&eNB->dlsch_turbo_encoding_main_stats,"coding_main",NULL,NULL); print_meas(&eNB->dlsch_turbo_encoding_main_stats,"coding_main",NULL,NULL);
print_meas(&eNB->dlsch_turbo_encoding_waiting_stats,"coding_wait",NULL,NULL); print_meas(&eNB->dlsch_turbo_encoding_waiting_stats,"coding_wait",NULL,NULL);
......
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