Fix rebasing problems
This commit is contained in:
@@ -166,7 +166,7 @@ if (CUDA_FOUND)
|
|||||||
add_definitions("-L/usr/local/cuda/lib64")
|
add_definitions("-L/usr/local/cuda/lib64")
|
||||||
|
|
||||||
SET(CUDA_NVCC_FLAGS
|
SET(CUDA_NVCC_FLAGS
|
||||||
"${CUDA_NVCC_FLAGS};-arch=sm_60;")
|
"${CUDA_NVCC_FLAGS};--gpu-architecture=compute_60")
|
||||||
|
|
||||||
# Disable warnings for CUDA
|
# 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")
|
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_optim MODULE ${PHY_LDPC_OPTIM_SRC} )
|
||||||
add_library(ldpc_optim8seg MODULE ${PHY_LDPC_OPTIM8SEG_SRC} )
|
add_library(ldpc_optim8seg MODULE ${PHY_LDPC_OPTIM8SEG_SRC} )
|
||||||
if (CUDA_FOUND)
|
if (CUDA_FOUND)
|
||||||
add_library(ldpc_cuda MODULE ${PHY_LDPC_CUDA_SRC} )
|
cuda_add_library(ldpc_cuda MODULE ${PHY_LDPC_CUDA_SRC} )
|
||||||
CUDA_ADD_CUFFT_TO_TARGET(ldpc_cuda)
|
set_target_properties(ldpc_cuda PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
|
||||||
|
# CUDA_ADD_CUFFT_TO_TARGET(ldpc_cuda)
|
||||||
endif (CUDA_FOUND)
|
endif (CUDA_FOUND)
|
||||||
|
|
||||||
add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
|
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 )
|
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
|
target_link_libraries(ldpctest
|
||||||
-Wl,--start-group UTIL SIMU_COMMON SIMU PHY_NR PHY_COMMON PHY_NR_COMMON CONFIG_LIB -Wl,--end-group
|
-Wl,--start-group UTIL SIMU_COMMON SIMU PHY_NR PHY_COMMON PHY_NR_COMMON CONFIG_LIB -Wl,--end-group
|
||||||
m pthread ${ATLAS_LIBRARIES} dl
|
m pthread ${ATLAS_LIBRARIES} dl
|
||||||
|
|||||||
@@ -436,7 +436,7 @@ int main( int argc, char **argv ) {
|
|||||||
itti_init(TASK_MAX, tasks_info);
|
itti_init(TASK_MAX, tasks_info);
|
||||||
|
|
||||||
init_opt() ;
|
init_opt() ;
|
||||||
load_nrLDPClib();
|
load_nrLDPClib(0);
|
||||||
|
|
||||||
if (ouput_vcd) {
|
if (ouput_vcd) {
|
||||||
vcd_signal_dumper_init("/tmp/openair_dump_nrUE.vcd");
|
vcd_signal_dumper_init("/tmp/openair_dump_nrUE.vcd");
|
||||||
|
|||||||
@@ -101,8 +101,8 @@ int test_ldpc(short No_iteration,
|
|||||||
unsigned int *crc_misses,
|
unsigned int *crc_misses,
|
||||||
time_stats_t *time_optim,
|
time_stats_t *time_optim,
|
||||||
time_stats_t *time_decoder,
|
time_stats_t *time_decoder,
|
||||||
n_iter_stats_t *dec_iter,
|
n_iter_stats_t *dec_iter
|
||||||
short run_cuda)
|
)
|
||||||
{
|
{
|
||||||
//clock initiate
|
//clock initiate
|
||||||
//time_stats_t time,time_optim,tinput,tprep,tparity,toutput, time_decoder;
|
//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.R=code_rate_vec[R_ind];//13;
|
||||||
decParams.numMaxIter=No_iteration;
|
decParams.numMaxIter=No_iteration;
|
||||||
decParams.outMode = nrLDPC_outMode_BIT;
|
decParams.outMode = nrLDPC_outMode_BIT;
|
||||||
|
decParams.block_length=block_length;
|
||||||
//decParams.outMode =nrLDPC_outMode_LLRINT8;
|
//decParams.outMode =nrLDPC_outMode_LLRINT8;
|
||||||
#ifdef CUDA_FLAG
|
nrLDPC_initcall(&decParams, (int8_t*)channel_output_fixed[j], (int8_t*)estimated_output[j]);
|
||||||
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
|
|
||||||
for(j=0;j<n_segments;j++) {
|
for(j=0;j<n_segments;j++) {
|
||||||
start_meas(time_decoder);
|
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);
|
n_iter = nrLDPC_decoder(&decParams, (int8_t*)channel_output_fixed[j], (int8_t*)estimated_output[j], p_nrLDPC_procBuf, p_decoder_profiler);
|
||||||
}
|
stop_meas(time_decoder);
|
||||||
#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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//for (i=(Kb+nrows) * Zc-5;i<(Kb+nrows) * Zc;i++)
|
//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[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
#ifdef CUDA_FLAG
|
|
||||||
warmup_for_GPU();
|
|
||||||
#endif
|
|
||||||
unsigned int errors, errors_bit, crc_misses;
|
unsigned int errors, errors_bit, crc_misses;
|
||||||
double errors_bit_uncoded;
|
double errors_bit_uncoded;
|
||||||
short block_length=8448; // decoder supports length: 1201 -> 1280, 2401 -> 2560
|
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);
|
printf("SNR0 %f: \n", SNR0);
|
||||||
|
|
||||||
|
|
||||||
load_nrLDPClib();
|
load_nrLDPClib(run_cuda);
|
||||||
load_nrLDPClib_ref("_orig", &encoder_orig);
|
load_nrLDPClib_ref("_orig", &encoder_orig);
|
||||||
//for (block_length=8;block_length<=MAX_BLOCK_LENGTH;block_length+=8)
|
//for (block_length=8;block_length<=MAX_BLOCK_LENGTH;block_length+=8)
|
||||||
|
|
||||||
@@ -691,8 +674,7 @@ int main(int argc, char *argv[])
|
|||||||
&crc_misses,
|
&crc_misses,
|
||||||
time_optim,
|
time_optim,
|
||||||
time_decoder,
|
time_decoder,
|
||||||
dec_iter,
|
dec_iter);
|
||||||
run_cuda);
|
|
||||||
|
|
||||||
printf("SNR %f, BLER %f (%u/%d)\n", SNR, (float)decoded_errors[i]/(float)n_trials, decoded_errors[i], n_trials);
|
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);
|
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);
|
||||||
|
|||||||
@@ -46,7 +46,8 @@
|
|||||||
#endif
|
#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);
|
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)
|
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;
|
uint32_t numLLR;
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ typedef struct nrLDPC_dec_params {
|
|||||||
uint16_t Z; /**< Lifting size */
|
uint16_t Z; /**< Lifting size */
|
||||||
uint8_t R; /**< Decoding rate: Format 15,13,... for code rates 1/5, 1/3,... */
|
uint8_t R; /**< Decoding rate: Format 15,13,... for code rates 1/5, 1/3,... */
|
||||||
uint8_t numMaxIter; /**< Maximum number of iterations */
|
uint8_t numMaxIter; /**< Maximum number of iterations */
|
||||||
|
int block_length;
|
||||||
e_nrLDPC_outMode outMode; /**< Output format */
|
e_nrLDPC_outMode outMode; /**< Output format */
|
||||||
} t_nrLDPC_dec_params;
|
} t_nrLDPC_dec_params;
|
||||||
|
|
||||||
|
|||||||
@@ -7,14 +7,14 @@
|
|||||||
* \note
|
* \note
|
||||||
* \warning
|
* \warning
|
||||||
*/
|
*/
|
||||||
|
#include <iostream>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <cuda_runtime.h>
|
#include <cuda_runtime.h>
|
||||||
#include <cuda.h>
|
#include <cuda.h>
|
||||||
#include "PHY/CODING/nrLDPC_decoder/nrLDPC_types.h"
|
#include "PHY/CODING/nrLDPC_decoder/nrLDPC_types.h"
|
||||||
#include "PHY/CODING/nrLDPC_decoder/nrLDPCdecoder_defs.h"
|
#include "PHY/CODING/nrLDPC_decoder/nrLDPCdecoder_defs.h"
|
||||||
|
#include "assertions.h"
|
||||||
#include "bgs/BG1_I0"
|
#include "bgs/BG1_I0"
|
||||||
#include "bgs/BG1_I1"
|
#include "bgs/BG1_I1"
|
||||||
#include "bgs/BG1_I2"
|
#include "bgs/BG1_I2"
|
||||||
@@ -462,10 +462,11 @@ void read_BG(int BG, int *h, int row, int col)
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C"
|
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;
|
uint16_t Zc = p_decParams->Z;
|
||||||
uint8_t BG = p_decParams->BG;
|
uint8_t BG = p_decParams->BG;
|
||||||
|
int block_length = p_decParams->block_length;
|
||||||
uint8_t row,col;
|
uint8_t row,col;
|
||||||
if(BG == 1){
|
if(BG == 1){
|
||||||
row = 46;
|
row = 46;
|
||||||
@@ -530,13 +531,12 @@ void nrLDPC_initcall(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_
|
|||||||
|
|
||||||
|
|
||||||
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_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;
|
uint16_t Zc = p_decParams->Z;
|
||||||
uint8_t BG = p_decParams->BG;
|
uint8_t BG = p_decParams->BG;
|
||||||
uint8_t numMaxIter = p_decParams->numMaxIter;
|
uint8_t numMaxIter = p_decParams->numMaxIter;
|
||||||
|
int block_length = p_decParams->block_length;
|
||||||
e_nrLDPC_outMode outMode = p_decParams->outMode;
|
e_nrLDPC_outMode outMode = p_decParams->outMode;
|
||||||
cudaError_t cudaStatus;
|
cudaError_t cudaStatus;
|
||||||
uint8_t row,col;
|
uint8_t row,col;
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ typedef struct {
|
|||||||
time_stats_t *toutput;
|
time_stats_t *toutput;
|
||||||
}encoder_implemparams_t;
|
}encoder_implemparams_t;
|
||||||
#define INIT0_LDPCIMPLEMPARAMS {0,0,0,NULL,NULL,NULL,NULL}
|
#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*);
|
typedef int(*nrLDPC_encoderfunc_t)(unsigned char **,unsigned char **,int,int,short, short, encoder_implemparams_t*);
|
||||||
//============================================================================================================================
|
//============================================================================================================================
|
||||||
// decoder interface
|
// decoder interface
|
||||||
@@ -56,4 +57,4 @@ typedef int(*nrLDPC_encoderfunc_t)(unsigned char **,unsigned char **,int,int,sho
|
|||||||
\param p_profiler LDPC profiler statistics
|
\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* );
|
typedef int32_t(*nrLDPC_decoderfunc_t)(t_nrLDPC_dec_params* , int8_t*, int8_t* , t_nrLDPC_procBuf* , t_nrLDPC_time_stats* );
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -23,13 +23,16 @@
|
|||||||
#ifdef LDPC_LOADER
|
#ifdef LDPC_LOADER
|
||||||
nrLDPC_decoderfunc_t nrLDPC_decoder;
|
nrLDPC_decoderfunc_t nrLDPC_decoder;
|
||||||
nrLDPC_encoderfunc_t nrLDPC_encoder;
|
nrLDPC_encoderfunc_t nrLDPC_encoder;
|
||||||
|
nrLDPC_initcallfunc_t nrLDPC_initcall;
|
||||||
#else
|
#else
|
||||||
/* functions to load the LDPC shared lib, implemented in openair1/PHY/CODING/nrLDPC_load.c */
|
/* 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
|
extern int load_nrLDPClib_ref(char *libversion, nrLDPC_encoderfunc_t * nrLDPC_encoder_ptr); // for ldpctest
|
||||||
/* ldpc coder/decoder functions, as loaded by load_nrLDPClib(). */
|
/* ldpc coder/decoder functions, as loaded by load_nrLDPClib(). */
|
||||||
|
extern nrLDPC_initcallfunc_t nrLDPC_initcall;
|
||||||
|
|
||||||
extern nrLDPC_decoderfunc_t nrLDPC_decoder;
|
extern nrLDPC_decoderfunc_t nrLDPC_decoder;
|
||||||
extern nrLDPC_encoderfunc_t nrLDPC_encoder;
|
extern nrLDPC_encoderfunc_t nrLDPC_encoder;
|
||||||
// inline functions:
|
// inline functions:
|
||||||
#include "openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init_mem.h"
|
#include "openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init_mem.h"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -42,14 +42,13 @@
|
|||||||
|
|
||||||
|
|
||||||
/* 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[3];
|
static loader_shlibfunc_t shlib_fdesc[3];
|
||||||
|
|
||||||
/* arguments used when called from phy simulators exec's which do not use the config module */
|
/* 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 */
|
/* arg is used to initialize the config module so that the loader works as expected */
|
||||||
char *arg[64]={"ldpctest","-O","cmdlineonly::dbgl0",NULL,NULL};
|
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 *ptr = (char*)config_get_if();
|
||||||
char libname[64]="ldpc";
|
char libname[64]="ldpc";
|
||||||
int argc=3;
|
int argc=3;
|
||||||
@@ -65,10 +64,12 @@ int load_nrLDPClib(void) {
|
|||||||
}
|
}
|
||||||
shlib_fdesc[0].fname = "nrLDPC_decod";
|
shlib_fdesc[0].fname = "nrLDPC_decod";
|
||||||
shlib_fdesc[1].fname = "nrLDPC_encod";
|
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");
|
AssertFatal( (ret >= 0),"Error loading ldpc decoder");
|
||||||
nrLDPC_decoder = (nrLDPC_decoderfunc_t)shlib_fdesc[0].fptr;
|
nrLDPC_decoder = (nrLDPC_decoderfunc_t)shlib_fdesc[0].fptr;
|
||||||
nrLDPC_encoder = (nrLDPC_encoderfunc_t)shlib_fdesc[1].fptr;
|
nrLDPC_encoder = (nrLDPC_encoderfunc_t)shlib_fdesc[1].fptr;
|
||||||
|
nrLDPC_initcall = (nrLDPC_initcallfunc_t)shlib_fdesc[2].fptr;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
|
|||||||
crcTableInit();
|
crcTableInit();
|
||||||
init_scrambling_luts();
|
init_scrambling_luts();
|
||||||
init_pucch2_luts();
|
init_pucch2_luts();
|
||||||
load_nrLDPClib();
|
load_nrLDPClib(0);
|
||||||
// PBCH DMRS gold sequences generation
|
// PBCH DMRS gold sequences generation
|
||||||
nr_init_pbch_dmrs(gNB);
|
nr_init_pbch_dmrs(gNB);
|
||||||
//PDCCH DMRS init
|
//PDCCH DMRS init
|
||||||
|
|||||||
Reference in New Issue
Block a user