Commit Graph

325 Commits

Author SHA1 Message Date
Joe Taylor
d91aed5aee Improved, simplified sort routine; faster and better "flatten"
procedure; better window functions for some FFTs, resulting in
better decoder performance; User-selectable colors for backgrounds
of decoded messages.  NB: more testing is desirable!



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4951 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-11 00:50:35 +00:00
Bill Somerville
ff43a95498 Add more decoding parameters to jt9 command line program
Options have been added to control frequency cut off values, mode and, Tx mode.

The comand line parser now has optional long option names and usage help.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4949 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-10 14:04:54 +00:00
Bill Somerville
566f9e01b6 Ensure prompt output of decoded messages
Outputo buffer flush commands have been added after each decoded message output
to ensure that other processes get timely updates of newly decoded messages.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4948 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-10 14:04:47 +00:00
Joe Taylor
93b729282b The "big FFTs" should be computed only once for each new set of Rx data.
This requires setting newdat=0 after the big FFT is computed.  In the OMP
code this must be done separately for each mode; so new variables newdat9 
and newdat65 have been defined.  Both are set to "newdat", the value
forwarded from the GUI, each time jt9[_omp][.exe] goes into action. 


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4946 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-08 15:07:31 +00:00
Bill Somerville
609bcb0009 Fix defect in timer call chain maintenance
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4945 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-08 11:56:22 +00:00
Bill Somerville
dba7f5b393 Use correct type for FFTW3 argument
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4944 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-08 11:10:28 +00:00
Bill Somerville
d42cf40268 Correct compile error
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4943 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-08 10:53:48 +00:00
Bill Somerville
8845f63792 Remove redundant copy of large array in JT9 decoder
Also moved  the same large array  from stack to heap  which along with
other prior  changes now allows  the Windows jt9 OpenMP  executable to
run with a default stack size again.

This also removes a crash on the Mac version which was probably due to
excessive stack usage.

Net result is an even faster JT9 decoder.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4942 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-08 09:53:20 +00:00
Joe Taylor
ec7bf0652a Another instance of variables needing to be saved explicitly between
calls to a subroutine.  I believe this fixes the known outstanding decode
issue.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4941 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-06 18:44:45 +00:00
Bill Somerville
133b603c39 Make output arguments of decoders shared between threads
This is only a temporary fix  becuase if both decoders were to produce
results  that need  accumulating  e.g. number  of  decodes, then  more
complex code to merge the results would be needed.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4940 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-06 16:34:26 +00:00
Joe Taylor
94911071be Some variables now need to be saved explicitly to maintain value
betweek subsoutine calls.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4939 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-06 15:18:38 +00:00
Bill Somerville
ad94752967 Thread safe lib/timer.f90
Accounts for each traced call per thread and accumulates by rolling up
calls with an identical call chain before printing the statistics. The
print now accounts for function calls  in their call chain so the same
function will be reported more than  once if it is called in different
places.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4937 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-05 22:07:19 +00:00
Joe Taylor
8073acae1f Increase JT65 decoding depth at QSO frequency.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4936 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-05 17:43:43 +00:00
Joe Taylor
a6a31362ab Better to set nflatten=0 here, for command-line speed tests.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4935 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-04 21:42:49 +00:00
Joe Taylor
e35f8cc555 Make array sizes in downsam9 consistent with the new big FFT length.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4934 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-04 21:26:58 +00:00
Bill Somerville
43397b9580 Only use >1 thread for the biggest FFTs
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4933 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-04 20:52:42 +00:00
Joe Taylor
3b5fcd30f5 Make the symspec() call in jt9.for consistent with that from mainwindow.cpp.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4932 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-04 19:52:37 +00:00
Bill Somerville
62a229f1c5 Fix typo that disabled JT65 decoding in dual mode.
Disable timer.out generation in OpenMP builds as it is broken.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4931 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-04 16:33:45 +00:00
Bill Somerville
9cf5dc4f5c Adjust the jt9 decoder to do the right decodes in parallel
Also limit the required threads for parallel decoding to 2.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4930 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-04 15:34:46 +00:00
Joe Taylor
84b9135b3d Need space for more calls to timer().
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4929 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-04 15:05:39 +00:00
Bill Somerville
8d8d64c07c Thread safety enhancements to jt9
Serialize thread unsafe FFTW3 calls

Serialize FFTW3 plan initializations in four2a

Serialize decoder results output to file/console

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4928 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-04 01:41:26 +00:00
Joe Taylor
8543283404 Add rfilt and df to the "save" list in filbig.f90.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4927 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-04 00:37:33 +00:00
Joe Taylor
79a6ed5464 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
2015-02-02 18:29:00 +00:00
Bill Somerville
b16d510b0d First attempt at a thread safe lib/timer.f90
This  tries  to  account  for  function  calls  in  different  threads
separately by decorating  the function name with the  thread number it
is  running in.  This may  not be  the best  strategy for  performance
timing but it is  the easiest way of making it thread  safe that I can
see.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4924 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-02 14:08:17 +00:00
Bill Somerville
2903788e4c Build an OpenMP version of jt9 where possible
This change  introduces the program jt9_omp  which is a testbed  for a
multi-threaded version of the jt9 decoder program. The program jt9_omp
should be  a directly substitutable for  jt9 except that JT65  and JT9
decodes are computed in parallel.

Also enable  the OpenMP directives in  decoder.f90 - note this  is not
yet a working multi-threaded decoder and the existing jt9 is still the
correct decoder to be used in WSJT-X.

Increased the available  stack size for jt9_omp.exe as this  is a hard
limit on  Windows and  the default  is not big  enough for  the OpenMP
version of jt9.

Also  Fortran  array  bounds  checking is  now  disabled  for  Release
configuration builds so as to improve performance a little.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4922 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-02 11:24:20 +00:00
Joe Taylor
7f70863caa Change some calls to timer().
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4921 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-01 20:11:10 +00:00
Joe Taylor
ccca5b80ea Forgot to commit decjt9.f90.
Also note: something's wrong when trying to decode a file read 
by the GUI from disk.  Will fix it soon...



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4920 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-01 17:40:14 +00:00
Joe Taylor
960da46d28 Many changes in program jt9[.exe] aimed at speeding up the decoders.
The long FFTs can now use the multi-threaded FFTW routines.
Subroutine decode9.f90 was renamed jt9fano.f90.
The JT9 decoder's top-level functions were removed from decoder.f90
and put into a separate subroutine decjt90.f90.
Subroutine decoder.f90 is now configured for possible use of OpenMP 
SECTIONS, with the JT9 and JT65 decoders running concurrently on
a multi-core machine.  Note, however, that this concurrent processing 
is not yet fully implemented.  Probably calls to timer need to be removed; 
some variables used in calls to jt65a and decjt9 may need to be 
declared PRIVATE in decoder; some sections probably need to be declared 
CRITICAL; probably some SAVE statements in downstream routines have
made them not thread-safe; etc., etc.  

I'm a neophyte at using OpenMP.  Comments, suggestions, and/or tests by
others will be welcome!



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4919 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-01 16:23:36 +00:00
Joe Taylor
647f809c97 Made a start at implementing an option to use multi-threaded FFTs.
New command-line option for jt9: [-m nthreads].  Default is nthreads=1.
Also refactored a loop in filbig.f90 that was taking far too much
time.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4916 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-30 21:28:10 +00:00
Joe Taylor
2ca414ac9d Allow use on nonthreading model by setting nthreads=0.
Require at least 10 iterations.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4915 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-30 01:45:37 +00:00
Joe Taylor
2557fa39f2 More minor cleanup.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4914 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-29 20:50:05 +00:00
Joe Taylor
88eb165e4c Set compiler flags.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4913 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-29 19:17:56 +00:00
Joe Taylor
518dd76c6b Clean up compiler warnings.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4912 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-29 19:16:37 +00:00
Joe Taylor
508594428a Another tweak.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4911 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-29 18:49:40 +00:00
Joe Taylor
7965d607c2 Remove diagnostic print.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4910 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-29 18:46:46 +00:00
Joe Taylor
0f0d63a714 Minor tweaks.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4909 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-29 18:38:51 +00:00
Joe Taylor
ec3fd43b8e More testing of FFTW performance...
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4908 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-29 18:29:41 +00:00
Joe Taylor
bba2757545 Testing some newer FFTW features.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4907 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-28 12:52:24 +00:00
Joe Taylor
7d02ab0e10 Add nfft.out (output from chkfft, on a Dell laptop).
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4848 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-12-22 14:06:40 +00:00
Joe Taylor
b9d5ebbb31 Some final(?) tweaks and additions to the chkfft mini-package.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4838 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-12-18 21:06:21 +00:00
Joe Taylor
ccba704126 A few more tweaks, and add the file nfft.dat of efficient FFT lengths.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4837 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-12-18 20:53:16 +00:00
Joe Taylor
01d0b747bc Several tweaks to chkfft.f90. Add descriptive file chkfft.txt.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4836 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-12-18 20:34:06 +00:00
Joe Taylor
20dd76d5d9 Add chkfft.f90; more thorough comments in four2a.f90.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4835 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-12-18 16:41:18 +00:00
Bill Somerville
935bacd2df Take advantage of the new KVASD v1.12
Pass the  temporary directory to  jt9 and use  it to give  the correct
paths  to  temporary files.  Also  jt9  passes  the absolute  path  to
kvasd.dat in the temporary directory to kvasd.

Clear out all the annoying cruft that has accumulated due to having to
run with $CWD as the temporary directory.

Use QStandardPaths  to find the  writable data directory  where needed
rather than passing it around  between objects. This now works because
the $CWD hasn't been changed.

Do away with the CMake option WSJT_STANDARD_FILE_LOCATIONS as it is no
longer needed.

Fix astro status file azel.dat formatting.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4732 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-12-03 00:06:54 +00:00
Joe Taylor
5c5283552a Update the linux Makefile for qmake/make builds.
Minor correction for wsjtx man page.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4635 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-24 14:54:47 +00:00
Joe Taylor
2f9fde0853 Add wisdom for the FFTs done by symspec_(), wsjtx[.exe].
Also complete the wrapper code in wisdom.c.
TBD: should be possible to use fftw3f.f03 instead of the ad hoc wisdom.c.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4617 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-21 15:17:22 +00:00
Joe Taylor
7223a29788 Decode from disk sets npatience = 2.
This means that the first decode from a saved data file will be slow,
but the saved wisdom for the decoded mode(s) will be better than
for the default npatience = 1.  All subsequent decodes in the same 
mode(s) will take advantage of the newly saved wisdom.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4616 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-21 01:40:24 +00:00
Joe Taylor
eb45744177 Try a home-made wrapper for fftwf_export_wisdom_to_filename().
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4614 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-21 00:44:50 +00:00
Joe Taylor
175f1913b4 FFTW wisdom is now built into jt9[.exe].
New optional argument to jt9: -w patience
Default is patience = 1

Example timing measurements for 130610_2343.wav:

patience  plan   execute
          (s)      (s)
-----------------------------------------------
   0      0.01     1.25  FFTW_ESTIMATE
   1      0.69     1.25  FFTW_ESTIMATE_PATIENT
   2     16.97     1.15  FFTW_MEASURE
   3    390.88     1.15  FFTW_PATIENT

Conclusions, consistent with expectation based on past experience
with similar FFTs:
  - First decode (in each mode) with patience = 2 is slow.
  - Speed advantage of patience = 2 is small but measurable.
  - No measurable advantage in using patience > 2.

Present mainwindow.cpp has "-w 1" hard-wired.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4610 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-20 18:48:53 +00:00
Joe Taylor
11487c69fa Correct the logic for negative-frequency index into new ca array.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4609 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-19 20:17:15 +00:00