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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
46a1b072
Commit
46a1b072
authored
Sep 08, 2021
by
frtabu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adapt ldcp calls to spport new interface required by cuda decoder in shared lib
parent
9fcda450
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
76 additions
and
44 deletions
+76
-44
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+13
-39
openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
+46
-0
openair1/PHY/CODING/nrLDPC_load.c
openair1/PHY/CODING/nrLDPC_load.c
+14
-3
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+3
-2
No files found.
cmake_targets/CMakeLists.txt
View file @
46a1b072
...
@@ -309,6 +309,7 @@ endif()
...
@@ -309,6 +309,7 @@ endif()
#
#
# add autotools definitions that were maybe used!
# add autotools definitions that were maybe used!
add_definitions
(
"-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP"
)
add_definitions
(
"-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP"
)
set
(
commonOpts
"-pipe -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic"
)
set
(
commonOpts
"-pipe -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic"
)
...
@@ -318,11 +319,7 @@ set(CMAKE_C_FLAGS
...
@@ -318,11 +319,7 @@ set(CMAKE_C_FLAGS
set
(
CMAKE_CXX_FLAGS
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
${
C_FLAGS_PROCESSOR
}
${
commonOpts
}
-std=c++11"
)
"
${
CMAKE_CXX_FLAGS
}
${
C_FLAGS_PROCESSOR
}
${
commonOpts
}
-std=c++11"
)
# cuda compiler bug (limitation) on complex macro definition
if
(
CUDA_FOUND
)
set
(
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
-DCUDA_FLAG"
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-DCUDA_FLAG"
)
endif
()
if
(
SANITIZE_ADDRESS
)
if
(
SANITIZE_ADDRESS
)
set
(
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
-fsanitize=address -fno-common"
)
set
(
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
-fsanitize=address -fno-common"
)
...
@@ -3123,7 +3120,11 @@ target_link_libraries (nr-uesoftmodem ${LIB_LMS_LIBRARIES})
...
@@ -3123,7 +3120,11 @@ target_link_libraries (nr-uesoftmodem ${LIB_LMS_LIBRARIES})
target_link_libraries
(
nr-uesoftmodem
${
T_LIB
}
)
target_link_libraries
(
nr-uesoftmodem
${
T_LIB
}
)
add_dependencies
(
nr-uesoftmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc
)
add_dependencies
(
nr-uesoftmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc
)
if
(
CUDA_FOUND
)
add_dependencies
(
nr-uesoftmodem ldpc_cuda
)
add_dependencies
(
nr-softmodem ldpc_cuda
)
add_dependencies
(
ocp-gnb ldpc_cuda
)
endif
(
CUDA_FOUND
)
###################################"
###################################"
# Addexecutables for tests
# Addexecutables for tests
####################################
####################################
...
@@ -3183,41 +3184,14 @@ target_link_libraries(smallblocktest
...
@@ -3183,41 +3184,14 @@ target_link_libraries(smallblocktest
m pthread
${
ATLAS_LIBRARIES
}
dl
m pthread
${
ATLAS_LIBRARIES
}
dl
)
)
if
(
CUDA_FOUND
)
###################################################
# For CUDA library
###################################################
cuda_add_executable
(
ldpctest
add_executable
(
ldpctest
${
OPENAIR1_DIR
}
/PHY/CODING/TESTBENCH/ldpctest.c
${
T_SOURCE
}
${
SHLIB_LOADER_SOURCES
}
)
target_link_libraries
(
ldpctest -ldl
-Wl,--start-group
UTIL SIMU PHY_NR CONFIG_LIB
-Wl,--end-group
m pthread
${
ATLAS_LIBRARIES
}
dl
)
else
(
CUDA_FOUND
)
add_executable
(
ldpctest
${
PHY_NR_CODINGIF
}
${
PHY_NR_CODINGIF
}
${
OPENAIR1_DIR
}
/PHY/CODING/TESTBENCH/ldpctest.c
${
OPENAIR1_DIR
}
/PHY/CODING/TESTBENCH/ldpctest.c
${
T_SOURCE
}
${
T_SOURCE
}
${
SHLIB_LOADER_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
)
)
endif
()
# add_executable(ldpctest
# ${PHY_NR_CODINGIF}
# ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c
# ${T_SOURCE}
# ${SHLIB_LOADER_SOURCES}
# )
add_dependencies
(
ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc
)
add_dependencies
(
ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc
)
target_link_libraries
(
ldpctest
target_link_libraries
(
ldpctest
...
...
openair1/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
View file @
46a1b072
...
@@ -483,6 +483,52 @@ void init_LLR_DMA_for_CUDA(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8
...
@@ -483,6 +483,52 @@ void init_LLR_DMA_for_CUDA(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8
}
}
using
namespace
std
;
/* from here: entry points in decoder shared lib */
extern
"C"
int
ldpc_autoinit
(
void
)
{
// called by the library loader
int
devices
=
0
;
cudaError_t
err
=
cudaGetDeviceCount
(
&
devices
);
AssertFatal
(
devices
>
0
,
"
\n
No cuda GPU found
\n\n
"
);
const
int
kb
=
1024
;
const
int
mb
=
kb
*
kb
;
wcout
<<
"NBody.GPU"
<<
endl
<<
"========="
<<
endl
<<
endl
;
wcout
<<
"CUDA version: v"
<<
CUDART_VERSION
<<
endl
;
wcout
<<
"CUDA Devices: "
<<
endl
<<
endl
;
for
(
int
i
=
0
;
i
<
devices
;
++
i
)
{
cudaDeviceProp
props
;
cudaGetDeviceProperties
(
&
props
,
i
);
wcout
<<
i
<<
": "
<<
props
.
name
<<
": "
<<
props
.
major
<<
"."
<<
props
.
minor
<<
endl
;
wcout
<<
" Global memory: "
<<
props
.
totalGlobalMem
/
mb
<<
"mb"
<<
endl
;
wcout
<<
" Shared memory: "
<<
props
.
sharedMemPerBlock
/
kb
<<
"kb"
<<
endl
;
wcout
<<
" Constant memory: "
<<
props
.
totalConstMem
/
kb
<<
"kb"
<<
endl
;
wcout
<<
" Block registers: "
<<
props
.
regsPerBlock
<<
endl
<<
endl
;
wcout
<<
" Warp size: "
<<
props
.
warpSize
<<
endl
;
wcout
<<
" Threads per block: "
<<
props
.
maxThreadsPerBlock
<<
endl
;
wcout
<<
" Max block dimensions: [ "
<<
props
.
maxThreadsDim
[
0
]
<<
", "
<<
props
.
maxThreadsDim
[
1
]
<<
", "
<<
props
.
maxThreadsDim
[
2
]
<<
" ]"
<<
endl
;
wcout
<<
" Max grid dimensions: [ "
<<
props
.
maxGridSize
[
0
]
<<
", "
<<
props
.
maxGridSize
[
1
]
<<
", "
<<
props
.
maxGridSize
[
2
]
<<
" ]"
<<
endl
;
wcout
<<
endl
;
}
warmup_for_GPU
();
return
0
;
}
extern
"C"
void
nrLDPC_initcall
(
t_nrLDPC_dec_params
*
p_decParams
,
int8_t
*
p_llr
,
int8_t
*
p_out
)
{
set_compact_BG
(
p_decParams
->
Z
,
p_decParams
->
BG
);
init_LLR_DMA
(
p_decParams
,
p_llr
,
p_out
);
}
extern
"C"
extern
"C"
int32_t
nrLDPC_decoder_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_decoder_LYC
(
t_nrLDPC_dec_params
*
p_decParams
,
int8_t
*
p_llr
,
int8_t
*
p_out
,
int
block_length
,
time_stats_t
*
time_decoder
)
{
{
...
...
openair1/PHY/CODING/nrLDPC_load.c
View file @
46a1b072
...
@@ -42,14 +42,25 @@
...
@@ -42,14 +42,25 @@
/* function description array, to be used when loading the encoding/decoding shared lib */
/* function description array, to be used when loading the encoding/decoding shared lib */
static
loader_shlibfunc_t
shlib_fdesc
[
2
];
char
*
arg
[
64
]
=
{
"ldpctest"
,
"-O"
,
"cmdlineonly::dbgl0"
};
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
(
void
)
{
char
*
ptr
=
(
char
*
)
config_get_if
();
char
*
ptr
=
(
char
*
)
config_get_if
();
char
libname
[
64
]
=
"ldpc"
;
int
argc
=
3
;
if
(
run_cuda
)
{
arg
[
3
]
=
"--loader.ldpc.shlibversion"
;
argc
++
;
arg
[
4
]
=
"_cuda"
;
argc
++
;
}
if
(
ptr
==
NULL
)
{
// phy simulators, config module possibly not loaded
if
(
ptr
==
NULL
)
{
// phy simulators, config module possibly not loaded
load_configmodule
(
3
,(
char
**
)
arg
,
CONFIG_ENABLECMDLINEONLY
)
;
load_configmodule
(
argc
,(
char
**
)
arg
,
CONFIG_ENABLECMDLINEONLY
)
;
logInit
();
logInit
();
}
}
shlib_fdesc
[
0
].
fname
=
"nrLDPC_decod"
;
shlib_fdesc
[
0
].
fname
=
"nrLDPC_decod"
;
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
46a1b072
...
@@ -497,6 +497,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -497,6 +497,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
}
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_LDPC
,
VCD_FUNCTION_IN
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_LDPC
,
VCD_FUNCTION_IN
);
nrLDPC_initcall
(
p_decParams
,
(
int8_t
*
)
&
pl
[
0
],
llrProcBuf
);
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decParams
,
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decParams
,
(
int8_t
*
)
&
pl
[
0
],
(
int8_t
*
)
&
pl
[
0
],
llrProcBuf
,
llrProcBuf
,
...
@@ -956,7 +957,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
...
@@ -956,7 +957,7 @@ uint32_t nr_dlsch_decoding_mthread(PHY_VARS_NR_UE *phy_vars_ue,
for
(
i
=
0
,
j
=
0
;
j
<
((
kc
*
harq_process
->
Z
)
>>
4
)
+
1
;
i
+=
2
,
j
++
)
{
for
(
i
=
0
,
j
=
0
;
j
<
((
kc
*
harq_process
->
Z
)
>>
4
)
+
1
;
i
+=
2
,
j
++
)
{
pl
[
j
]
=
_mm_packs_epi16
(
pv
[
i
],
pv
[
i
+
1
]);
pl
[
j
]
=
_mm_packs_epi16
(
pv
[
i
],
pv
[
i
+
1
]);
}
}
nrLDPC_initcall
(
p_decParams
,
(
int8_t
*
)
&
pl
[
0
],
llrProcBuf
);
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decParams
,
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decParams
,
(
int8_t
*
)
&
pl
[
0
],
(
int8_t
*
)
&
pl
[
0
],
llrProcBuf
,
llrProcBuf
,
...
@@ -1340,7 +1341,7 @@ void nr_dlsch_decoding_process(void *arg) {
...
@@ -1340,7 +1341,7 @@ void nr_dlsch_decoding_process(void *arg) {
for
(
i
=
0
,
j
=
0
;
j
<
((
kc
*
harq_process
->
Z
)
>>
4
)
+
1
;
i
+=
2
,
j
++
)
{
for
(
i
=
0
,
j
=
0
;
j
<
((
kc
*
harq_process
->
Z
)
>>
4
)
+
1
;
i
+=
2
,
j
++
)
{
pl
[
j
]
=
_mm_packs_epi16
(
pv
[
i
],
pv
[
i
+
1
]);
pl
[
j
]
=
_mm_packs_epi16
(
pv
[
i
],
pv
[
i
+
1
]);
}
}
nrLDPC_initcall
(
p_decParams
,
(
int8_t
*
)
&
pl
[
0
],
llrProcBuf
);
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decParams
,
no_iteration_ldpc
=
nrLDPC_decoder
(
p_decParams
,
(
int8_t
*
)
&
pl
[
0
],
(
int8_t
*
)
&
pl
[
0
],
llrProcBuf
,
llrProcBuf
,
...
...
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