Commit Graph
27864 Commits
Author SHA1 Message Date
Robert Schmidt e0e1ca6583 Make SA the default mode, remove corresponding option 2024-11-12 13:55:49 +01:00
Jaroslava Fiedlerova fff605eab9 Add measurement of total gNB TX processing time for nr_dlsim 2024-11-12 12:02:29 +01:00
Jaroslava Fiedlerova 14a41df0ec CI: Harmonize LDPC CUDA and T2 test/analysis in physim
- Introduce "Run_Physim" function for running ldpctest (with CUDA) and
nr_dlsim/nr_ulsim (with T2) in RAN-gNB-N300-Timing-Phytest-LDPC test
pipeline.
- Create "cls_analysis.py" and introduce "analyze_physim" for
log analysis of physim tests.
- Define patterns to be searched in the physim logs.
- Extract and print information about total gNB RX/TX PHY processing time
from nr_ulsim/nr_dlsim logs.
- Remove "cls_physim.py" as it is not used anymore, cleanup "main.py".
2024-11-12 12:02:03 +01:00
Robert Schmidt 4e08542231 Remove link to old 5g_l2sim_tdd docker deployment 2024-11-12 09:52:57 +01:00
Robert Schmidt 34cf585acd Merge remote-tracking branch 'origin/fix-4layers-nr_dlsim' into integration_2024_w45 (!3082)
fix blocking bugs in command nr_dlsim -n100 -e27 -s35 -b 273 -R273 -x4 -y4 -z4

errors in main OAI code:

- one stack overflow
- one variable array of size 0
- one direct usage of unaligned SIMD

and small fixes inside the tests tool nr_dlsim to handle this large configuration (4layers, 100MHz)

use a better complex vector multiplication function
2024-11-09 22:51:45 +01:00
Robert Schmidt 7d7011f3f8 Remove use of SSHConnection(): not used in this file 2024-11-09 12:44:09 +01:00
Robert Schmidt 5078fcccbc CI test deployment.py: auto-pull missing images if necessary 2024-11-09 12:44:09 +01:00
Robert Schmidt a3a59e4a97 Update CI unit test README.md with all tests 2024-11-09 12:44:09 +01:00
Robert Schmidt 9d4337c55d Do not retrieve deployment logs during DeployObject
Since commit 041b2b2d7a, the CI main loop
iterates over all steps, even if there has been a problem during an
earlier XML step. In all cases, UndeployObject() is marked to always
run, as we always need to make sure that all deployed services are
terminated. UndeployObject() always recovers logs. Hence, it's not
necessary to do it here as well; it leads to duplicated logs.

This is visible in all pipeline with a failed deployment: the logs
appear twice.
2024-11-09 12:44:09 +01:00
Robert Schmidt 019778e927 Simplify create_workspace.sh: remove unnecessary checkout
create_workspace.sh used to check out develop by default. However, this
is unnecessary because the script later checks out a specific reference
(which can be a commit ID, which is not accepted by git clone, the
reason we don't check out during clone); the repository will simply be
empty in the beginning, which should not be a problem.

Further, it is problematic because we use this script for the build of
the L2sim proxy, and the repository does not have develop; thus, without
this modification, L2sim proxy build will always fail.
2024-11-09 12:41:23 +01:00
Reem Bahsoun 980cc02b1a Delete 5g_l2sim components in ci_infra 2024-11-08 18:23:29 +01:00
Reem Bahsoun 5b0b2ab359 Delete 5g_l2sim related files 2024-11-08 18:23:21 +01:00
Jaroslava Fiedlerova f6184c9ff0 Merge remote-tracking branch 'origin/doc-add-prbbl-cots-ue' into integration_2024_w45 (!3090)
Following up on !3081 (comment 140856)
2024-11-08 15:10:01 +01:00
Jaroslava Fiedlerova fd6fbc5eae Merge remote-tracking branch 'origin/hotfix-nr-rlc-cppcheck' into integration_2024_w45 (!3098)
and simplify a bit (DevAssert instead of goto/exit)
2024-11-08 15:08:53 +01:00
Laurent THOMAS 8f688c0064 replace assert by error logging when we call DFT with impossible size to deal with existing LTE UE 2024-11-08 12:19:23 +01:00
Cedric Roux 752fa5fd61 nr rlc: hotfix: test allocation valid before use
and simplify a bit (DevAssert instead of goto/exit)
2024-11-08 11:59:23 +01:00
Guido Casati d585aa0041 Add UL PRBs Blacklist section to NR_SA_Tutorial_COTS_UE.md 2024-11-08 10:12:19 +01:00
Jaroslava Fiedlerova 1898e34750 Merge remote-tracking branch 'origin/ci-add-4x4-test' into integration_2024_w45 (!3070)
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.
2024-11-08 08:22:19 +01:00
Jaroslava Fiedlerova 5f5053c6f7 Merge remote-tracking branch 'origin/better-polar-decode' into integration_2024_w45 (!2949)
- 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
2024-11-08 08:20:08 +01:00
Jaroslava Fiedlerova de90129d3f Merge remote-tracking branch 'origin/compile-telnet-arm' into integration_2024_w45 (!3096)
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
2024-11-07 21:28:23 +01:00
Jaroslava Fiedlerova d0f9d4c028 CI: Remove unused Build_Physim 2024-11-07 20:33:04 +01:00
Jaroslava Fiedlerova f75e107d08 CI: remove unused Run_NRulsimTest 2024-11-07 20:33:04 +01:00
Laurent THOMAS 486cebce06 replace a printf() by a cleaner call to AssertFatal() 2024-11-07 17:08:18 +01:00
Laurent THOMAS fd83be4e77 change the alignment of OAI mutli-dim arrays from 16 to 32 bytes 2024-11-07 17:08:18 +01:00
Laurent THOMAS 07b9daa762 fix blocking bugs in command nr_dlsim -n100 -e27 -s35 -b 273 -R273 -x4 -y4 -z4
use a better complex vector multiplication function
2024-11-07 17:08:18 +01:00
Laurent THOMAS 89b7ce5eb9 small fix of rotate vector unit test 2024-11-07 17:07:52 +01:00
Laurent THOMAS ac06f107dd add a optimzed complex vector multiplication function 2024-11-07 17:07:50 +01:00
Jaroslava Fiedlerova 282ec44521 Merge remote-tracking branch 'origin/remove-accelleran-pipeline' into integration_2024_w45 (!3092)
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.
2024-11-07 16:21:36 +01:00
Jaroslava Fiedlerova c76baa1c70 Merge remote-tracking branch 'origin/fix-doc-cross-compile' into integration_2024_w45 (!3089)
- Give introductory line
- Reformulate headers to clarify steps
- Reference dockerfiles for further information
2024-11-07 16:20:35 +01:00
Jaroslava Fiedlerova 9009302a82 Merge remote-tracking branch 'origin/fix-csi-data-race' into integration_2024_w45 (!3077)
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
2024-11-07 16:18:09 +01:00
Jaroslava Fiedlerova 1c214994df Merge remote-tracking branch 'origin/nr-minor-cleanup-gnb' into integration_2024_w45 (!3048)
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
2024-11-07 16:16:05 +01:00
Robert Schmidt 9f9299706b Improve cross-compile documentation
- Give introductory line
- Reformulate headers to clarify steps
- Reference dockerfiles for further information
2024-11-07 15:10:24 +01:00
Robert Schmidt 49584e6cb3 fixup 2024-11-07 13:17:21 +01:00
Robert Schmidt 2204fc13db Compile telnetsrv in cross-compilation pipeline 2024-11-07 12:44:26 +01:00
Robert Schmidt 76c3e4b72e Remove x86-specific instructions from telnet server
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.
2024-11-07 12:41:47 +01:00
Robert Schmidt a650dcc8ab Remove Interop-F1/Accelleran-CU testing pipeline
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.
2024-11-07 12:33:47 +01:00
Robert Schmidt 0e93a8b4cf Move nr_polar_init.c to nrPolar_tools/ 2024-11-07 11:58:44 +01:00
Robert Schmidt 16535f3de4 Reformat all polar code
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/*
2024-11-07 09:43:19 +01:00
Laurent THOMAS 28234893f7 add default value setting instead of assert if we process uninitialized beta 2024-11-07 09:35:50 +01:00
Laurent THOMAS 4a971caf9f use SIMD in the highest cpu part
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.
2024-11-07 09:35:50 +01:00
Bartosz Podrygajlo 00e50f082d Limit recursion in polar decoder
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.
2024-11-07 09:29:59 +01:00
Laurent THOMAS a235206647 minor improvements for memory and SIMDE 2024-11-07 09:29:41 +01:00
Laurent THOMAS 3e019af4d9 remove the big LUT for decoder de-interleaver
no performance degradation

some reformatting
2024-11-07 09:29:21 +01:00
Laurent THOMAS d57ea715c0 Improve polar decoder/encoder
- 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.
2024-11-07 09:25:18 +01:00
Sakthivel Velumani 75cca9be3e Fix logging 2024-11-06 21:33:38 -05:00
Guido Casati b61de6453a Refactor NRRCConfig
* 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
2024-11-06 10:16:39 +01:00
Guido Casati 14a379cb75 Removed global variable NB_RU
* 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
2024-11-06 10:16:11 +01:00
Guido Casati b7063c8b75 Return a pointer to a new RRC instance (gNB_RRC_INST) from RCconfig_NRRRC 2024-11-06 10:15:43 +01:00
Guido Casati f80b09ac99 Simplified use of nb_nr_inst
* 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
2024-11-06 10:15:42 +01:00
Guido Casati eaeae880d0 Removed unused wait_for_sync 2024-11-06 10:15:26 +01:00