- 08 Nov, 2024 4 commits
-
-
Jaroslava Fiedlerova authored
and simplify a bit (DevAssert instead of goto/exit)
-
Cedric Roux authored
and simplify a bit (DevAssert instead of goto/exit)
-
Jaroslava Fiedlerova authored
Create a new test scenario with USRP N310, 60 MHz bandwidth, 4 DL layers and 2 UL layers. Test 480 Mbps DL and 120 Mbps UL.
-
Jaroslava Fiedlerova authored
- simplify the code - prevent to use "beta" tables from one decoder run to the next one (to see it is the case, don't initialize beta, you will see it doesn't decode) - decrease memory footprint of the decoder by x10 or more - save about 15% of cpu in polartest unitary test tool, and more if we run in realistic use case - still this decoder performs much worse than the (very) slow OAI version by 3dB
-
- 07 Nov, 2024 18 commits
-
-
Jaroslava Fiedlerova authored
telnetsrv uses the Intel/AMD-specific "cpuid" instruction, which is not available on ARM machines. Remove the call. The previous code was checking for the number of cores, which is retained by a call to get_nprocs(). I did not find an equivalent for the number of threads in C. In C++, there would be https://en.cppreference.com/w/cpp/thread/thread/hardware_concurrency, in case it's relevant for anybody. Also, add it to the cross-compilation pipeline
-
Jaroslava Fiedlerova authored
We don't have access to the images for the Accelleran CU anymore, so we can't run the test. Remove the pipeline from the repository.
-
Jaroslava Fiedlerova authored
- Give introductory line - Reformulate headers to clarify steps - Reference dockerfiles for further information
-
Jaroslava Fiedlerova authored
csiim_vars/csirs_vars used to be global array for each UE. Now its present in phy_data which is in dynamically allocated memory. MAC config was done without mutex while DL and UL threads could be running at the same time. get_ue_nas_info was allocating memory possibly from more than one thread. Moved it into new init function for UE NAS layer. Addreses most issues in #869
-
Jaroslava Fiedlerova authored
The goal of this MR is to improve readability, maintainability and consistency of gNB initialization functions. This MR is: - cleaning up redundant and unused code - refactoring init_gNB, l1_north_init_gNB, RCconfig_NR_L1, NRRCConfig - removing redundant memory allocation for gNB RAN context and L1 instances - cleaning up redundant log lines
-
Robert Schmidt authored
- Give introductory line - Reformulate headers to clarify steps - Reference dockerfiles for further information
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
telnetsrv uses the Intel/AMD-specific "cpuid" instruction, which is not available on ARM machines. Remove the call. The previous code was checking for the number of cores, which is retained by a call to get_nprocs(). I did not find an equivalent for the number of threads in C. In C++, there would be https://en.cppreference.com/w/cpp/thread/thread/hardware_concurrency, in case it's relevant for anybody.
-
Robert Schmidt authored
We don't have access to the images for the Accelleran CU anymore, so we can't run the test. Remove the pipeline from the repository.
-
Robert Schmidt authored
-
Robert Schmidt authored
Commands used: clang-format -i openair1/PHY/CODING/TESTBENCH/polartest.c clang-format -i openair1/PHY/CODING/nr_polar_init.c clang-format -i openair1/PHY/CODING/nrPolar_tools/*
-
Laurent THOMAS authored
-
Laurent THOMAS authored
the version in develop is difficult to understand, and surprizing design it loops only when avx2mod == 0 because when this test is false, the size is always small i also spent time to understand, but i think i have not changed it by not looping over the array.
-
Bartosz Podrygajlo authored
Use non-recursive polar decoder after traversing the tree once. Maximum number of nodes is set to 600 (unsure of the maximum). This is more performant than the recursive version.
-
Laurent THOMAS authored
-
Laurent THOMAS authored
no performance degradation some reformatting
-
Laurent THOMAS authored
- Ensure packed struct through bitfield - decoder tree buffer increase: i don't find evidence in the 3GPP standard of the max size of polar coded PDU. even with this max size, the way this tree is built is not trivial. so, it is hard to predict, i just put 8 system pages (32KB) that looks enough [1] - a lot of reformatting [1] https://arxiv.org/pdf/1804.04389 according to this paper, the largest polar code in 5G is in UL, so likely the biggest problem will be in gNB, not the UE. in DL, the max output coded block is 512, in UL 1024. probably the tree we discuss is related to this size. "frozen bits" means only bits we don't encode/decode because polar code size is only by power of 2. We see this in OAI code: NR_POLAR_PUCCH_N_MAX is 10, so 2^10 is 1024, that is the maximum size for 5G polar code length. in the code, we assert if N > 512: "N = %d, not done yet\n", polarParams->N". so, the today OAI code can't do PUCCH large blocks. using current oai limitation of 2⁹ max code size, we can create up to 2^9+2⁸... nodes, so 1023 nodes in the tree. the problem then is that each node have variable size, depending on the 'level' (the power of 2 we are currently). the algo provision large alpha and beta to be able to store all lower levels in the tree (int leaf_sz = 1 << level) therefore upper tree nodes are large (the top level for n=9 uses about 1.5KB) and the bottom nodes uses 64 bytes. if all nodes are populated, the size will be very large: 1.5KB + 2 * 800 + .... but, we create nodes in the tree only for the "information bits", so the payload, that is limited to 128 bits (else we assert, the code is not "finished"). 1.5KB * 128 is >> 8KB i allocated. but, we can't create more than one mode at top level, so there is maximum 1.5KB + 2 * 800, + 4 * 400 + 8 * 200 + 16 * 100 + remaining of 128-32 nodes of 64 bytes. about 14KB. i allocated 1024*sizeof(__m256i) bytes = 32KB that looks good.
-
- 06 Nov, 2024 18 commits
-
-
Guido Casati authored
* the goal of this function is to initialize and configure the RAN Context * the goal of get_options is to get command line options * this commit aims at making the implementation more consistent * move initialization of RC.nb_nr_CC to this function * cleanup redundant initializations of RC.nb_nr_macrlc_inst outside NRRCConfig * cleanup redundant initization of RC.nb_nr_macrlc_inst from getter function (get_node_type) * cleanup RC initialization in RCconfig_NR_L1 * removed redundant log lines (print number of instances in NRRCConfig only) * do RC init after getting CL options and configuration * get_node_type shall access configuration only, not RC context * NRRCConfig shall be called only once: made it thread-safe
-
Guido Casati authored
* this variable was set after RC.nb_RU, which is set in NRRCConfig therefore it was redundant since it can be easily replaced by the original
-
Guido Casati authored
-
Guido Casati authored
* nb_nr_inst represents the number of gNB instances and the number of RAN contexts * it used also to count the number of RRC instances in the node * it is set from config file in NRRCConfig, therefore redundant checks after this function have been removed * redundant global variable NB_gNB_INST, set after nb_nr_inst, was removed
-
Guido Casati authored
-
Guido Casati authored
-
Guido Casati authored
* code cleanup * clang-formatted * simplified code
-
Guido Casati authored
-
Guido Casati authored
* done already in mac_top_init_gNB
-
Guido Casati authored
-
Guido Casati authored
-
Guido Casati authored
-
Guido Casati authored
* gNB and L1 init is done in init_gNB and RCconfig_NR_L1 * moved RCconfig_nr_prs out of create_gNB_tasks for consistency * do RCconfig_nr_prs only for L1 instances
-
Guido Casati authored
* removed initialization of gNB * separate function to get blacklisted UL PRBs * call the getter in both L1 and MAC/RLC configuration * other minor improvements
-
Guido Casati authored
* do always gNB init for L1 instance and also for CU and CU-CP * do L1 config only for L1 instances
-
Guido Casati authored
* code cleanup * clang-formatted * adopted calloc_or_fail * allocate nb_nr_L1_inst of RC.gNB instead of (RC.nb_nr_L1_inst + 1)
-
Bartosz Podrygajlo authored
-
Robert Schmidt authored
-