Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Michael Black
OpenXG UE
Commits
3b059392
Commit
3b059392
authored
Sep 09, 2021
by
frtabu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix rebasing problems
parent
c9b40f82
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
38 additions
and
45 deletions
+38
-45
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+8
-4
executables/nr-uesoftmodem.c
executables/nr-uesoftmodem.c
+1
-1
openair1/PHY/CODING/TESTBENCH/ldpctest.c
openair1/PHY/CODING/TESTBENCH/ldpctest.c
+8
-26
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
+2
-1
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
+1
-0
openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
+6
-6
openair1/PHY/CODING/nrLDPC_defs.h
openair1/PHY/CODING/nrLDPC_defs.h
+2
-1
openair1/PHY/CODING/nrLDPC_extern.h
openair1/PHY/CODING/nrLDPC_extern.h
+5
-2
openair1/PHY/CODING/nrLDPC_load.c
openair1/PHY/CODING/nrLDPC_load.c
+4
-3
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+1
-1
No files found.
cmake_targets/CMakeLists.txt
View file @
3b059392
...
...
@@ -166,7 +166,7 @@ if (CUDA_FOUND)
add_definitions
(
"-L/usr/local/cuda/lib64"
)
SET
(
CUDA_NVCC_FLAGS
"
${
CUDA_NVCC_FLAGS
}
;-
arch=sm_60;
"
)
"
${
CUDA_NVCC_FLAGS
}
;-
-gpu-architecture=compute_60
"
)
# Disable warnings for CUDA
SET
(
CUDA_NVCC_FLAGS
"
${
CUDA_NVCC_FLAGS
}
;-lpthread;-w;-O3;--default-stream;per-thread;-I/usr/local/cuda/inc;-L/usr/local/cuda/lib -lcutil;-rdc=true;-lcudadevrt"
)
...
...
@@ -1600,9 +1600,11 @@ add_library(ldpc_orig MODULE ${PHY_LDPC_ORIG_SRC} )
add_library
(
ldpc_optim MODULE
${
PHY_LDPC_OPTIM_SRC
}
)
add_library
(
ldpc_optim8seg MODULE
${
PHY_LDPC_OPTIM8SEG_SRC
}
)
if
(
CUDA_FOUND
)
add_library
(
ldpc_cuda MODULE
${
PHY_LDPC_CUDA_SRC
}
)
CUDA_ADD_CUFFT_TO_TARGET
(
ldpc_cuda
)
cuda_add_library
(
ldpc_cuda MODULE
${
PHY_LDPC_CUDA_SRC
}
)
set_target_properties
(
ldpc_cuda PROPERTIES CUDA_SEPARABLE_COMPILATION ON
)
# CUDA_ADD_CUFFT_TO_TARGET(ldpc_cuda)
endif
(
CUDA_FOUND
)
add_library
(
ldpc MODULE
${
PHY_LDPC_OPTIM8SEGMULTI_SRC
}
)
...
...
@@ -3193,7 +3195,9 @@ add_executable(ldpctest
)
add_dependencies
(
ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc
)
if
(
CUDA_FOUND
)
add_dependencies
(
ldpctest ldpc_cuda
)
endif
(
CUDA_FOUND
)
target_link_libraries
(
ldpctest
-Wl,--start-group UTIL SIMU_COMMON SIMU PHY_NR PHY_COMMON PHY_NR_COMMON CONFIG_LIB -Wl,--end-group
m pthread
${
ATLAS_LIBRARIES
}
dl
...
...
executables/nr-uesoftmodem.c
View file @
3b059392
...
...
@@ -436,7 +436,7 @@ int main( int argc, char **argv ) {
itti_init
(
TASK_MAX
,
tasks_info
);
init_opt
()
;
load_nrLDPClib
();
load_nrLDPClib
(
0
);
if
(
ouput_vcd
)
{
vcd_signal_dumper_init
(
"/tmp/openair_dump_nrUE.vcd"
);
...
...
openair1/PHY/CODING/TESTBENCH/ldpctest.c
View file @
3b059392
...
...
@@ -101,8 +101,8 @@ int test_ldpc(short No_iteration,
unsigned
int
*
crc_misses
,
time_stats_t
*
time_optim
,
time_stats_t
*
time_decoder
,
n_iter_stats_t
*
dec_iter
,
short
run_cuda
)
n_iter_stats_t
*
dec_iter
)
{
//clock initiate
//time_stats_t time,time_optim,tinput,tprep,tparity,toutput, time_decoder;
...
...
@@ -393,28 +393,13 @@ int test_ldpc(short No_iteration,
decParams
.
R
=
code_rate_vec
[
R_ind
];
//13;
decParams
.
numMaxIter
=
No_iteration
;
decParams
.
outMode
=
nrLDPC_outMode_BIT
;
decParams
.
block_length
=
block_length
;
//decParams.outMode =nrLDPC_outMode_LLRINT8;
#ifdef CUDA_FLAG
set_compact_BG
(
Zc
,
BG
);
init_LLR_DMA_for_CUDA
(
&
decParams
,
(
int8_t
*
)
channel_output_fixed
[
j
],
(
int8_t
*
)
estimated_output
[
j
],
block_length
);
#endif
nrLDPC_initcall
(
&
decParams
,
(
int8_t
*
)
channel_output_fixed
[
j
],
(
int8_t
*
)
estimated_output
[
j
]);
for
(
j
=
0
;
j
<
n_segments
;
j
++
)
{
start_meas
(
time_decoder
);
#ifdef CUDA_FLAG
if
(
run_cuda
){
n_iter
=
nrLDPC_decoder_LYC
(
&
decParams
,
(
int8_t
*
)
channel_output_fixed
[
j
],
(
int8_t
*
)
estimated_output
[
j
],
block_length
,
time_decoder
);
}
else
{
// decode the sequence
// decoder supports BG2, Z=128 & 256
//esimated_output=ldpc_decoder(channel_output_fixed, block_length, No_iteration, (double)((float)nom_rate/(float)denom_rate));
///nrLDPC_decoder(&decParams, channel_output_fixed, estimated_output, NULL);
n_iter
=
nrLDPC_decoder
(
&
decParams
,
(
int8_t
*
)
channel_output_fixed
[
j
],
(
int8_t
*
)
estimated_output
[
j
],
p_nrLDPC_procBuf
,
p_decoder_profiler
);
}
#else
n_iter
=
nrLDPC_decoder
(
&
decParams
,
(
int8_t
*
)
channel_output_fixed
[
j
],
(
int8_t
*
)
estimated_output
[
j
],
p_nrLDPC_procBuf
,
p_decoder_profiler
);
#endif
stop_meas
(
time_decoder
);
stop_meas
(
time_decoder
);
}
//for (i=(Kb+nrows) * Zc-5;i<(Kb+nrows) * Zc;i++)
...
...
@@ -514,9 +499,7 @@ int test_ldpc(short No_iteration,
int
main
(
int
argc
,
char
*
argv
[])
{
#ifdef CUDA_FLAG
warmup_for_GPU
();
#endif
unsigned
int
errors
,
errors_bit
,
crc_misses
;
double
errors_bit_uncoded
;
short
block_length
=
8448
;
// decoder supports length: 1201 -> 1280, 2401 -> 2560
...
...
@@ -619,7 +602,7 @@ int main(int argc, char *argv[])
printf
(
"SNR0 %f:
\n
"
,
SNR0
);
load_nrLDPClib
();
load_nrLDPClib
(
run_cuda
);
load_nrLDPClib_ref
(
"_orig"
,
&
encoder_orig
);
//for (block_length=8;block_length<=MAX_BLOCK_LENGTH;block_length+=8)
...
...
@@ -691,8 +674,7 @@ int main(int argc, char *argv[])
&
crc_misses
,
time_optim
,
time_decoder
,
dec_iter
,
run_cuda
);
dec_iter
);
printf
(
"SNR %f, BLER %f (%u/%d)
\n
"
,
SNR
,
(
float
)
decoded_errors
[
i
]
/
(
float
)
n_trials
,
decoded_errors
[
i
],
n_trials
);
printf
(
"SNR %f, BER %f (%u/%d)
\n
"
,
SNR
,
(
float
)
errors_bit
/
(
float
)
n_trials
/
(
float
)
block_length
/
(
double
)
n_segments
,
decoded_errors
[
i
],
n_trials
);
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
View file @
3b059392
...
...
@@ -46,7 +46,8 @@
#endif
static
inline
uint32_t
nrLDPC_decoder_core
(
int8_t
*
p_llr
,
int8_t
*
p_out
,
t_nrLDPC_procBuf
*
p_procBuf
,
uint32_t
numLLR
,
t_nrLDPC_lut
*
p_lut
,
t_nrLDPC_dec_params
*
p_decParams
,
t_nrLDPC_time_stats
*
p_profiler
);
void
nrLDPC_initcall
(
t_nrLDPC_dec_params
*
p_decParams
,
int8_t
*
p_llr
,
int8_t
*
p_out
)
{
}
int32_t
nrLDPC_decod
(
t_nrLDPC_dec_params
*
p_decParams
,
int8_t
*
p_llr
,
int8_t
*
p_out
,
t_nrLDPC_procBuf
*
p_procBuf
,
t_nrLDPC_time_stats
*
p_profiler
)
{
uint32_t
numLLR
;
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
View file @
3b059392
...
...
@@ -70,6 +70,7 @@ typedef struct nrLDPC_dec_params {
uint16_t
Z
;
/**< Lifting size */
uint8_t
R
;
/**< Decoding rate: Format 15,13,... for code rates 1/5, 1/3,... */
uint8_t
numMaxIter
;
/**< Maximum number of iterations */
int
block_length
;
e_nrLDPC_outMode
outMode
;
/**< Output format */
}
t_nrLDPC_dec_params
;
...
...
openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
View file @
3b059392
...
...
@@ -7,14 +7,14 @@
* \note
* \warning
*/
#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <cuda_runtime.h>
#include <cuda.h>
#include "PHY/CODING/nrLDPC_decoder/nrLDPC_types.h"
#include "PHY/CODING/nrLDPC_decoder/nrLDPCdecoder_defs.h"
#include "assertions.h"
#include "bgs/BG1_I0"
#include "bgs/BG1_I1"
#include "bgs/BG1_I2"
...
...
@@ -462,10 +462,11 @@ void read_BG(int BG, int *h, int row, int col)
}
extern
"C"
void
init_LLR_DMA
_for_CUDA
(
t_nrLDPC_dec_params
*
p_decParams
,
int8_t
*
p_llr
,
int8_t
*
p_out
,
int
block_length
){
void
init_LLR_DMA
(
t_nrLDPC_dec_params
*
p_decParams
,
int8_t
*
p_llr
,
int8_t
*
p_out
){
uint16_t
Zc
=
p_decParams
->
Z
;
uint8_t
BG
=
p_decParams
->
BG
;
int
block_length
=
p_decParams
->
block_length
;
uint8_t
row
,
col
;
if
(
BG
==
1
){
row
=
46
;
...
...
@@ -530,13 +531,12 @@ void nrLDPC_initcall(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_
extern
"C"
int32_t
nrLDPC_decod
er_LYC
(
t_nrLDPC_dec_params
*
p_decParams
,
int8_t
*
p_llr
,
int8_t
*
p_out
,
int
block_length
,
time_stats_t
*
time_decoder
)
int32_t
nrLDPC_decod
(
t_nrLDPC_dec_params
*
p_decParams
,
int8_t
*
p_llr
,
int8_t
*
p_out
,
t_nrLDPC_procBuf
*
p_procBuf
,
t_nrLDPC_time_stats
*
time_decoder
)
{
uint16_t
Zc
=
p_decParams
->
Z
;
uint8_t
BG
=
p_decParams
->
BG
;
uint8_t
numMaxIter
=
p_decParams
->
numMaxIter
;
int
block_length
=
p_decParams
->
block_length
;
e_nrLDPC_outMode
outMode
=
p_decParams
->
outMode
;
cudaError_t
cudaStatus
;
uint8_t
row
,
col
;
...
...
openair1/PHY/CODING/nrLDPC_defs.h
View file @
3b059392
...
...
@@ -45,6 +45,7 @@ typedef struct {
time_stats_t
*
toutput
;
}
encoder_implemparams_t
;
#define INIT0_LDPCIMPLEMPARAMS {0,0,0,NULL,NULL,NULL,NULL}
typedef
void
(
*
nrLDPC_initcallfunc_t
)(
t_nrLDPC_dec_params
*
p_decParams
,
int8_t
*
p_llr
,
int8_t
*
p_out
);
typedef
int
(
*
nrLDPC_encoderfunc_t
)(
unsigned
char
**
,
unsigned
char
**
,
int
,
int
,
short
,
short
,
encoder_implemparams_t
*
);
//============================================================================================================================
// decoder interface
...
...
@@ -56,4 +57,4 @@ typedef int(*nrLDPC_encoderfunc_t)(unsigned char **,unsigned char **,int,int,sho
\param p_profiler LDPC profiler statistics
*/
typedef
int32_t
(
*
nrLDPC_decoderfunc_t
)(
t_nrLDPC_dec_params
*
,
int8_t
*
,
int8_t
*
,
t_nrLDPC_procBuf
*
,
t_nrLDPC_time_stats
*
);
#endif
\ No newline at end of file
#endif
openair1/PHY/CODING/nrLDPC_extern.h
View file @
3b059392
...
...
@@ -23,13 +23,16 @@
#ifdef LDPC_LOADER
nrLDPC_decoderfunc_t
nrLDPC_decoder
;
nrLDPC_encoderfunc_t
nrLDPC_encoder
;
nrLDPC_initcallfunc_t
nrLDPC_initcall
;
#else
/* functions to load the LDPC shared lib, implemented in openair1/PHY/CODING/nrLDPC_load.c */
extern
int
load_nrLDPClib
(
void
)
;
extern
int
load_nrLDPClib
(
int
)
;
extern
int
load_nrLDPClib_ref
(
char
*
libversion
,
nrLDPC_encoderfunc_t
*
nrLDPC_encoder_ptr
);
// for ldpctest
/* ldpc coder/decoder functions, as loaded by load_nrLDPClib(). */
extern
nrLDPC_initcallfunc_t
nrLDPC_initcall
;
extern
nrLDPC_decoderfunc_t
nrLDPC_decoder
;
extern
nrLDPC_encoderfunc_t
nrLDPC_encoder
;
// inline functions:
#include "openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init_mem.h"
#endif
\ No newline at end of file
#endif
openair1/PHY/CODING/nrLDPC_load.c
View file @
3b059392
...
...
@@ -42,14 +42,13 @@
/* function description array, to be used when loading the encoding/decoding shared lib */
static
loader_shlibfunc_t
shlib_fdesc
[
3
];
/* arguments used when called from phy simulators exec's which do not use the config module */
/* arg is used to initialize the config module so that the loader works as expected */
char
*
arg
[
64
]
=
{
"ldpctest"
,
"-O"
,
"cmdlineonly::dbgl0"
,
NULL
,
NULL
};
int
load_nrLDPClib
(
void
)
{
int
load_nrLDPClib
(
int
run_cuda
)
{
char
*
ptr
=
(
char
*
)
config_get_if
();
char
libname
[
64
]
=
"ldpc"
;
int
argc
=
3
;
...
...
@@ -65,10 +64,12 @@ int load_nrLDPClib(void) {
}
shlib_fdesc
[
0
].
fname
=
"nrLDPC_decod"
;
shlib_fdesc
[
1
].
fname
=
"nrLDPC_encod"
;
int
ret
=
load_module_shlib
(
"ldpc"
,
shlib_fdesc
,
sizeof
(
shlib_fdesc
)
/
sizeof
(
loader_shlibfunc_t
),
NULL
);
shlib_fdesc
[
2
].
fname
=
"nrLDPC_initcall"
;
int
ret
=
load_module_shlib
(
libname
,
shlib_fdesc
,
sizeof
(
shlib_fdesc
)
/
sizeof
(
loader_shlibfunc_t
),
NULL
);
AssertFatal
(
(
ret
>=
0
),
"Error loading ldpc decoder"
);
nrLDPC_decoder
=
(
nrLDPC_decoderfunc_t
)
shlib_fdesc
[
0
].
fptr
;
nrLDPC_encoder
=
(
nrLDPC_encoderfunc_t
)
shlib_fdesc
[
1
].
fptr
;
nrLDPC_initcall
=
(
nrLDPC_initcallfunc_t
)
shlib_fdesc
[
2
].
fptr
;
return
0
;
}
...
...
openair1/PHY/INIT/nr_init.c
View file @
3b059392
...
...
@@ -108,7 +108,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
crcTableInit
();
init_scrambling_luts
();
init_pucch2_luts
();
load_nrLDPClib
();
load_nrLDPClib
(
0
);
// PBCH DMRS gold sequences generation
nr_init_pbch_dmrs
(
gNB
);
//PDCCH DMRS init
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment