Merge remote-tracking branch 'origin/oai_ue_performance_v1' into integration_2026_w29
NR_PHY: Optimize layer demapping for PDSCH/PUSCH receiver performance (#286)
Optimizes layer de-mapping in the NR receiver path and refactors the
implementation into a common function shared by both the UE (PDSCH) and
gNB (PUSCH) receive paths.
Commit 1: [NR_UE_PDSCH] Optimize PDSCH layer de-mapping
Uses a switch with a LAYER_DEMAPPING(MO) macro for modulation orders 2,
4, 6, and 8. Since the copy size is now known at compile time, the
compiler can replace memcpy calls with inline fixed-size vector stores.
Commit 2: [NR_PHY] Common layer de-mapping implementation
Extract a common nr_layer_demapping() function for both UE and gNB.
Update the UE and gNB receive paths to use the shared implementation,
reducing code duplication while bringing the same optimization to the
gNB PUSCH path.
With
./nr_dlsim -s30 -b106 -R106 -n100 -e25 -x2 -y2 -z2 -P
i.e. 64 QAM, 2 layers case, the layer demapping compute time reduces by ~35x times.
Develop:
|__ DLSCH_CHANNEL_COMPENSATION_STATS 3.03 us (1300 trials) ( 3.94 total [ms])
|__ DLSCH_LLR_STATS 17.54 us (100 trials) ( 1.75 total [ms])
|__ DLSCH_LAYER_DEMAPPING 571.11 us (100 trials) ( 57.11 total [ms])
Post-optimization:
|__ DLSCH_CHANNEL_COMPENSATION_STATS 2.67 us (1300 trials) ( 3.47 total [ms])
|__ DLSCH_LLR_STATS 16.50 us (100 trials) ( 1.65 total [ms])
|__ DLSCH_LAYER_DEMAPPING 16.14 us (100 trials) ( 1.61 total [ms])
Mod 2 Layers (µs) 3 Layers (µs) 4 Layers (µs)
develop PB speedup develop PB speedup develop PB speedup
64 QAM 571.11 16.14 35.39x 649.16 19.92 32.59x 953.22 30.00 31.77x
16 QAM 523.60 8.35 62.71x 651.99 13.39 48.69x 844.49 14.67 57.57x
QPSK 32.43 8.09 4.01x 35.17 9.21 3.82x 63.64 11.44 5.56x
Reviewed-By: Rakesh Mundlamuri <rakesh.mundlamuri@openairinterface.org
Reviewed-by:
Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
Showing
Please register or sign in to comment