diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d569239e0..7093b17218 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) 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") ############################################################## @@ -786,14 +750,6 @@ include_directories(${NFAPI_USER_DIR}) # 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 ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_init.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 ) -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 ${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 ${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(ldpc MODULE ${PHY_NRLDPC_CODING_SEGMENT_SRC}) - set(PHY_SRC_COMMON ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools_common.c ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c @@ -2070,16 +1955,6 @@ if(E2_AGENT) 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 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) @@ -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 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 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) @@ -2198,11 +2059,6 @@ add_executable(ldpctest ${PHY_NR_CODINGIF} ${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 -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON -Wl,--end-group m pthread dl shlib_loader ${T_LIB} @@ -2299,17 +2155,6 @@ add_executable(nr_ulsim ${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 -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 @@ -2368,14 +2213,13 @@ if (${T_TRACER}) #all "add_library" definitions ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap 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 NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_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 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 - ldpc_orig ldpc_optim ldpc_optim8seg ldpc_optim8segmulti ldpc_cl ldpc_cuda ldpc ldpc_t2 ldpc_xdma dfts config_internals nr_common) if (TARGET ${i}) add_dependencies(${i} generate_T) diff --git a/openair1/PHY/CMakeLists.txt b/openair1/PHY/CMakeLists.txt index 8c055bf878..2d74e9aedc 100644 --- a/openair1/PHY/CMakeLists.txt +++ b/openair1/PHY/CMakeLists.txt @@ -1,3 +1,4 @@ add_subdirectory(nr_phy_common) add_subdirectory(TOOLS) add_subdirectory(NR_TRANSPORT) +add_subdirectory(CODING) diff --git a/openair1/PHY/CODING/CMakeLists.txt b/openair1/PHY/CODING/CMakeLists.txt new file mode 100644 index 0000000000..5a319932e1 --- /dev/null +++ b/openair1/PHY/CODING/CMakeLists.txt @@ -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) diff --git a/openair1/PHY/CODING/nrLDPC_coding/CMakeLists.txt b/openair1/PHY/CODING/nrLDPC_coding/CMakeLists.txt new file mode 100644 index 0000000000..e60ca479bb --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_coding/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(nrLDPC_coding_segment) +add_subdirectory(nrLDPC_coding_xdma) +add_subdirectory(nrLDPC_coding_t2) diff --git a/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/CMakeLists.txt b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/CMakeLists.txt new file mode 100644 index 0000000000..42dcf74607 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_segment/CMakeLists.txt @@ -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() diff --git a/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_t2/CMakeLists.txt b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_t2/CMakeLists.txt new file mode 100644 index 0000000000..36504ff506 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_t2/CMakeLists.txt @@ -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() diff --git a/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_xdma/CMakeLists.txt b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_xdma/CMakeLists.txt new file mode 100644 index 0000000000..4b76a5dd94 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_xdma/CMakeLists.txt @@ -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()