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