feat(nrLDPC_coding_interface): Move LDPC and Turdo coding libraries cmake lists in sub directories
This commit is contained in:
+1
-157
@@ -485,42 +485,6 @@ target_link_libraries(params_libconfig PRIVATE config_internals ${libconfig_LIBR
|
|||||||
add_library(shlib_loader OBJECT common/utils/load_module_shlib.c)
|
add_library(shlib_loader OBJECT common/utils/load_module_shlib.c)
|
||||||
target_link_libraries(shlib_loader PRIVATE CONFIG_LIB)
|
target_link_libraries(shlib_loader PRIVATE CONFIG_LIB)
|
||||||
|
|
||||||
##########################################################
|
|
||||||
|
|
||||||
# LDPC offload library - AMD T2 Accelerator Card
|
|
||||||
##########################################################
|
|
||||||
|
|
||||||
add_boolean_option(ENABLE_LDPC_T2 OFF "Build support for LDPC Offload to T2 library" OFF)
|
|
||||||
if (ENABLE_LDPC_T2)
|
|
||||||
pkg_check_modules(LIBDPDK_T2 REQUIRED libdpdk=20.11.9)
|
|
||||||
find_library(PMD_T2 NAMES rte_baseband_accl_ldpc HINTS ${LIBDPDK_T2_LIBRARY_DIRS})
|
|
||||||
if (NOT PMD_T2)
|
|
||||||
message(FATAL_ERROR "could not find poll-mode driver for AccelerComm T2 LDPC Offload (rte_baseband_accl_ldpc.so)")
|
|
||||||
endif()
|
|
||||||
message(STATUS "T2 build: use ${PMD_T2}")
|
|
||||||
set(PHY_NRLDPC_CODING_T2_SRC
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_t2/nrLDPC_coding_t2.c
|
|
||||||
)
|
|
||||||
add_library(ldpc_t2 MODULE ${PHY_NRLDPC_CODING_T2_SRC})
|
|
||||||
set_target_properties(ldpc_t2 PROPERTIES COMPILE_FLAGS "-DALLOW_EXPERIMENTAL_API")
|
|
||||||
target_link_libraries(ldpc_t2 PRIVATE ldpc_gen_HEADERS ${LIBDPDK_T2_LDFLAGS} ${PMD_T2})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
##########################################################
|
|
||||||
|
|
||||||
# LDPC offload library - XDMA
|
|
||||||
##########################################################
|
|
||||||
add_boolean_option(ENABLE_LDPC_XDMA OFF "Build support for LDPC Offload to XDMA library" OFF)
|
|
||||||
if (ENABLE_LDPC_XDMA)
|
|
||||||
set(PHY_NRLDPC_CODING_XDMA_SRC
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_xdma/nrLDPC_coding_xdma_offload.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_xdma/nrLDPC_coding_xdma.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/nrLDPC_coding_segment_encoder.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_load.c
|
|
||||||
)
|
|
||||||
add_library(ldpc_xdma MODULE ${PHY_NRLDPC_CODING_XDMA_SRC})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include_directories ("${OPENAIR_DIR}/radio/COMMON")
|
include_directories ("${OPENAIR_DIR}/radio/COMMON")
|
||||||
|
|
||||||
##############################################################
|
##############################################################
|
||||||
@@ -786,14 +750,6 @@ include_directories(${NFAPI_USER_DIR})
|
|||||||
|
|
||||||
# Layer 1
|
# Layer 1
|
||||||
#############################
|
#############################
|
||||||
set(PHY_TURBOSRC
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/3gpplte_sse.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/3gpplte.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder.c
|
|
||||||
)
|
|
||||||
set(PHY_POLARSRC
|
set(PHY_POLARSRC
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_init.c
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_init.c
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_bitwise_operations.c
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_bitwise_operations.c
|
||||||
@@ -816,87 +772,16 @@ set(PHY_TURBOIF
|
|||||||
${OPENAIR1_DIR}/PHY/CODING/coding_load.c
|
${OPENAIR1_DIR}/PHY/CODING/coding_load.c
|
||||||
)
|
)
|
||||||
|
|
||||||
set(PHY_LDPC_ORIG_SRC
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c
|
|
||||||
)
|
|
||||||
add_library(ldpc_orig MODULE ${PHY_LDPC_ORIG_SRC} )
|
|
||||||
target_link_libraries(ldpc_orig PRIVATE ldpc_gen_HEADERS)
|
|
||||||
|
|
||||||
set(PHY_LDPC_OPTIM_SRC
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim.c
|
|
||||||
)
|
|
||||||
add_library(ldpc_optim MODULE ${PHY_LDPC_OPTIM_SRC} )
|
|
||||||
target_link_libraries(ldpc_optim PRIVATE ldpc_gen_HEADERS)
|
|
||||||
|
|
||||||
set(PHY_LDPC_OPTIM8SEG_SRC
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8seg.c
|
|
||||||
)
|
|
||||||
add_library(ldpc_optim8seg MODULE ${PHY_LDPC_OPTIM8SEG_SRC} )
|
|
||||||
target_link_libraries(ldpc_optim8seg PRIVATE ldpc_gen_HEADERS)
|
|
||||||
|
|
||||||
set(PHY_LDPC_OPTIM8SEGMULTI_SRC
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
|
|
||||||
)
|
|
||||||
add_library(ldpc_optim8segmulti MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
|
|
||||||
target_link_libraries(ldpc_optim8segmulti PRIVATE ldpc_gen_HEADERS)
|
|
||||||
|
|
||||||
set(PHY_LDPC_CUDA_SRC
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
|
|
||||||
)
|
|
||||||
|
|
||||||
set(PHY_LDPC_CL_SRC
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_CL.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
|
|
||||||
)
|
|
||||||
add_custom_target( nrLDPC_decoder_kernels_CL
|
|
||||||
COMMAND gcc ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_CL.c -dD -DNRLDPC_KERNEL_SOURCE -E -o ${CMAKE_CURRENT_BINARY_DIR}/nrLDPC_decoder_kernels_CL.clc
|
|
||||||
SOURCES ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_CL.c
|
|
||||||
)
|
|
||||||
add_library(ldpc_cl MODULE ${PHY_LDPC_CL_SRC} )
|
|
||||||
target_link_libraries(ldpc_cl OpenCL)
|
|
||||||
add_dependencies(ldpc_cl nrLDPC_decoder_kernels_CL)
|
|
||||||
|
|
||||||
set(PHY_NR_CODINGIF
|
set(PHY_NR_CODINGIF
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_load.c
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_load.c
|
||||||
)
|
)
|
||||||
|
|
||||||
set(PHY_NRLDPC_CODING_SEGMENT_SRC
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/nrLDPC_coding_segment_decoder.c
|
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/nrLDPC_coding_segment_encoder.c
|
|
||||||
${PHY_NR_CODINGIF}
|
|
||||||
)
|
|
||||||
|
|
||||||
set(PHY_NRLDPC_CODINGIF
|
set(PHY_NRLDPC_CODINGIF
|
||||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface_load.c
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface_load.c
|
||||||
)
|
)
|
||||||
|
|
||||||
##############################################
|
|
||||||
# Base CUDA setting
|
|
||||||
##############################################
|
|
||||||
|
|
||||||
add_boolean_option(ENABLE_LDPC_CUDA OFF "Build support for CUDA" OFF)
|
|
||||||
if (ENABLE_LDPC_CUDA)
|
|
||||||
find_package(CUDA REQUIRED)
|
|
||||||
SET(CUDA_NVCC_FLAG "${CUDA_NVCC_FLAGS};-arch=sm_60;")
|
|
||||||
SET(CUDA_VERBOSE_BUILD ON)
|
|
||||||
cuda_add_library(ldpc_cuda MODULE ${PHY_LDPC_CUDA_SRC})
|
|
||||||
set_target_properties(ldpc_cuda PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
|
|
||||||
if (NOT CUDA_FOUND)
|
|
||||||
message(FATAL_ERROR "no CUDA found")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_library(coding MODULE ${PHY_TURBOSRC} )
|
|
||||||
|
|
||||||
add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts_neon.c)
|
add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts_neon.c)
|
||||||
|
|
||||||
add_library(ldpc MODULE ${PHY_NRLDPC_CODING_SEGMENT_SRC})
|
|
||||||
|
|
||||||
set(PHY_SRC_COMMON
|
set(PHY_SRC_COMMON
|
||||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools_common.c
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools_common.c
|
||||||
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c
|
||||||
@@ -2070,16 +1955,6 @@ if(E2_AGENT)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
add_dependencies(nr-softmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc_optim8segmulti ldpc)
|
|
||||||
|
|
||||||
if (ENABLE_LDPC_T2)
|
|
||||||
add_dependencies(nr-softmodem ldpc_t2)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ENABLE_LDPC_XDMA)
|
|
||||||
add_dependencies(nr-softmodem ldpc_xdma)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# force the generation of ASN.1 so that we don't need to wait during the build
|
# force the generation of ASN.1 so that we don't need to wait during the build
|
||||||
target_link_libraries(nr-softmodem PRIVATE
|
target_link_libraries(nr-softmodem PRIVATE
|
||||||
asn1_lte_rrc asn1_nr_rrc asn1_s1ap asn1_ngap asn1_m2ap asn1_m3ap asn1_x2ap asn1_f1ap asn1_lpp)
|
asn1_lte_rrc asn1_nr_rrc asn1_s1ap asn1_ngap asn1_m2ap asn1_m3ap asn1_x2ap asn1_f1ap asn1_lpp)
|
||||||
@@ -2131,20 +2006,6 @@ target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt nr_ue_phy_m
|
|||||||
target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
|
target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
|
||||||
target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||||
|
|
||||||
add_dependencies( nr-uesoftmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc_optim8segmulti ldpc)
|
|
||||||
if (ENABLE_LDPC_CUDA)
|
|
||||||
add_dependencies(nr-uesoftmodem ldpc_cuda)
|
|
||||||
add_dependencies(nr-softmodem ldpc_cuda)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ENABLE_LDPC_T2)
|
|
||||||
add_dependencies(nr-uesoftmodem ldpc_t2)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ENABLE_LDPC_XDMA)
|
|
||||||
add_dependencies(nr-uesoftmodem ldpc_xdma)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# force the generation of ASN.1 so that we don't need to wait during the build
|
# force the generation of ASN.1 so that we don't need to wait during the build
|
||||||
target_link_libraries(nr-uesoftmodem PRIVATE
|
target_link_libraries(nr-uesoftmodem PRIVATE
|
||||||
asn1_lte_rrc asn1_nr_rrc asn1_s1ap asn1_ngap asn1_m2ap asn1_m3ap asn1_x2ap asn1_f1ap asn1_lpp)
|
asn1_lte_rrc asn1_nr_rrc asn1_s1ap asn1_ngap asn1_m2ap asn1_m3ap asn1_x2ap asn1_f1ap asn1_lpp)
|
||||||
@@ -2198,11 +2059,6 @@ add_executable(ldpctest
|
|||||||
${PHY_NR_CODINGIF}
|
${PHY_NR_CODINGIF}
|
||||||
${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c
|
${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c
|
||||||
)
|
)
|
||||||
|
|
||||||
add_dependencies(ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc_optim8segmulti)
|
|
||||||
if (ENABLE_LDPC_CUDA)
|
|
||||||
add_dependencies(ldpctest ldpc_cuda)
|
|
||||||
endif()
|
|
||||||
target_link_libraries(ldpctest PRIVATE
|
target_link_libraries(ldpctest PRIVATE
|
||||||
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON -Wl,--end-group
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON -Wl,--end-group
|
||||||
m pthread dl shlib_loader ${T_LIB}
|
m pthread dl shlib_loader ${T_LIB}
|
||||||
@@ -2299,17 +2155,6 @@ add_executable(nr_ulsim
|
|||||||
${PHY_INTERFACE_DIR}/queue_t.c
|
${PHY_INTERFACE_DIR}/queue_t.c
|
||||||
)
|
)
|
||||||
|
|
||||||
if (ENABLE_LDPC_T2)
|
|
||||||
add_dependencies(nr_ulsim ldpc_t2)
|
|
||||||
endif()
|
|
||||||
if (ENABLE_LDPC_XDMA)
|
|
||||||
add_dependencies(nr_ulsim ldpc_xdma)
|
|
||||||
endif()
|
|
||||||
if (ENABLE_LDPC_CUDA)
|
|
||||||
add_dependencies(nr_ulsim ldpc_cuda)
|
|
||||||
endif()
|
|
||||||
add_dependencies(nr_ulsim ldpc ldpc_orig ldpc_optim ldpc_optim8seg ldpc_optim8segmulti)
|
|
||||||
|
|
||||||
target_link_libraries(nr_ulsim PRIVATE
|
target_link_libraries(nr_ulsim PRIVATE
|
||||||
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
||||||
m pthread ${T_LIB} ITTI dl shlib_loader nr_ue_phy_meas
|
m pthread ${T_LIB} ITTI dl shlib_loader nr_ue_phy_meas
|
||||||
@@ -2368,14 +2213,13 @@ if (${T_TRACER})
|
|||||||
#all "add_library" definitions
|
#all "add_library" definitions
|
||||||
ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap
|
ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap
|
||||||
params_libconfig oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
|
params_libconfig oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
|
||||||
oai_eth_transpro oai_mobipass coding HASHTABLE UTIL OMG_SUMO
|
oai_eth_transpro oai_mobipass HASHTABLE UTIL OMG_SUMO
|
||||||
SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL
|
SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL
|
||||||
NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
|
NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
|
||||||
MISC_NFAPI_LTE_LIB MISC_NFAPI_NR_LIB
|
MISC_NFAPI_LTE_LIB MISC_NFAPI_NR_LIB
|
||||||
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX
|
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX
|
||||||
L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON MAC_UE_NR ngap
|
L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON MAC_UE_NR ngap
|
||||||
CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU OPENAIR0_LIB
|
CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU OPENAIR0_LIB
|
||||||
ldpc_orig ldpc_optim ldpc_optim8seg ldpc_optim8segmulti ldpc_cl ldpc_cuda ldpc ldpc_t2 ldpc_xdma
|
|
||||||
dfts config_internals nr_common)
|
dfts config_internals nr_common)
|
||||||
if (TARGET ${i})
|
if (TARGET ${i})
|
||||||
add_dependencies(${i} generate_T)
|
add_dependencies(${i} generate_T)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
add_subdirectory(nr_phy_common)
|
add_subdirectory(nr_phy_common)
|
||||||
add_subdirectory(TOOLS)
|
add_subdirectory(TOOLS)
|
||||||
add_subdirectory(NR_TRANSPORT)
|
add_subdirectory(NR_TRANSPORT)
|
||||||
|
add_subdirectory(CODING)
|
||||||
|
|||||||
@@ -0,0 +1,94 @@
|
|||||||
|
set(PHY_TURBOSRC
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/3gpplte_sse.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/3gpplte.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder.c
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(coding MODULE ${PHY_TURBOSRC} )
|
||||||
|
set_target_properties(coding PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
|
||||||
|
set(PHY_LDPC_ORIG_SRC
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c
|
||||||
|
)
|
||||||
|
add_library(ldpc_orig MODULE ${PHY_LDPC_ORIG_SRC} )
|
||||||
|
set_target_properties(ldpc_orig PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
target_link_libraries(ldpc_orig PRIVATE ldpc_gen_HEADERS)
|
||||||
|
|
||||||
|
set(PHY_LDPC_OPTIM_SRC
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim.c
|
||||||
|
)
|
||||||
|
add_library(ldpc_optim MODULE ${PHY_LDPC_OPTIM_SRC} )
|
||||||
|
set_target_properties(ldpc_optim PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
target_link_libraries(ldpc_optim PRIVATE ldpc_gen_HEADERS)
|
||||||
|
|
||||||
|
set(PHY_LDPC_OPTIM8SEG_SRC
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8seg.c
|
||||||
|
)
|
||||||
|
add_library(ldpc_optim8seg MODULE ${PHY_LDPC_OPTIM8SEG_SRC} )
|
||||||
|
set_target_properties(ldpc_optim8seg PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
target_link_libraries(ldpc_optim8seg PRIVATE ldpc_gen_HEADERS)
|
||||||
|
|
||||||
|
set(PHY_LDPC_OPTIM8SEGMULTI_SRC
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
|
||||||
|
)
|
||||||
|
add_library(ldpc_optim8segmulti MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
|
||||||
|
set_target_properties(ldpc_optim8segmulti PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
target_link_libraries(ldpc_optim8segmulti PRIVATE ldpc_gen_HEADERS)
|
||||||
|
|
||||||
|
set(PHY_LDPC_CUDA_SRC
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
|
||||||
|
)
|
||||||
|
|
||||||
|
set(PHY_LDPC_CL_SRC
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_CL.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
|
||||||
|
)
|
||||||
|
add_custom_target( nrLDPC_decoder_kernels_CL
|
||||||
|
COMMAND gcc ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_CL.c -dD -DNRLDPC_KERNEL_SOURCE -E -o ${CMAKE_CURRENT_BINARY_DIR}/nrLDPC_decoder_kernels_CL.clc
|
||||||
|
SOURCES ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_CL.c
|
||||||
|
)
|
||||||
|
add_library(ldpc_cl MODULE ${PHY_LDPC_CL_SRC} )
|
||||||
|
set_target_properties(ldpc_cl PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
target_link_libraries(ldpc_cl OpenCL)
|
||||||
|
add_dependencies(ldpc_cl nrLDPC_decoder_kernels_CL)
|
||||||
|
|
||||||
|
##############################################
|
||||||
|
# Base CUDA setting
|
||||||
|
##############################################
|
||||||
|
|
||||||
|
add_boolean_option(ENABLE_LDPC_CUDA OFF "Build support for CUDA" OFF)
|
||||||
|
if (ENABLE_LDPC_CUDA)
|
||||||
|
find_package(CUDA REQUIRED)
|
||||||
|
SET(CUDA_NVCC_FLAG "${CUDA_NVCC_FLAGS};-arch=sm_60;")
|
||||||
|
SET(CUDA_VERBOSE_BUILD ON)
|
||||||
|
cuda_add_library(ldpc_cuda MODULE ${PHY_LDPC_CUDA_SRC})
|
||||||
|
set_target_properties(ldpc_cuda PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
|
||||||
|
set_target_properties(ldpc_cuda PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
if (NOT CUDA_FOUND)
|
||||||
|
message(FATAL_ERROR "no CUDA found")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_dependencies(ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc_optim8segmulti)
|
||||||
|
if (ENABLE_LDPC_CUDA)
|
||||||
|
add_dependencies(ldpctest ldpc_cuda)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#ensure that the T header files are generated before targets depending on them
|
||||||
|
if (${T_TRACER})
|
||||||
|
foreach(i coding ldpc_orig ldpc_optim ldpc_optim8seg ldpc_optim8segmulti ldpc_cl ldpc_cuda)
|
||||||
|
if (TARGET ${i})
|
||||||
|
add_dependencies(${i} generate_T)
|
||||||
|
endif()
|
||||||
|
endforeach(i)
|
||||||
|
endif (${T_TRACER})
|
||||||
|
|
||||||
|
add_subdirectory(nrLDPC_coding)
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
add_subdirectory(nrLDPC_coding_segment)
|
||||||
|
add_subdirectory(nrLDPC_coding_xdma)
|
||||||
|
add_subdirectory(nrLDPC_coding_t2)
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
set(PHY_NRLDPC_CODING_SEGMENT_SRC
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/nrLDPC_coding_segment_decoder.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/nrLDPC_coding_segment_encoder.c
|
||||||
|
${PHY_NR_CODINGIF}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(ldpc MODULE ${PHY_NRLDPC_CODING_SEGMENT_SRC})
|
||||||
|
set_target_properties(ldpc PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
|
||||||
|
add_dependencies(nr-softmodem ldpc)
|
||||||
|
add_dependencies(nr-uesoftmodem ldpc)
|
||||||
|
add_dependencies(nr_ulsim ldpc)
|
||||||
|
add_dependencies(nr_ulschsim ldpc)
|
||||||
|
add_dependencies(nr_dlsim ldpc)
|
||||||
|
add_dependencies(nr_dlschsim ldpc)
|
||||||
|
|
||||||
|
if (${T_TRACER})
|
||||||
|
add_dependencies(ldpc generate_T)
|
||||||
|
endif(${T_TRACER})
|
||||||
|
|
||||||
|
add_dependencies(ldpc ldpc_orig ldpc_optim ldpc_optim8seg ldpc_optim8segmulti)
|
||||||
|
if (ENABLE_LDPC_CUDA)
|
||||||
|
add_dependencies(ldpc ldpc_cuda)
|
||||||
|
endif()
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
##########################################################
|
||||||
|
|
||||||
|
# LDPC offload library - AMD T2 Accelerator Card
|
||||||
|
##########################################################
|
||||||
|
|
||||||
|
add_boolean_option(ENABLE_LDPC_T2 OFF "Build support for LDPC Offload to T2 library" OFF)
|
||||||
|
|
||||||
|
if (ENABLE_LDPC_T2)
|
||||||
|
|
||||||
|
pkg_check_modules(LIBDPDK_T2 REQUIRED libdpdk=20.11.9)
|
||||||
|
|
||||||
|
find_library(PMD_T2 NAMES rte_baseband_accl_ldpc HINTS ${LIBDPDK_T2_LIBRARY_DIRS})
|
||||||
|
if (NOT PMD_T2)
|
||||||
|
message(FATAL_ERROR "could not find poll-mode driver for AccelerComm T2 LDPC Offload (rte_baseband_accl_ldpc.so)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "T2 build: use ${PMD_T2}")
|
||||||
|
set(PHY_NRLDPC_CODING_T2_SRC
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_t2/nrLDPC_coding_t2.c
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(ldpc_t2 MODULE ${PHY_NRLDPC_CODING_T2_SRC})
|
||||||
|
set_target_properties(ldpc_t2 PROPERTIES COMPILE_FLAGS "-DALLOW_EXPERIMENTAL_API")
|
||||||
|
set_target_properties(ldpc_t2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
target_link_libraries(ldpc_t2 PRIVATE ldpc_gen_HEADERS ${LIBDPDK_T2_LDFLAGS} ${PMD_T2})
|
||||||
|
|
||||||
|
add_dependencies(nr-softmodem ldpc_t2)
|
||||||
|
add_dependencies(nr-uesoftmodem ldpc_t2)
|
||||||
|
add_dependencies(nr_ulsim ldpc_t2)
|
||||||
|
add_dependencies(nr_ulschsim ldpc_t2)
|
||||||
|
add_dependencies(nr_dlsim ldpc_t2)
|
||||||
|
add_dependencies(nr_dlschsim ldpc_t2)
|
||||||
|
|
||||||
|
if (${T_TRACER})
|
||||||
|
add_dependencies(ldpc_t2 generate_T)
|
||||||
|
endif(${T_TRACER})
|
||||||
|
|
||||||
|
endif()
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
##########################################################
|
||||||
|
|
||||||
|
# LDPC offload library - XDMA
|
||||||
|
##########################################################
|
||||||
|
|
||||||
|
add_boolean_option(ENABLE_LDPC_XDMA OFF "Build support for LDPC Offload to XDMA library" OFF)
|
||||||
|
|
||||||
|
if (ENABLE_LDPC_XDMA)
|
||||||
|
|
||||||
|
set(PHY_NRLDPC_CODING_XDMA_SRC
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_xdma/nrLDPC_coding_xdma_offload.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_xdma/nrLDPC_coding_xdma.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/nrLDPC_coding_segment_encoder.c
|
||||||
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_load.c
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(ldpc_xdma MODULE ${PHY_NRLDPC_CODING_XDMA_SRC})
|
||||||
|
set_target_properties(ldpc_xdma PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
|
||||||
|
add_dependencies(nr-softmodem ldpc_xdma)
|
||||||
|
add_dependencies(nr-uesoftmodem ldpc_xdma)
|
||||||
|
add_dependencies(nr_ulsim ldpc_xdma)
|
||||||
|
add_dependencies(nr_ulschsim ldpc_xdma)
|
||||||
|
add_dependencies(nr_dlsim ldpc_xdma)
|
||||||
|
add_dependencies(nr_dlschsim ldpc_xdma)
|
||||||
|
|
||||||
|
if (${T_TRACER})
|
||||||
|
add_dependencies(ldpc_xdma generate_T)
|
||||||
|
endif(${T_TRACER})
|
||||||
|
|
||||||
|
add_dependencies(ldpc_xdma ldpc_orig ldpc_optim ldpc_optim8seg ldpc_optim8segmulti)
|
||||||
|
if (ENABLE_LDPC_CUDA)
|
||||||
|
add_dependencies(ldpc_xdma ldpc_cuda)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endif()
|
||||||
Reference in New Issue
Block a user