Merge remote-tracking branch 'origin/nr_ldpc_dlsch_decoding_parallel' into integration_2021_wk48_d
This commit is contained in:
@@ -778,12 +778,6 @@ void init_NR_UE_threads(int nb_inst) {
|
|||||||
|
|
||||||
LOG_I(PHY,"Intializing UE Threads for instance %d (%p,%p)...\n",inst,PHY_vars_UE_g[inst],PHY_vars_UE_g[inst][0]);
|
LOG_I(PHY,"Intializing UE Threads for instance %d (%p,%p)...\n",inst,PHY_vars_UE_g[inst],PHY_vars_UE_g[inst][0]);
|
||||||
threadCreate(&threads[inst], UE_thread, (void *)UE, "UEthread", -1, OAI_PRIORITY_RT_MAX);
|
threadCreate(&threads[inst], UE_thread, (void *)UE, "UEthread", -1, OAI_PRIORITY_RT_MAX);
|
||||||
|
|
||||||
if(get_nrUE_params()->nr_dlsch_parallel)
|
|
||||||
{
|
|
||||||
pthread_t dlsch0_threads;
|
|
||||||
threadCreate(&dlsch0_threads, dlsch_thread, (void *)UE, "DLthread", -1, OAI_PRIORITY_RT_MAX-1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1087,22 +1087,6 @@ uint8_t nr_ue_pusch_common_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
NR_DL_FRAME_PARMS *frame_parms,
|
NR_DL_FRAME_PARMS *frame_parms,
|
||||||
uint8_t Nl);
|
uint8_t Nl);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
|
|
||||||
UE_nr_rxtx_proc_t *proc,
|
|
||||||
int eNB_id,
|
|
||||||
short *dlsch_llr,
|
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
|
||||||
NR_UE_DLSCH_t *dlsch,
|
|
||||||
NR_DL_UE_HARQ_t *harq_process,
|
|
||||||
uint32_t frame,
|
|
||||||
uint16_t nb_symb_sch,
|
|
||||||
uint8_t nr_slot_rx,
|
|
||||||
uint8_t harq_pid,
|
|
||||||
uint8_t is_crnti,
|
|
||||||
uint8_t llr8_flag);
|
|
||||||
|
|
||||||
void *nr_dlsch_decoding_2thread0(void *arg);
|
void *nr_dlsch_decoding_2thread0(void *arg);
|
||||||
|
|
||||||
void *nr_dlsch_decoding_2thread1(void *arg);
|
void *nr_dlsch_decoding_2thread1(void *arg);
|
||||||
@@ -1750,8 +1734,6 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
|||||||
int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, uint8_t subframe);
|
int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, uint8_t subframe);
|
||||||
|
|
||||||
void dump_nrdlsch(PHY_VARS_NR_UE *ue,uint8_t gNB_id,uint8_t nr_slot_rx,unsigned int *coded_bits_per_codeword,int round, unsigned char harq_pid);
|
void dump_nrdlsch(PHY_VARS_NR_UE *ue,uint8_t gNB_id,uint8_t nr_slot_rx,unsigned int *coded_bits_per_codeword,int round, unsigned char harq_pid);
|
||||||
|
|
||||||
void *dlsch_thread(void *arg);
|
|
||||||
/**@}*/
|
/**@}*/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -1078,5 +1078,27 @@ typedef struct nr_rxtx_thread_data_s {
|
|||||||
notifiedFIFO_t txFifo;
|
notifiedFIFO_t txFifo;
|
||||||
} nr_rxtx_thread_data_t;
|
} nr_rxtx_thread_data_t;
|
||||||
|
|
||||||
|
typedef struct LDPCDecode_ue_s {
|
||||||
|
PHY_VARS_NR_UE *phy_vars_ue;
|
||||||
|
NR_DL_UE_HARQ_t *harq_process;
|
||||||
|
t_nrLDPC_dec_params decoderParms;
|
||||||
|
NR_UE_DLSCH_t *dlsch;
|
||||||
|
short* dlsch_llr;
|
||||||
|
int dlsch_id;
|
||||||
|
int harq_pid;
|
||||||
|
int rv_index;
|
||||||
|
int A;
|
||||||
|
int E;
|
||||||
|
int Kc;
|
||||||
|
int Qm;
|
||||||
|
int Kr_bytes;
|
||||||
|
int nbSegments;
|
||||||
|
int segment_r;
|
||||||
|
int r_offset;
|
||||||
|
int offset;
|
||||||
|
int Tbslbrm;
|
||||||
|
int decodeIterations;
|
||||||
|
} ldpcDecode_ue_t;
|
||||||
|
|
||||||
#include "SIMULATION/ETH_TRANSPORT/defs.h"
|
#include "SIMULATION/ETH_TRANSPORT/defs.h"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -981,37 +981,23 @@ bool nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
start_meas(&ue->dlsch_decoding_stats[proc->thread_id]);
|
start_meas(&ue->dlsch_decoding_stats[proc->thread_id]);
|
||||||
|
|
||||||
|
ret = nr_dlsch_decoding(ue,
|
||||||
|
proc,
|
||||||
|
gNB_id,
|
||||||
|
pdsch_vars->llr[0],
|
||||||
|
&ue->frame_parms,
|
||||||
|
dlsch0,
|
||||||
|
dlsch0->harq_processes[harq_pid],
|
||||||
|
frame_rx,
|
||||||
|
nb_symb_sch,
|
||||||
|
nr_slot_rx,
|
||||||
|
harq_pid,
|
||||||
|
pdsch==PDSCH?1:0,
|
||||||
|
dlsch0->harq_processes[harq_pid]->TBS>256?1:0);
|
||||||
if( dlsch_parallel) {
|
if( dlsch_parallel) {
|
||||||
ret = nr_dlsch_decoding_mthread(ue,
|
|
||||||
proc,
|
|
||||||
gNB_id,
|
|
||||||
pdsch_vars->llr[0],
|
|
||||||
&ue->frame_parms,
|
|
||||||
dlsch0,
|
|
||||||
dlsch0->harq_processes[harq_pid],
|
|
||||||
frame_rx,
|
|
||||||
nb_symb_sch,
|
|
||||||
nr_slot_rx,
|
|
||||||
harq_pid,
|
|
||||||
pdsch==PDSCH?1:0,
|
|
||||||
dlsch0->harq_processes[harq_pid]->TBS>256?1:0);
|
|
||||||
|
|
||||||
LOG_T(PHY,"dlsch decoding is parallelized, ret = %d\n", ret);
|
LOG_T(PHY,"dlsch decoding is parallelized, ret = %d\n", ret);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ret = nr_dlsch_decoding(ue,
|
|
||||||
proc,
|
|
||||||
gNB_id,
|
|
||||||
pdsch_vars->llr[0],
|
|
||||||
&ue->frame_parms,
|
|
||||||
dlsch0,
|
|
||||||
dlsch0->harq_processes[harq_pid],
|
|
||||||
frame_rx,
|
|
||||||
nb_symb_sch,
|
|
||||||
nr_slot_rx,
|
|
||||||
harq_pid,
|
|
||||||
pdsch==PDSCH?1:0,
|
|
||||||
dlsch0->harq_processes[harq_pid]->TBS>256?1:0);
|
|
||||||
LOG_T(PHY,"Sequential dlsch decoding , ret = %d\n", ret);
|
LOG_T(PHY,"Sequential dlsch decoding , ret = %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1083,36 +1069,24 @@ bool nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
|||||||
start_meas(&ue->dlsch_decoding_stats[proc->thread_id]);
|
start_meas(&ue->dlsch_decoding_stats[proc->thread_id]);
|
||||||
|
|
||||||
|
|
||||||
|
ret1 = nr_dlsch_decoding(ue,
|
||||||
|
proc,
|
||||||
|
gNB_id,
|
||||||
|
pdsch_vars->llr[1],
|
||||||
|
&ue->frame_parms,
|
||||||
|
dlsch1,
|
||||||
|
dlsch1->harq_processes[harq_pid],
|
||||||
|
frame_rx,
|
||||||
|
nb_symb_sch,
|
||||||
|
nr_slot_rx,
|
||||||
|
harq_pid,
|
||||||
|
pdsch==PDSCH?1:0,//proc->decoder_switch,
|
||||||
|
dlsch1->harq_processes[harq_pid]->TBS>256?1:0);
|
||||||
if(dlsch_parallel) {
|
if(dlsch_parallel) {
|
||||||
ret1 = nr_dlsch_decoding_mthread(ue,
|
|
||||||
proc,
|
|
||||||
gNB_id,
|
|
||||||
pdsch_vars->llr[1],
|
|
||||||
&ue->frame_parms,
|
|
||||||
dlsch1,
|
|
||||||
dlsch1->harq_processes[harq_pid],
|
|
||||||
frame_rx,
|
|
||||||
nb_symb_sch,
|
|
||||||
nr_slot_rx,
|
|
||||||
harq_pid,
|
|
||||||
pdsch==PDSCH?1:0,
|
|
||||||
dlsch1->harq_processes[harq_pid]->TBS>256?1:0);
|
|
||||||
LOG_T(PHY,"CW dlsch decoding is parallelized, ret1 = %d\n", ret1);
|
LOG_T(PHY,"CW dlsch decoding is parallelized, ret1 = %d\n", ret1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ret1 = nr_dlsch_decoding(ue,
|
|
||||||
proc,
|
|
||||||
gNB_id,
|
|
||||||
pdsch_vars->llr[1],
|
|
||||||
&ue->frame_parms,
|
|
||||||
dlsch1,
|
|
||||||
dlsch1->harq_processes[harq_pid],
|
|
||||||
frame_rx,
|
|
||||||
nb_symb_sch,
|
|
||||||
nr_slot_rx,
|
|
||||||
harq_pid,
|
|
||||||
pdsch==PDSCH?1:0,//proc->decoder_switch,
|
|
||||||
dlsch1->harq_processes[harq_pid]->TBS>256?1:0);
|
|
||||||
LOG_T(PHY,"CWW sequential dlsch decoding, ret1 = %d\n", ret1);
|
LOG_T(PHY,"CWW sequential dlsch decoding, ret1 = %d\n", ret1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -109,6 +109,7 @@ int main(int argc, char **argv)
|
|||||||
int ret;
|
int ret;
|
||||||
//int run_initial_sync=0;
|
//int run_initial_sync=0;
|
||||||
int loglvl = OAILOG_WARNING;
|
int loglvl = OAILOG_WARNING;
|
||||||
|
uint8_t dlsch_threads = 0;
|
||||||
float target_error_rate = 0.01;
|
float target_error_rate = 0.01;
|
||||||
uint64_t SSB_positions=0x01;
|
uint64_t SSB_positions=0x01;
|
||||||
uint16_t nb_symb_sch = 12;
|
uint16_t nb_symb_sch = 12;
|
||||||
@@ -138,9 +139,9 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
break;*/
|
break;*/
|
||||||
|
|
||||||
/*case 'd':
|
case 'd':
|
||||||
frame_type = 1;
|
dlsch_threads = atoi(optarg);
|
||||||
break;*/
|
break;
|
||||||
|
|
||||||
case 'g':
|
case 'g':
|
||||||
switch ((char) *optarg) {
|
switch ((char) *optarg) {
|
||||||
@@ -320,6 +321,7 @@ int main(int argc, char **argv)
|
|||||||
//printf("-C Generate Calibration information for Abstraction (effective SNR adjustment to remove Pe bias w.r.t. AWGN)\n");
|
//printf("-C Generate Calibration information for Abstraction (effective SNR adjustment to remove Pe bias w.r.t. AWGN)\n");
|
||||||
//printf("-f Output filename (.txt format) for Pe/SNR results\n");
|
//printf("-f Output filename (.txt format) for Pe/SNR results\n");
|
||||||
printf("-F Input filename (.txt format) for RX conformance testing\n");
|
printf("-F Input filename (.txt format) for RX conformance testing\n");
|
||||||
|
printf("-d number of dlsch threads, 0: no dlsch parallelization\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -331,6 +333,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
if (snr1set == 0)
|
if (snr1set == 0)
|
||||||
snr1 = snr0 + 10;
|
snr1 = snr0 + 10;
|
||||||
|
init_dlsch_tpool(dlsch_threads);
|
||||||
|
|
||||||
if (ouput_vcd)
|
if (ouput_vcd)
|
||||||
vcd_signal_dumper_init("/tmp/openair_dump_nr_dlschsim.vcd");
|
vcd_signal_dumper_init("/tmp/openair_dump_nr_dlschsim.vcd");
|
||||||
|
|||||||
@@ -688,7 +688,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
if (snr1set==0)
|
if (snr1set==0)
|
||||||
snr1 = snr0+10;
|
snr1 = snr0+10;
|
||||||
|
init_dlsch_tpool(dlsch_threads);
|
||||||
|
|
||||||
|
|
||||||
RC.gNB = (PHY_VARS_gNB**) malloc(sizeof(PHY_VARS_gNB *));
|
RC.gNB = (PHY_VARS_gNB**) malloc(sizeof(PHY_VARS_gNB *));
|
||||||
@@ -980,11 +980,7 @@ int main(int argc, char **argv)
|
|||||||
reset_meas(&msgDataTx->phy_proc_tx);
|
reset_meas(&msgDataTx->phy_proc_tx);
|
||||||
gNB->phy_proc_tx_0 = &msgDataTx->phy_proc_tx;
|
gNB->phy_proc_tx_0 = &msgDataTx->phy_proc_tx;
|
||||||
pushTpool(gNB->threadPool,msgL1Tx);
|
pushTpool(gNB->threadPool,msgL1Tx);
|
||||||
if (dlsch_threads ) {
|
|
||||||
init_dlsch_tpool(dlsch_threads);
|
|
||||||
pthread_t dlsch0_threads;
|
|
||||||
threadCreate(&dlsch0_threads, dlsch_thread, (void *)UE, "DLthread", -1, OAI_PRIORITY_RT_MAX-1);
|
|
||||||
}
|
|
||||||
for (SNR = snr0; SNR < snr1; SNR += .2) {
|
for (SNR = snr0; SNR < snr1; SNR += .2) {
|
||||||
|
|
||||||
varArray_t *table_tx=initVarArray(1000,sizeof(double));
|
varArray_t *table_tx=initVarArray(1000,sizeof(double));
|
||||||
|
|||||||
Reference in New Issue
Block a user