On 19/11/2014 17:49, Joe Taylor wrote:
> Hi all,
Hi Joe,
>
> I have committed some changes that significantly improve the decoding
> speed of WSJT-X in both modes, with no change in its effectiveness.
> The changes affect only the jt9.exe executable.
>
> One of the changes is to make use of the "wisdom" feature in FFTW. This
> requires running the program fftwf-wisdom[.exe] once, at the time of
> program installation. A batch script "wisdom1[.bat]" can be used to do
> this; I added an example of such a file to the directory
> .../branches/wsjt/lib. When run, it creates a file fftwf_wisdom.dat
> that should go in the .../bin installation directory.
It would be better to have that file in the "Standard" writeable
location because...
>
> Bill, could you suggest the best way to incorporate the necessary
> features in the CMake script? On Windows it will need to install
> fftwf-wisdom.exe and wisdom1.bat along with other executables in the
> .../bin directory, and the installer should offer to run widwom1.bat,
> warning the user that it will take several minutes to complete.
>
> The final wisdom1[.bat] file will be slightly different from the example
> now in the repository, since it won't need the hard-coded path I used
> for fftwf-wisdom[.exe].
Reading the FFTW docs, they seems to say that it is optimal to have the
executable, that requires the FFT plans, write the wisdom files itself.
It would also seem to be the easiest way to get the file written since
no installer logic would be required, this is a big bonus on Mac since
we have no hook to hang executable post-install code available.
Did you test writing the wisdom from the code that requires the plans? I
realize that initial runs will suffer the plan optimization overhead but
if I understand correctly this is a one off penalty for each plan for
each version of the program.
I would have though that something like the following pseudo code would
suffice:
On JT9 start up:
if (!fftw_import_wisdom_from_filename (data_dir + "fftw_wisdom.dat"))
{
fftw_import_system_wisdom (); // included so users may write more
advanced wisdom to /etc/fftw/wisdom
}
On JT9 shut down:
fftw_export_wisdom_to_filename (data_dir + "fftw_wisdom.dat");
Fortran wrappers are available for the above functions.
With this in place more aggressive FFT plan optimization (higher
PATIENCE values) could be used since the cost of choosing the plan would
only be suffered the first time the program is run and only then the
first time each plan type and size is used since wisdom is accumulated
in memory by FFTW within each program session.
>
> Comments and test results are welcome. On my development machine the
> speedup is about 35% when a velid fftwf_wisdom.dat (necessarily computed
> on the same machine) is present.
>
> -- Joe, K1JT
73
Bill
G4WJS.
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
wsjt-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wsjt-devel