Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
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-RAN
Commits
41ba9a5a
Commit
41ba9a5a
authored
3 years ago
by
frtabu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix rebasing problems
parent
46a1b072
Changes
10
Show 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 @
41ba9a5a
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
executables/nr-uesoftmodem.c
View file @
41ba9a5a
...
...
@@ -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"
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/TESTBENCH/ldpctest.c
View file @
41ba9a5a
...
...
@@ -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,27 +393,12 @@ 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
);
}
...
...
@@ -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
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
View file @
41ba9a5a
...
...
@@ -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
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
View file @
41ba9a5a
...
...
@@ -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
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
View file @
41ba9a5a
...
...
@@ -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
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/nrLDPC_defs.h
View file @
41ba9a5a
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/nrLDPC_extern.h
View file @
41ba9a5a
...
...
@@ -23,11 +23,14 @@
#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:
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/nrLDPC_load.c
View file @
41ba9a5a
...
...
@@ -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
;
}
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/INIT/nr_init.c
View file @
41ba9a5a
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
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