On 17/12/2014 15:22, Michael Black wrote:
Hi All,
> Have you got a batch file or such so perhaps I can try and replicate this
> too?
Sandro listed the options he changed, they are all set in CMakeLists.txt.
>
> It seems the current fftwf build from JTSDK uses different flags.
> CFLAGS = -O3 -fomit-frame-pointer -mtune=native -malign-double
> -fstrict-aliasing -fno-schedule-insns -ffast-math
Let's not get confused here about the various components of WSJT-X.

We have The Fortran code which implements the decoding algorithms and 
filters.

There is the library FFTW which does discrete Fourier transforms and 
inverse Fourier transforms. Most users, possible all, use a pre-built 
version of this library i.e. for a given architecture we are all using 
the same machine code.

Also we have the C++/C code that implements the UI and operating system 
interfaces.

The Fortran code is basically running at CPU speed apart from when it 
delegates work to FFTW. This is not continuous but for significant 
periods it is unthrottled while the decodes are processed.

The FFTW library itself is also CPU intensive while processing a 
DFT/IDFT task.

The C++/C code is largely event driven and spends most of its time 
either waiting for operating system services like audio streaming, user 
actions, or timed events.

So the Fortran code and FFTW are the CPU bound areas that would be 
sensitive to processor speed and feature usage. Therefore these are 
potentially tunable by taking advantage of special features of a 
particular CPU. On Intel processors these include the MMX, and SSE 
series of special machine instructions. AMD and ARM have there own 
variants. In general these special instructions sets are know as SIMD 
extensions. These extra instructions are basically a vector floating 
point engine that allows a small number of multiple floating point 
calculations to be executed in he time the conventional instruction set 
CPU can only do one such calculation.

The Fortran and C++ compilers can be told to emit machine code tailored 
to the exact machine architecture the compiler is running on. This 
generates potentially faster code which is less portable.

The FFTW library takes a runtime approach to machine level optimization, 
it examines the CPU and also does trial calculations using the various 
available features to choose the best available strategy for the DFT and 
IDFT algorithms it uses.

So this thread is really discussing how the various architecture 
specific Fortran compiler options impact decoding performance.

It is quite possible that the CPU Sandro is testing on is poor in 
performance when the specialized SIMD are not used whereas Joe's machine 
has better performance without the enhanced  instructions relative to 
with them.
>
> Mike W9MDB
73
Bill
G4WJS.
>
>
> -----Original Message-----
> From: Joe Taylor [mailto:j...@princeton.edu]
> Sent: Wednesday, December 17, 2014 9:13 AM
> To: WSJT software development
> Subject: Re: [wsjt-devel] Crazy test
>
> Hi Alessandro,
>
> I replicated your tests as exactly as possible, modifying CMAKE_CXX_FLAGS
> and General_FFLAGS by the addition of "-mtune=native".
> Using WSJT-X and the "Shift+F6" command, the sequence of ten files (01.wav,
> 02,wav, ... 10.wav) was processed in 21 seconds with or without the addition
> of "-mtune=native" before building the program from scratch.  I could find
> no measurable difference in execution speed for the two cases.  Certainly
> they were the same to within 1 second.
>
> I note also that the total execution time is very nearly the same as what I
> reported yesterday for the execution of jt9[.exe] from the command line.
> Almost all of the CPU-intensive "number crunching" in WSJT-X occurs in the
> Fortran code in jt9.  Other tasks such as display of graphical information
> and decoded text, writing output files, etc., make comparatively trivial
> demands on CPU resources.
>
> It remains a mystery to me why you have seen large differences in execution
> speed after adding the compiler flag "-mtune=native".
>
>       -- 73, Joe, K1JT
>
> ----------------------------------------------------------------------------
> --
> 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=164703151&iu=/4140/ostg.clktrk
> _______________________________________________
> wsjt-devel mailing list
> wsjt-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wsjt-devel
>
>
> ------------------------------------------------------------------------------
> 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=164703151&iu=/4140/ostg.clktrk
> _______________________________________________
> wsjt-devel mailing list
> wsjt-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wsjt-devel


------------------------------------------------------------------------------
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=164703151&iu=/4140/ostg.clktrk
_______________________________________________
wsjt-devel mailing list
wsjt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

Reply via email to