1. 07 Nov, 2024 8 commits
    • Robert Schmidt's avatar
      Move nr_polar_init.c to nrPolar_tools/ · 0e93a8b4
      Robert Schmidt authored
      0e93a8b4
    • Robert Schmidt's avatar
      Reformat all polar code · 16535f3d
      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/*
      16535f3d
    • Laurent THOMAS's avatar
    • Laurent THOMAS's avatar
      use SIMD in the highest cpu part · 4a971caf
      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.
      4a971caf
    • Bartosz Podrygajlo's avatar
      Limit recursion in polar decoder · 00e50f08
      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.
      00e50f08
    • Laurent THOMAS's avatar
      minor improvements for memory and SIMDE · a2352066
      Laurent THOMAS authored
      a2352066
    • Laurent THOMAS's avatar
      remove the big LUT for decoder de-interleaver · 3e019af4
      Laurent THOMAS authored
      no performance degradation
      
      some reformatting
      3e019af4
    • Laurent THOMAS's avatar
      Improve polar decoder/encoder · d57ea715
      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.
      d57ea715
  2. 29 Oct, 2024 1 commit
    • Robert Schmidt's avatar
      Merge branch 'integration_2024_w43' into 'develop' · 6c1d94a3
      Robert Schmidt authored
      Integration: `2024.w43`
      
      Closes #769 and #841
      
      See merge request oai/openairinterface5g!3069
      
      * !2994 Refactor file descriptor handling in rfsimulator
      * !3010 Fix heap overflow in websrv
      * !3043 CI: Update RAN-gNB-N300-Timing-Phytest-LDPC test cases
      * !3060 process registration reject in UE
      * !3062 fix nr rlc tests
      * !3067 Bugfix: Fill QFI for N3 GTP messages
      * !3057 Bugfix in ue pusch mac pdu creation
      * !3068 getopt() returns int
      * !3056 F1AP Enc/Dec Library follow-up
      * !3064 T: don't check argument in optimized version of T IDs
      * !2786 Add F1 Handover procedures
      * !2980 Refactor NAS 5GS PDU Session Establishment Accept handling and other NAS improvements
      * !3063 Update yaml-cpp dependency handling
      * !2989 NR gNB scheduler improvements for BWP operation
      6c1d94a3
  3. 28 Oct, 2024 5 commits
  4. 26 Oct, 2024 3 commits
  5. 25 Oct, 2024 23 commits