Parallelize the Compensation, LLR, layer de-mapping, and unscrambling with symbol
In this MR, we parallelize Rb extraction, Compensation, LLR, layer de-mapping, and unscrambling by symbol. This feature we develop on pusch-parallelization branch. I split this feature to this branch for a merge request
- Improve the performance of Rb extraction, Compensation, LLR, layer de-mapping, and unscrambling
- Run
nr_ulsim
with -C, when the number of threads equal to the symbol with data can get the most enhanced improvement - Modify the
nr_ulsim
performance output
The following is the performance between this MR version and the develop branch (2023.w37). In this MR version, PUSCH Symbol Processing includes the Rb extraction, Compensation, LLR, layer de-mapping, and unscrambling
QAM | develop (us) | MR (us) | improved (MR / develop) |
---|---|---|---|
QPSK | 810.26 | 164.69 | 20.32 % |
16QAM | 1134.06 | 199.58 | 17.60 % |
64QAM | 1253.03 | 217.01 | 17.32 % |
256QMA | 1215.6 | 240.02 | 19.75 % |
- QPSK
sudo ./nr_ulsim -P -U0,1,1,2 -R273 -r273 -z8 -n500 -b14 -C14 -m4
- SNR -2
- RX PUSCH Initialization time 37.36 us
- RX PUSCH Symbol Processing time 127.33 us
- Total: 164.69 us
- 16QAM
sudo ./nr_ulsim -P -U0,1,1,2 -R273 -r273 -z8 -n500 -b14 -C14 -m12 -s2
- SNR 2
- RX PUSCH Initialization time 51.81 us
- RX PUSCH Symbol Processing time 147.77 us
- Total: 199.58 us
- 64QAM
sudo ./nr_ulsim -P -U0,1,1,2 -R273 -r273 -z8 -n500 -b14 -C14 -m23 -s10
- SNR 10.4
- RX PUSCH Initialization time 58.37 us
- RX PUSCH Symbol Processing time 158.64 us
- Total: 217.01 us
- 256QAM
sudo ./nr_ulsim -P -U0,1,1,2 -R273 -r273 -z8 -n500 -b14 -C14 -m23 -q1 -s23
- SNR 20
- RX PUSCH Initialization time 70.75 us
- RX PUSCH Symbol Processing time 169.27 us
- Total: 240.02 us
——————————————————————————————————————————————————————————————————
- QPSK
sudo ./nr_ulsim -P -U0,1,1,2 -R273 -r273 -z8 -n500 -b14 -C14 -m4
- SNR -2
- ULSCH rbs extraction time 16.94 us (12 symbols)
- ULSCH channel compensation time 15.64 us (12 symbols)
- ULSCH mrc computation 29.52 us (12 symbols)
- ULSCH llr computation 2.63 us (12 symbols)
- ULSCH layer demapping 20.91 us
- ULSCH unscrambling 12.59 us
- Total: 810.26 us
- 16QAM
sudo ./nr_ulsim -P -U0,1,1,2 -R273 -r273 -z8 -n500 -b14 -C14 -m12 -s2
- SNR 2
- ULSCH rbs extraction time 17.16 us (12 symbols)
- ULSCH channel compensation time 46.61 us (12 symbols)
- ULSCH mrc computation 22.17 us (12 symbols)
- ULSCH llr computation 3.35 us (12 symbols)
- ULSCH layer demapping 38.12 us
- ULSCH unscrambling 24.46 us
- Total: 1134.06 us
- 64QAM
sudo ./nr_ulsim -P -U0,1,1,2 -R273 -r273 -z8 -n500 -b14 -C14 -m23 -s10
- SNR 10.2
- ULSCH rbs extraction time 17.37 us (12 symbols)
- ULSCH channel compensation time 48.05 us (12 symbols)
- ULSCH mrc computation 23.43 us (12 symbols)
- ULSCH llr computation 8.02 us (12 symbols)
- ULSCH layer demapping 53.05 us
- ULSCH unscrambling 37.54 us
- Total: 1253.03 us
- 256QAM
sudo ./nr_ulsim -P -U0,1,1,2 -R273 -r273 -z8 -n500 -b14 -C14 -m23 -q1 -s23
- SNR 20
- ULSCH rbs extraction time 17.34 us (12 symbols)
- ULSCH channel compensation time 47.86 us (12 symbols)
- ULSCH mrc computation 22.66 us (12 symbols)
- ULSCH llr computation 3.41 us (12 symbols)
- ULSCH layer demapping 71.68 us
- ULSCH unscrambling 48.68 us
- Total: 1215.6 us
Edited by Tsung Yu Chan