Improve performance polar encoder i.e., 3GPP 38.212 5.3.1.2 function
Improve the polar encoding e.g., u->d or the Kronecker matrix according to 3GPP 38.212 5.3.1.2. From a N^2 algorithm to NlogN
Benchmark results for N = 512 bits e.g., PBCH:
2024-03-05T17:48:44+01:00
Running ./a.out
Run on (8 X 1480.55 MHz CPU s)
CPU Caches:
L1 Data 48 KiB (x4)
L1 Instruction 32 KiB (x4)
L2 Unified 1280 KiB (x4)
L3 Unified 12288 KiB (x1)
Load Average: 0.53, 0.47, 0.56
-----------------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------------
BM_POLAR_OAI 1322 ns 1321 ns 483230
BM_POLAR_OAI_NEW 140 ns 140 ns 4998694
Code for the benchmark:
https://github.com/mirazabal/bm_polar_encoder.git
When measuring directly in the OAI function nr_polar_uxG, the first result glance show a performance improvement between x7 and x15 with no load (only ping traffic).
PS: I can connect and send data using RFSim. However, the validation test to compare the output of both algorithms, when feed with random data does not pass. I suspect that the problem may lay in the table constants, as the validation test passes when compared with other polar implementations e.g., srsRAN. ToDO: Carefully observe CI tests results.