Rewrite NR UE PHY cpu measurements
This commit is contained in:
@@ -62,18 +62,20 @@ void printDistribution(time_stats_t *ptr, varArray_t *sortedList, char *txt) {
|
||||
}
|
||||
|
||||
void printStatIndent(time_stats_t *ptr, char *txt) {
|
||||
printf("|__ %-38s %6.2f us (%3d trials)\n",
|
||||
printf("|__ %-38s %6.2f us (%3d trials)\t\t(%6.2f total [ms])\n",
|
||||
txt,
|
||||
ptr->trials?inMicroS(ptr->diff/ptr->trials):0,
|
||||
ptr->trials);
|
||||
ptr->trials,
|
||||
ptr->trials?inMicroS(ptr->diff)/1000:0);
|
||||
}
|
||||
|
||||
void printStatIndent2(time_stats_t *ptr, char *txt) {
|
||||
double timeBase=1/(1000*get_cpu_freq_GHz());
|
||||
printf(" |__ %-34s %6.2f us (%3d trials)\n",
|
||||
printf(" |__ %-34s %6.2f us (%3d trials)\t\t(%6.2f total [ms])\n",
|
||||
txt,
|
||||
ptr->trials?((double)ptr->diff)/ptr->trials*timeBase:0,
|
||||
ptr->trials);
|
||||
ptr->trials,
|
||||
ptr->trials?inMicroS(ptr->diff)/1000:0);
|
||||
}
|
||||
|
||||
void printStatIndent3(time_stats_t *ptr, char *txt) {
|
||||
|
||||
@@ -826,6 +826,7 @@ int main(int argc, char **argv)
|
||||
UE->frame_parms.nb_antennas_rx = n_rx;
|
||||
UE->frame_parms.nb_antenna_ports_gNB = n_tx;
|
||||
UE->max_ldpc_iterations = max_ldpc_iterations;
|
||||
init_nr_ue_phy_cpu_stats(&UE->phy_cpu_stats);
|
||||
|
||||
if (run_initial_sync==1)
|
||||
UE->is_synchronized = 0;
|
||||
@@ -1244,36 +1245,10 @@ int main(int argc, char **argv)
|
||||
printStatIndent2(&gNB->dlsch_resource_mapping_stats, "DLSCH Resource Mapping time");
|
||||
printStatIndent2(&gNB->dlsch_precoding_stats,"DLSCH Layer Precoding time");
|
||||
|
||||
printf("\nUE RX function statistics (per %d us slot)\n",1000>>*scc->ssbSubcarrierSpacing);
|
||||
/*
|
||||
printDistribution(&phy_proc_rx_tot, table_rx,"Total PHY proc rx");
|
||||
printStatIndent(&ue_front_end_tot,"Front end processing");
|
||||
printStatIndent(&dlsch_llr_tot,"rx_pdsch processing");
|
||||
printStatIndent2(&pdsch_procedures_tot,"pdsch processing");
|
||||
printStatIndent2(&dlsch_procedures_tot,"dlsch processing");
|
||||
printStatIndent2(&UE->crnti_procedures_stats,"C-RNTI processing");
|
||||
printStatIndent(&UE->ofdm_demod_stats,"ofdm demodulation");
|
||||
printStatIndent(&UE->dlsch_channel_estimation_stats,"DLSCH channel estimation time");
|
||||
printStatIndent(&UE->dlsch_freq_offset_estimation_stats,"DLSCH frequency offset estimation time");
|
||||
printStatIndent(&dlsch_decoding_tot, "DLSCH Decoding time ");
|
||||
printStatIndent(&UE->dlsch_unscrambling_stats,"DLSCH unscrambling time");
|
||||
printStatIndent(&UE->dlsch_rate_unmatching_stats,"DLSCH Rate Unmatching");
|
||||
printf("|__ DLSCH Turbo Decoding(%d bits), avg iterations: %.1f %.2f us (%d cycles, %d trials)\n",
|
||||
UE->dlsch[0][0]->harq_processes[0]->Cminus ?
|
||||
UE->dlsch[0][0]->harq_processes[0]->Kminus :
|
||||
UE->dlsch[0][0]->harq_processes[0]->Kplus,
|
||||
UE->dlsch_tc_intl1_stats.trials/(double)UE->dlsch_tc_init_stats.trials,
|
||||
(double)UE->dlsch_turbo_decoding_stats.diff/UE->dlsch_turbo_decoding_stats.trials*timeBase,
|
||||
(int)((double)UE->dlsch_turbo_decoding_stats.diff/UE->dlsch_turbo_decoding_stats.trials),
|
||||
UE->dlsch_turbo_decoding_stats.trials);
|
||||
printStatIndent2(&UE->dlsch_tc_init_stats,"init");
|
||||
printStatIndent2(&UE->dlsch_tc_alpha_stats,"alpha");
|
||||
printStatIndent2(&UE->dlsch_tc_beta_stats,"beta");
|
||||
printStatIndent2(&UE->dlsch_tc_gamma_stats,"gamma");
|
||||
printStatIndent2(&UE->dlsch_tc_ext_stats,"ext");
|
||||
printStatIndent2(&UE->dlsch_tc_intl1_stats,"turbo internal interleaver");
|
||||
printStatIndent2(&UE->dlsch_tc_intl2_stats,"intl2+HardDecode+CRC");
|
||||
*/
|
||||
printf("\nUE function statistics (per %d us slot)\n", 1000 >> *scc->ssbSubcarrierSpacing);
|
||||
for (int i = RX_PDSCH_STATS; i <= DLSCH_PROCEDURES_STATS; i++) {
|
||||
printStatIndent(&UE->phy_cpu_stats.cpu_time_stats[i], UE->phy_cpu_stats.cpu_time_stats[i].meas_name);
|
||||
}
|
||||
}
|
||||
|
||||
if (n_trials == 1) {
|
||||
|
||||
@@ -955,10 +955,6 @@ int main(int argc, char *argv[])
|
||||
reset_meas(&gNB->rx_pusch_symbol_processing_stats);
|
||||
reset_meas(&gNB->ulsch_decoding_stats);
|
||||
reset_meas(&gNB->ulsch_channel_estimation_stats);
|
||||
reset_meas(&UE->ulsch_ldpc_encoding_stats);
|
||||
reset_meas(&UE->ulsch_rate_matching_stats);
|
||||
reset_meas(&UE->ulsch_interleaving_stats);
|
||||
reset_meas(&UE->ulsch_encoding_stats);
|
||||
reset_meas(&gNB->rx_srs_stats);
|
||||
reset_meas(&gNB->generate_srs_stats);
|
||||
reset_meas(&gNB->get_srs_signal_stats);
|
||||
@@ -967,6 +963,7 @@ int main(int argc, char *argv[])
|
||||
reset_meas(&gNB->srs_report_tlv_stats);
|
||||
reset_meas(&gNB->srs_beam_report_stats);
|
||||
reset_meas(&gNB->srs_iq_matrix_stats);
|
||||
init_nr_ue_phy_cpu_stats(&UE->phy_cpu_stats);
|
||||
|
||||
uint32_t errors_scrambling[16] = {0};
|
||||
int n_errors[16] = {0};
|
||||
@@ -1580,11 +1577,9 @@ int main(int argc, char *argv[])
|
||||
printStatIndent(&gNB->ulsch_decoding_stats,"ULSCH total decoding time");
|
||||
|
||||
printf("\nUE TX\n");
|
||||
printStatIndent(&UE->ulsch_encoding_stats,"ULSCH total encoding time");
|
||||
printStatIndent2(&UE->ulsch_segmentation_stats,"ULSCH segmentation time");
|
||||
printStatIndent2(&UE->ulsch_ldpc_encoding_stats,"ULSCH LDPC encoder time");
|
||||
printStatIndent2(&UE->ulsch_rate_matching_stats,"ULSCH rate-matching time");
|
||||
printStatIndent2(&UE->ulsch_interleaving_stats,"ULSCH interleaving time");
|
||||
for (int i = PHY_PROC_TX; i <= ULSCH_ENCODING_STATS; i++) {
|
||||
printStatIndent(&UE->phy_cpu_stats.cpu_time_stats[i], UE->phy_cpu_stats.cpu_time_stats[i].meas_name);
|
||||
}
|
||||
printStatIndent(&gNB->rx_srs_stats,"RX SRS time");
|
||||
printStatIndent2(&gNB->generate_srs_stats,"Generate SRS sequence time");
|
||||
printStatIndent2(&gNB->get_srs_signal_stats,"Get SRS signal time");
|
||||
|
||||
Reference in New Issue
Block a user