Compare commits

...

2 Commits

Author SHA1 Message Date
mir
3ea3f427b7 from idft(dft()) to dft(idft()) 2023-11-29 20:43:28 +01:00
Raymond Knopp
a699feda87 build of oai_dfts unit test in openair1/PHY/TOOLS 2023-11-19 11:35:54 +01:00
3 changed files with 37 additions and 8 deletions

View File

@@ -2,7 +2,7 @@ oai_dfts_sse4: oai_dfts.c
gcc -O3 -std=gnu99 -msse4.1 -o oai_dfts_sse4 oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/radio/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
oai_dfts_avx2: oai_dfts.c
gcc -O2 -std=gnu99 -mavx2 -g -ggdb -o oai_dfts_avx2 oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/radio/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
gcc -O2 -std=gnu99 -mavx2 -g -ggdb -o oai_dfts_avx2 oai_dfts.c $$OPENAIR_HOME/common/utils/time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/openair1/SIMULATION/TOOLS/rangen_double.c $$OPENAIR_HOME/common/utils/LOG/log.c $$OPENAIR_HOME/common/config/config_userapi.c $$OPENAIR_HOME/common/config/config_cmdline.c $$OPENAIR_HOME/common/config/config_common.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/radio/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -DNB_ANTENNAS_TX=1 -DMAX_NUM_CCs=1 -lm -lpthread # -DD256STATS #-DD64STATS
oai_dfts_avx2.s: oai_dfts.c
gcc -O2 -std=gnu99 -mavx2 -S oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/radio/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS

View File

@@ -7948,8 +7948,28 @@ void idft(uint8_t sizeidx, int16_t *input,int16_t *output,unsigned char scale_fl
#ifdef MR_MAIN
#include <string.h>
#include <stdio.h>
#include "common/config/config_load_configmodule.h"
#include "../../SIMULATION/TOOLS/sim.h"
#define LOG_M write_output
configmodule_interface_t *cfgptr=NULL;
configmodule_interface_t *uniqCfg = NULL;
void exit_function(const char *file, const char *function, const int line, const char *s, const int assert) {
exit(-1);
}
static
int64_t time_now_ns(void)
{
struct timespec tms;
if (clock_gettime(CLOCK_REALTIME,&tms)) {
return -1;
}
int64_t nanos = tms.tv_sec * 1000000000 + tms.tv_nsec;
return nanos;
}
/*#define LOG_M write_output
int write_output(const char *fname,const char *vname,void *data,int length,int dec,char format)
{
@@ -8104,7 +8124,7 @@ int write_output(const char *fname,const char *vname,void *data,int length,int d
return 0;
}
*/
int main(int argc, char**argv)
{
@@ -8594,25 +8614,34 @@ int main(int argc, char**argv)
else
((int16_t*)x)[i] = -364;
}
/*
for (i=2*(4096-1200);i<8192;i++) {
if ((taus() & 1)==0)
((int16_t*)x)[i] = 364;
else
((int16_t*)x)[i] = -364;
}
reset_meas(&ts);
*/
for(int i = 0; i < 8192; ++i){
((int16_t*)x)[2*i] = 1024*sin(8*M_PI*i/4096);
((int16_t*)x)[2*i+1] = 0;
}
reset_meas(&ts);
int64_t t0=time_now_ns();
for (i=0; i<10000; i++) {
start_meas(&ts);
idft4096((int16_t *)x,(int16_t *)y,1);
dft4096((int16_t *)x,(int16_t *)y,1);
stop_meas(&ts);
}
printf("\n\n4096-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
int64_t t1=time_now_ns();
printf("\n\n4096-point(%f cycles, %d ns)\n",(double)ts.diff/(double)ts.trials,(t1-t0)/10000);
LOG_M("y4096.m","y4096",y,4096,1,1);
LOG_M("x4096.m","x4096",x,4096,1,1);
dft4096((int16_t *)y,(int16_t *)x2,1);
idft4096((int16_t *)y,(int16_t *)x2,1);
LOG_M("x4096_2.m","x4096_2",x2,4096,1,1);
// NR 160Mhz, 434 PRB, 3/4 sampling