Commit Graph
52 Commits
Author SHA1 Message Date
Romain Beurdouche 6b660e4091 fix(nrLDPC_decoder): Cleaning LDPC iteration accounting in NR
The idea is to make LDPC iteration accounting more standard from a C coding perspective by making two changes:
1. Now the iteration counter starts at 0 for the first iteration and goes up to max_ldpc_iterations - 1 for the last iteration.
   If it is equal to max_ldpc_iterations, it means that decoding failed.
2. A chain of useless returns in the UE DLSCH decoding call chain was removed.
2025-03-10 15:11:19 +00:00
Romain Beurdouche b6bedf1216 fix(nrLDPC_decoder): fix numIter increment
The logs of `./nr_ulsim -n100 -m19 -s12 -S12 -z2 -L4` were showing that sometimes the decoding of one segment was failing while the CRC check succeeded.
This was happening because the iteration counter `numIter` was not properly managed so that when the last iteration was successful to decode the segment
still `numIter` at the exit was equal to `numMaxIter` plus 1 so that decoding was considered to have failed.
In other words the last iteration if it occured was always wasted.

This commit offers to solve this problem by simply moving the iteration counter increment at the end of the iteration loop
while remaining careful at fixing the tests relying on this counter.
2025-03-06 13:03:14 +00:00
Romain Beurdouche 9586db6bfd fix(nrLDPC_decoder): Rename E in Kprime in segment decoder parameters to comply with standard naming 2025-01-10 08:54:37 +00:00
Laurent THOMAS 99ca87a1c1 Refactor LDPC API to make common API with various implementations 2023-11-28 09:37:37 +01:00
Raymond Knopp a7bc282302 First-level of support for new aarch64 machines
Testing on Neoverse N1 (Ampere 3GHz). Tested only on a subset of phy-simulators.

- Changes:
- use SIMDE consistently
- adaptations of LDPC decoder generator for ARMv8 performance
- SIMDe modifications of Intel CRC to allow for aarch64 build.
  optimizations for 128-bit to improve performance of LDPC encode/decode
  on aarch64 (Neoverse 1)
- added BG2 files for 128-bit ldpc encoder (aarch64)
- testing on Xeon
- testing on x86
- minor changes to build/run on x86
- change in crc.h after returning to aarch64
- removed some warning in ldpc decoder generator for x86_64
- char
- Delete irrelevant constants
- Correctly declare variables
- Define stdbool for all architectures
- Remove definition of _MM_SHUFFLE and use SIMDE_MM_SHUFFLE
- Remove commented code
- Fix CMakeLists.txt
- Include SIMDE avx2 functions in tools_defs.h
2023-09-13 17:19:20 +02:00
laurent 615324294b ldpc check based on crc 2023-06-12 10:24:57 +02:00
Laurent THOMAS 3645c96c09 remove generic thread pool abort 2023-06-12 10:24:37 +02:00
Bruno Mongazon-Cazavet fe1dc24e28 Add Intrinsics usage by SIMDE 2022-09-28 18:21:19 +02:00
Raymond Knopp f6bb869c0b fixed AVX2 issue for cnProc code generator. Some cleanup in formatting and deleting unused files. 2022-06-12 23:23:07 +02:00
Robert Schmidt dde6d61dd4 Dynamically create LDPC decoder headers when building ldpc libs 2022-06-09 15:03:13 +02:00
Raymond Knopp 63b28d3610 clean up (removal) of ldpc generated files on repository 2022-05-03 21:26:18 +02:00
Raymond Knopp 8506307ef0 Merge remote-tracking branch 'origin/develop' into ldpc-decoder-codegen
Conflicts:
	cmake_targets/build_oai
	openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h
	openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
	openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init_mem.h
	openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
	openair1/PHY/NR_REFSIG/ptrs_nr.c
2022-05-02 22:41:48 +02:00
Sakthivel Velumani a8a5897a98 Cherry pick ldpc-decoder-crc-check
commit: 3cfefe3c6f7b2854a14d94fb7072ece2ff4c5c0a
2022-01-20 21:08:44 +05:30
Raymond Knopp 1f9900ba61 LDPC decoder generator cleanup 2022-01-19 23:01:27 +01:00
Raymond Knopp 7d9b3464a8 Merge branch 'ldpc-decoder-codegen' of https://gitlab.eurecom.fr/oai/openairinterface5g into ldpc-decoder-codegen
Conflicts:
	cmake_targets/CMakeLists.txt
	cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8448_maxit_5.txt
	openair1/PHY/CODING/nrLDPC_decoder.c
	openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
	openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h_native_memcpy
	openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_avx2
	openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProc_gen_avx512
2022-01-05 14:55:13 +01:00
Raymond Knopp 13b8abc310 Merge branch 'develop' into ldpc-decoder-codegen
Conflicts:
	cmake_targets/CMakeLists.txt
	cmake_targets/build_oai
	openair1/PHY/TOOLS/time_meas.h
2021-12-24 18:19:13 +01:00
Sy cd2b80e6c2 some cleanup 2021-12-22 22:36:42 +01:00
Sy 5521e34360 my Internship project 2021-11-25 17:34:02 +01:00
frtabu 41ba9a5afb Fix rebasing problems 2021-10-27 14:42:12 +02:00
Eurecom c834f40186 Merge remote-tracking branch 'origin/develop' into bandwidth-testing
Conflicts:
	executables/nr-uesoftmodem.c
	executables/nr-uesoftmodem.h
	executables/softmodem-common.h
	openair1/PHY/MODULATION/slot_fep_nr.c
	openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
	openair1/PHY/NR_TRANSPORT/pucch_rx.c
	openair1/SCHED_NR/fapi_nr_l1.c
	openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
	openair1/SIMULATION/TOOLS/abstraction.c
	openair1/SIMULATION/TOOLS/random_channel.c
	openair2/LAYER2/NR_MAC_UE/mac_proto.h
	openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
	openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
2021-09-05 15:37:11 +02:00
Raymond Knopp 8e4763bf94 small change in ulsch_decoder to allow segment even if parity-check fails but CRC passes. 2021-09-04 21:36:41 +02:00
Laurent THOMAS fcda7b97fe add sanitize option, merge develop 2021-03-19 12:21:04 +01:00
Raymond Knopp 3bc433a5f8 bugfix from type in last commit 2020-08-27 07:18:49 +02:00
Sy 845a226410 optimized 5G NR LDPC decoder 2020-07-06 02:34:12 +02:00
Sy 559e8fdcd2 degradation of performance in BLER fixed | bnProc & bnProcPc unrolled | small improvement in times 2020-07-01 18:37:52 +02:00
Sy 0f704894f4 degradation of performance in BLER corrected | bnProc & bnProcPc unrolled 2020-07-01 14:12:53 +02:00
Sy 5e5bc1a9e3 Effective management of all values ​​of Z (lifting size) and all R (coding rate) for BG1 & BG2 |
some improvement in decoding time | (bnProcPc reduces 2x)
2020-06-27 02:07:13 +02:00
Sy 394f0deb1b bnProcPc and bnProc unrolled | BN treatment, small improvement in times at the expense of degraded performance in BLER , reordering of generated files 2020-06-19 23:38:37 +02:00
Raymond Knopp 55e32f6e8c removed unnecessary include files 2020-06-06 10:57:33 +02:00
Sy 9b11d0b593 full version of the optimized 5NR LDPC decoder 2020-06-03 22:51:05 +02:00
Sy 301317eca6 full version of the optimized 5NR LDPC decoder 2020-06-03 19:04:20 +02:00
Raymond Knopp a6af0d99ce minor fix for AVX2/AVX512 switch 2020-06-02 13:19:35 +02:00
matzakos 956d9aa1d8 added selection between AVX2 and AVX512 2020-06-02 12:06:38 +02:00
Raymond Knopp 8663ee697e chages in AVX512 code generator. Yields small improvement compared to AVX2, BLER performance is still degraded. 2020-06-01 14:40:11 +02:00
Sy 5e5e487e4c Test for avx512 2020-05-29 11:58:55 +02:00
Sy bdd12a3396 Testing for avx512 2020-05-27 13:41:57 +02:00
Sy bfad636369 Testing for avx512 2020-05-26 16:50:32 +02:00
Sy 00a8df6f8f generated CN processing files according to the values of Z | version for AVX2 and AVX512| BG1 & BG2 2020-05-25 14:34:07 +02:00
Sy a1b81d9475 generated files for CN processing according to the values of Z | version for AVX2 and AVX512 2020-05-23 22:07:22 +02:00
Sy 140fa111c4 file generated for CN processing according to the values of Z | version for AVX2 and AVX512 2020-05-23 21:39:17 +02:00
Sy 71a8d19b7d use of avx2 & avx512 at CN Processing level 2020-05-18 13:58:44 +02:00
Sy e785891fb1 integration of the generated file (nrLDPC_cnProc_BG1_Z384_13 with the LDPC decoder at the base 2020-05-07 16:28:01 +02:00
Raymond Knopp 7491e23dbd Merge remote-tracking branch 'origin/develop' into NR_RRCConfiguration 2020-03-15 18:13:11 +01:00
frtabu 8928cfe57d move ldpc coder/decoder into a shared lib dymically loaded. Also fix a record player bug 2020-03-11 17:32:13 +01:00
Raymond Knopp d554707919 Merge remote-tracking branch 'origin/develop-nr' into NR_RRCConfiguration
Conflicts:
	cmake_targets/CMakeLists.txt
	executables/nr-gnb.c
	nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h
	openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h
	openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
	openair1/PHY/INIT/nr_init_ue.c
	openair1/PHY/NR_TRANSPORT/nr_dlsch_coding.c
	openair1/PHY/NR_UE_TRANSPORT/nr_prach.c
	openair2/COMMON/rrc_messages_types.h
	openair2/GNB_APP/gnb_config.c
	openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
	openair2/LAYER2/NR_MAC_gNB/config.c
	openair2/NR_PHY_INTERFACE/NR_IF_Module.c
	openair2/RRC/NR/MESSAGES/asn1_msg.c
	openair2/RRC/NR/nr_rrc_defs.h
	openair2/RRC/NR/rrc_gNB.c
2019-10-10 12:29:20 +02:00
Sebastian Wagner 03da0a5ed8 CI: fixing compilation warning in phy simulators
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2019-10-05 11:24:03 +02:00
Raymond Knopp b2bdf7eb9a temporary commit 2019-09-11 10:57:31 +02:00
Hongzhi Wang 39fa3e001c adding ldpc decoder code rate adaptation 2019-03-04 16:54:56 +01:00
Sebastian Wagner eb5c33ded1 WIP: Replacing buffers, ldpctest passes, free does not work, TODO: implementation into softmodem 2018-12-07 18:18:17 +01:00
Florian Kaltenberger 5144d1f50b disabling profiling for LDPC decoder as this seems to cause a segfault in ldpctest (although I am pretty sure this fixes just the symptoms and not the real cause) 2018-11-23 16:44:55 +01:00