mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-23 20:58:55 -05:00
Further algorithmic tweaks in the JT9 decoder.
More detailed message to come, with comparative timing statistics. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4926 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
19c4d67b29
commit
79a6ed5464
@ -521,8 +521,8 @@ elseif (Fortran_COMPILER_NAME MATCHES "g77")
|
|||||||
else (Fortran_COMPILER_NAME MATCHES "gfortran.*")
|
else (Fortran_COMPILER_NAME MATCHES "gfortran.*")
|
||||||
message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
|
message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
|
||||||
message ("Fortran compiler: " ${Fortran_COMPILER_NAME})
|
message ("Fortran compiler: " ${Fortran_COMPILER_NAME})
|
||||||
message ("No optimized Fortran compiler flags are known, we just try -O2...")
|
message ("No optimized Fortran compiler flags are known, we just try -O3...")
|
||||||
set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -O2 ${General_FFLAGS}")
|
set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -O3 ${General_FFLAGS}")
|
||||||
set (CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -fbounds-check ${General_FFLAGS}")
|
set (CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -fbounds-check ${General_FFLAGS}")
|
||||||
endif (Fortran_COMPILER_NAME MATCHES "gfortran.*")
|
endif (Fortran_COMPILER_NAME MATCHES "gfortran.*")
|
||||||
|
|
||||||
|
@ -13,8 +13,8 @@ CC = c:/JTSDK/Qt5/Tools/mingw48_32/bin/gcc
|
|||||||
FC = c:/JTSDK/Qt5/Tools/mingw48_32/bin/gfortran
|
FC = c:/JTSDK/Qt5/Tools/mingw48_32/bin/gfortran
|
||||||
CXX = c:/JTSDK/Qt5/Tools/mingw48_32/bin/g++
|
CXX = c:/JTSDK/Qt5/Tools/mingw48_32/bin/g++
|
||||||
|
|
||||||
FFLAGS = -O2 -Wall -fno-second-underscore -DWIN32
|
FFLAGS = -O3 -Wall -Wno-conversion -fno-second-underscore -DWIN32
|
||||||
CFLAGS = -I. -fbounds-check -mno-stack-arg-probe -DWIN32
|
CFLAGS = -I. -mno-stack-arg-probe -DWIN32
|
||||||
|
|
||||||
# Default rules
|
# Default rules
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
|
@ -12,8 +12,7 @@ CP = cp
|
|||||||
RANLIB = ranlib
|
RANLIB = ranlib
|
||||||
RM = rm -f
|
RM = rm -f
|
||||||
|
|
||||||
FFLAGS = -O2 -fbounds-check -Wall -Wno-conversion -fno-second-underscore \
|
FFLAGS = -O3 -funroll-loops -Wall -Wno-conversion -fno-second-underscore -DUNIX
|
||||||
-fPIE -DUNIX
|
|
||||||
CFLAGS = -I. -fbounds-check -fPIE
|
CFLAGS = -I. -fbounds-check -fPIE
|
||||||
|
|
||||||
# Default rules
|
# Default rules
|
||||||
@ -37,9 +36,9 @@ OBJS1 = astrosub.o astro0.o astro.o tm2.o sun.o moondop.o coord.o tmoonsub.o \
|
|||||||
grid2k.o unpacktext.o getpfx2.o packmsg.o deg2grid.o \
|
grid2k.o unpacktext.o getpfx2.o packmsg.o deg2grid.o \
|
||||||
packtext.o getpfx1.o packcall.o k2grid.o packgrid.o \
|
packtext.o getpfx1.o packcall.o k2grid.o packgrid.o \
|
||||||
nchar.o four2a.o grid2deg.o pfxdump.o wisdom.o \
|
nchar.o four2a.o grid2deg.o pfxdump.o wisdom.o \
|
||||||
symspec.o analytic.o db.o genjt9.o \
|
symspec.o analytic.o db.o genjt9.o jt9fano.o \
|
||||||
packbits.o unpackbits.o encode232.o interleave9.o \
|
packbits.o unpackbits.o encode232.o interleave9.o \
|
||||||
entail.o fano232.o gran.o sync9.o decode9.o \
|
entail.o fano232.o gran.o sync9.o decjt9.o \
|
||||||
fil3.o decoder.o grid2n.o n2grid.o timer.o \
|
fil3.o decoder.o grid2n.o n2grid.o timer.o \
|
||||||
softsym.o peakdt9.o getlags.o afc9.o fchisq.o \
|
softsym.o peakdt9.o getlags.o afc9.o fchisq.o \
|
||||||
twkfreq.o downsam9.o symspec2.o ipcomm.o sleep_msec.o \
|
twkfreq.o downsam9.o symspec2.o ipcomm.o sleep_msec.o \
|
||||||
@ -59,7 +58,7 @@ libjt9.a: $(OBJS1)
|
|||||||
OBJS2 = jt9.o jt9a.o jt9b.o jt9c.o
|
OBJS2 = jt9.o jt9a.o jt9b.o jt9c.o
|
||||||
|
|
||||||
jt9: $(OBJS2) libjt9.a
|
jt9: $(OBJS2) libjt9.a
|
||||||
$(CXX) -o jt9 $(OBJS2) -L. -ljt9 -lQt5Core -lfftw3f `$(FC) -print-file-name=libgfortran.so`
|
$(CXX) -o jt9 $(OBJS2) -L. -ljt9 -lQt5Core -lfftw3f_threads -lfftw3f `$(FC) -print-file-name=libgfortran.so`
|
||||||
$(MKDIR) -p $(EXE_DIR)
|
$(MKDIR) -p $(EXE_DIR)
|
||||||
$(CP) jt9 $(EXE_DIR)
|
$(CP) jt9 $(EXE_DIR)
|
||||||
|
|
||||||
|
@ -46,9 +46,13 @@ subroutine decjt9(ss,id2,nutc,nfqso,newdat,npts8,nfa,nfsplit,nfb,ntol, &
|
|||||||
ccflim=2.7
|
ccflim=2.7
|
||||||
endif
|
endif
|
||||||
if(ndepth.ge.3 .or. nqd.eq.1) then
|
if(ndepth.ge.3 .or. nqd.eq.1) then
|
||||||
limit=50000
|
limit=30000
|
||||||
ccflim=2.5
|
ccflim=2.5
|
||||||
endif
|
endif
|
||||||
|
if(nagain.ne.0) then
|
||||||
|
limit=100000
|
||||||
|
ccflim=2.4
|
||||||
|
endif
|
||||||
ccfok=.false.
|
ccfok=.false.
|
||||||
|
|
||||||
if(nqd.eq.1) then
|
if(nqd.eq.1) then
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
subroutine downsam9(id2,npts8,nsps8,newdat,nspsd,fpk,c2,nz2)
|
subroutine downsam9(id2,npts8,nsps8,newdat,nspsd,fpk,c2,nz2)
|
||||||
|
|
||||||
!Downsample from id2() into C2() so as to yield nspsd samples per symbol,
|
!Downsample from id2() into c2() so as to yield nspsd samples per symbol,
|
||||||
!mixing from fpk down to zero frequency.
|
!mixing from fpk down to zero frequency. The downsample factor is 432.
|
||||||
|
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
use FFTW3
|
use FFTW3
|
||||||
@ -9,23 +9,23 @@ subroutine downsam9(id2,npts8,nsps8,newdat,nspsd,fpk,c2,nz2)
|
|||||||
include 'constants.f90'
|
include 'constants.f90'
|
||||||
! parameter (NMAX1=1024*1920)
|
! parameter (NMAX1=1024*1920)
|
||||||
parameter (NMAX1=884736)
|
parameter (NMAX1=884736)
|
||||||
type(C_PTR) :: plan !Pointers plan for big FFT
|
type(C_PTR) :: plan !Pointers plan for big FFT
|
||||||
integer*2 id2(0:8*npts8-1)
|
integer*2 id2(0:8*npts8-1)
|
||||||
real*4 x1(0:NMAX1-1)
|
real*4 x1(0:NMAX1-1)
|
||||||
complex c1(0:NMAX1/2)
|
complex c1(0:NMAX1/2)
|
||||||
complex c2(0:4096-1)
|
complex c2(0:1440-1)
|
||||||
real s(5000)
|
real s(5000)
|
||||||
logical first
|
logical first
|
||||||
common/patience/npatience,nthreads
|
common/patience/npatience,nthreads
|
||||||
data first/.true./
|
data first/.true./
|
||||||
save plan,first
|
save plan,first
|
||||||
|
|
||||||
nfft1=1024*nsps8 !Forward FFT length
|
nfft1=604800 !Forward FFT length
|
||||||
df1=12000.0/nfft1
|
df1=12000.0/nfft1
|
||||||
npts=8*npts8
|
npts=8*npts8
|
||||||
|
|
||||||
if(newdat.eq.1) then
|
if(newdat.eq.1) then
|
||||||
fac=6.963e-6 !Why this weird constant?
|
fac=6.963e-6 !Why this weird constant?
|
||||||
do i=0,npts-1
|
do i=0,npts-1
|
||||||
x1(i)=fac*id2(i)
|
x1(i)=fac*id2(i)
|
||||||
enddo
|
enddo
|
||||||
|
@ -3,9 +3,9 @@ subroutine softsym(id2,npts8,nsps8,newdat,fpk,syncpk,snrdb,xdt, &
|
|||||||
|
|
||||||
! Compute the soft symbols
|
! Compute the soft symbols
|
||||||
|
|
||||||
complex c2(0:4096-1)
|
complex c2(0:1440-1)
|
||||||
complex c3(0:4096-1)
|
complex c3(0:1440-1)
|
||||||
complex c5(0:4096-1)
|
complex c5(0:1440-1)
|
||||||
real a(3)
|
real a(3)
|
||||||
integer*1 i1SoftSymbolsScrambled(207)
|
integer*1 i1SoftSymbolsScrambled(207)
|
||||||
integer*1 i1SoftSymbols(207)
|
integer*1 i1SoftSymbols(207)
|
||||||
|
Loading…
Reference in New Issue
Block a user