fix memory issues
This commit is contained in:
@@ -1324,7 +1324,7 @@
|
|||||||
-n100 -s5 -T 2 1 2 -U 2 0 2
|
-n100 -s5 -T 2 1 2 -U 2 0 2
|
||||||
-n100 -s5 -T 2 2 2 -U 2 1 2
|
-n100 -s5 -T 2 2 2 -U 2 1 2
|
||||||
-n100 -s5 -a4 -b8 -T 2 1 2 -U 2 1 3
|
-n100 -s5 -a4 -b8 -T 2 1 2 -U 2 1 3
|
||||||
-n100 -s5 -Z
|
-n100 -Z -s5
|
||||||
-n100 -s5 -Z -r75
|
-n100 -s5 -Z -r75
|
||||||
-n50 -s5 -Z -r216 -R217
|
-n50 -s5 -Z -r216 -R217
|
||||||
-n50 -s5 -Z -r270 -R273
|
-n50 -s5 -Z -r270 -R273
|
||||||
|
|||||||
@@ -416,9 +416,15 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
|
|||||||
|
|
||||||
NR_gNB_PUSCH** pusch_vars = gNB->pusch_vars;
|
NR_gNB_PUSCH** pusch_vars = gNB->pusch_vars;
|
||||||
for (int ULSCH_id=0; ULSCH_id<gNB->number_of_nr_ulsch_max; ULSCH_id++) {
|
for (int ULSCH_id=0; ULSCH_id<gNB->number_of_nr_ulsch_max; ULSCH_id++) {
|
||||||
|
for (int i=0; i< max_ul_mimo_layers; i++)
|
||||||
|
free_and_zero(pusch_vars[ULSCH_id]->llr_layers[i]);
|
||||||
for (int i = 0; i < Prx; i++) {
|
for (int i = 0; i < Prx; i++) {
|
||||||
free_and_zero(pusch_vars[ULSCH_id]->rxdataF_ext[i]);
|
free_and_zero(pusch_vars[ULSCH_id]->rxdataF_ext[i]);
|
||||||
free_and_zero(pusch_vars[ULSCH_id]->rxdataF_ext2[i]);
|
free_and_zero(pusch_vars[ULSCH_id]->rxdataF_ext2[i]);
|
||||||
|
for (int j=0; j< max_ul_mimo_layers; j++) {
|
||||||
|
for (int k=0; k<max_ul_mimo_layers; k++)
|
||||||
|
free_and_zero(pusch_vars[ULSCH_id]->rho[i][j*max_ul_mimo_layers+k]);
|
||||||
|
}
|
||||||
free_and_zero(pusch_vars[ULSCH_id]->rho[i]);
|
free_and_zero(pusch_vars[ULSCH_id]->rho[i]);
|
||||||
}
|
}
|
||||||
for (int i = 0; i < n_buf; i++) {
|
for (int i = 0; i < n_buf; i++) {
|
||||||
@@ -434,6 +440,7 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
|
|||||||
free_and_zero(pusch_vars[ULSCH_id]->ul_ch_mag[i]);
|
free_and_zero(pusch_vars[ULSCH_id]->ul_ch_mag[i]);
|
||||||
free_and_zero(pusch_vars[ULSCH_id]->ul_ch_magb[i]);
|
free_and_zero(pusch_vars[ULSCH_id]->ul_ch_magb[i]);
|
||||||
}
|
}
|
||||||
|
free_and_zero(pusch_vars[ULSCH_id]->llr_layers);
|
||||||
free_and_zero(pusch_vars[ULSCH_id]->rxdataF_ext);
|
free_and_zero(pusch_vars[ULSCH_id]->rxdataF_ext);
|
||||||
free_and_zero(pusch_vars[ULSCH_id]->rxdataF_ext2);
|
free_and_zero(pusch_vars[ULSCH_id]->rxdataF_ext2);
|
||||||
free_and_zero(pusch_vars[ULSCH_id]->ul_ch_estimates);
|
free_and_zero(pusch_vars[ULSCH_id]->ul_ch_estimates);
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ void nr_codeword_scrambling(uint8_t *in,
|
|||||||
((uint16_t*)&in32)[0] = _mm_movemask_epi8(_mm_slli_epi16(in128[0],7));
|
((uint16_t*)&in32)[0] = _mm_movemask_epi8(_mm_slli_epi16(in128[0],7));
|
||||||
((uint16_t*)&in32)[1] = _mm_movemask_epi8(_mm_slli_epi16(in128[1],7));
|
((uint16_t*)&in32)[1] = _mm_movemask_epi8(_mm_slli_epi16(in128[1],7));
|
||||||
out[i]=(in32^s);
|
out[i]=(in32^s);
|
||||||
|
LOG_D(PHY,"in[%d] %x => %x\n",i,in32,out[i]);
|
||||||
s=lte_gold_generic(&x1, &x2, 0);
|
s=lte_gold_generic(&x1, &x2, 0);
|
||||||
}
|
}
|
||||||
//#elsif defined(__arm__) || defined(__aarch64)
|
//#elsif defined(__arm__) || defined(__aarch64)
|
||||||
|
|||||||
@@ -114,7 +114,6 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
|
|
||||||
LOG_D(PHY,"nr_ue_ulsch_procedures hard_id %d %d.%d\n",harq_pid,frame,slot);
|
LOG_D(PHY,"nr_ue_ulsch_procedures hard_id %d %d.%d\n",harq_pid,frame,slot);
|
||||||
|
|
||||||
uint32_t available_bits;
|
|
||||||
int8_t Wf[2], Wt[2];
|
int8_t Wf[2], Wt[2];
|
||||||
int l_prime[2], delta;
|
int l_prime[2], delta;
|
||||||
uint8_t nb_dmrs_re_per_rb;
|
uint8_t nb_dmrs_re_per_rb;
|
||||||
@@ -183,7 +182,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
/////////////////////////ULSCH scrambling/////////////////////////
|
/////////////////////////ULSCH scrambling/////////////////////////
|
||||||
///////////
|
///////////
|
||||||
|
|
||||||
available_bits = G;
|
uint32_t available_bits = G;
|
||||||
uint32_t scrambled_output[(available_bits>>5)+1];
|
uint32_t scrambled_output[(available_bits>>5)+1];
|
||||||
memset(scrambled_output, 0, ((available_bits>>5)+1)*sizeof(uint32_t));
|
memset(scrambled_output, 0, ((available_bits>>5)+1)*sizeof(uint32_t));
|
||||||
|
|
||||||
@@ -200,7 +199,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
/////////////////////////ULSCH modulation/////////////////////////
|
/////////////////////////ULSCH modulation/////////////////////////
|
||||||
///////////
|
///////////
|
||||||
|
|
||||||
int max_num_re = number_of_symbols*nb_rb*NR_NB_SC_PER_RB;
|
int max_num_re = Nl*number_of_symbols*nb_rb*NR_NB_SC_PER_RB;
|
||||||
int32_t d_mod[max_num_re] __attribute__ ((aligned(16)));
|
int32_t d_mod[max_num_re] __attribute__ ((aligned(16)));
|
||||||
|
|
||||||
nr_modulation(scrambled_output, // assume one codeword for the moment
|
nr_modulation(scrambled_output, // assume one codeword for the moment
|
||||||
@@ -340,7 +339,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
/////////////////////////ULSCH RE mapping/////////////////////////
|
/////////////////////////ULSCH RE mapping/////////////////////////
|
||||||
///////////
|
///////////
|
||||||
|
|
||||||
int encoded_length = frame_parms->N_RB_UL*number_of_symbols*NR_NB_SC_PER_RB*mod_order*Nl;
|
int encoded_length = frame_parms->N_RB_UL*14*NR_NB_SC_PER_RB*mod_order*Nl;
|
||||||
int16_t **tx_precoding = (int16_t **)malloc16_clear(Nl*sizeof(int16_t *));
|
int16_t **tx_precoding = (int16_t **)malloc16_clear(Nl*sizeof(int16_t *));
|
||||||
for (int nl=0; nl<Nl; nl++)
|
for (int nl=0; nl<Nl; nl++)
|
||||||
tx_precoding[nl] = (int16_t *)malloc16_clear((encoded_length<<1)*sizeof(int16_t));
|
tx_precoding[nl] = (int16_t *)malloc16_clear((encoded_length<<1)*sizeof(int16_t));
|
||||||
|
|||||||
@@ -1320,7 +1320,7 @@ int main(int argc, char **argv)
|
|||||||
pusch_pdu->ul_dmrs_symb_pos);
|
pusch_pdu->ul_dmrs_symb_pos);
|
||||||
ptrsSymbPerSlot = get_ptrs_symbols_in_slot(ptrsSymPos, pusch_pdu->start_symbol_index, pusch_pdu->nr_of_symbols);
|
ptrsSymbPerSlot = get_ptrs_symbols_in_slot(ptrsSymPos, pusch_pdu->start_symbol_index, pusch_pdu->nr_of_symbols);
|
||||||
ptrsRePerSymb = ((pusch_pdu->rb_size + ptrs_freq_density - 1)/ptrs_freq_density);
|
ptrsRePerSymb = ((pusch_pdu->rb_size + ptrs_freq_density - 1)/ptrs_freq_density);
|
||||||
printf("[ULSIM] PTRS Symbols in a slot: %2u, RE per Symbol: %3u, RE in a slot %4d\n", ptrsSymbPerSlot,ptrsRePerSymb, ptrsSymbPerSlot*ptrsRePerSymb );
|
LOG_D(PHY,"[ULSIM] PTRS Symbols in a slot: %2u, RE per Symbol: %3u, RE in a slot %4d\n", ptrsSymbPerSlot,ptrsRePerSymb, ptrsSymbPerSlot*ptrsRePerSymb );
|
||||||
}
|
}
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user