I don't think you'll find any gain using FFTW openmp. WSJT-X does not do big enough FFTs to overtake the thread create/delete overhead.
I worked a job a few years ago on a 512-core machine doing FFTs on synthetic aperture radar systems. Using FFTW with OpenMp did very little good. Using OpenMP at the layer above did...which is the same thing I think we'll find here. OpenMP inside FFTW for small FFTs wil have the overhead dominate and defeat it. We're already seeing only a 20-25% improvement in openmp at this level which is a clear indication to me that we're not getting anywhere near 100% gain for threading so doing it at a lower level isn't worth it. When I did my 512-core system I was getting over 90% gain for each thread I added. Much like "don't sweat the small stuff" I think you''ll find "don't multi-thread the small FFTs" is a good paradigm... When you got a ~50% gain then it's time to look at multi-threading below that level. Mike W9MDB -----Original Message----- From: Bill Somerville [mailto:[email protected]] Sent: Wednesday, February 04, 2015 8:21 AM To: [email protected] Subject: Re: [wsjt-devel] v4926 OpenMP On 04/02/2015 14:05, John Nelson wrote: > Hi Bill and Joe, Hi John, > > With regard to Mac builds, your [Bill] code test with workspace and workspace_mt executes correctly with my gfortran compiler. However, as you point out the current clang/clang++ do not [yet] have OpenMP support. > > So when I compile fftw_3.3.4 with --enable-threads, I cannot also use --with-openmp. I also get: > > -- Try OpenMP C flag = [ ] > -- Performing Test OpenMP_FLAG_DETECTED > -- Performing Test OpenMP_FLAG_DETECTED - Failed I am experimenting with the MacPorts gcc 4.9 suite with building WSJT-X. That needs changes to the CMake script which I have not committed yet. So far it doesn't seem to be necessary to build or use the OpenMP version of FFTW3, the native/pthreads version is working well and seems to be compatible with an OpenMP program. I believe the only issue is that we need to control the number of threads used by FFTW3 and OpenMP manually to a certain extent. If it does become necessary to use the OpenMP version of FFTW3, that can be built on Mac, again I have the MacPorts version available. There also appears to be a bug in CMake that is causing it not to pass on the portability options to the gcc compilers/linker (MAC_OSX_SYSROOT and MAC_OSX_DEPLOYMENT_TARGET). This is not serious and can be worked around if necessary but I want to get it sorted out properly if possible. My current focus apart from v1.4 issues is to help Joe with multi-threading hazards in jt9 but I am working on the Mac builds with OpenMP as well. > > when building WSJT-X r4928 which is currently executing successfully - and certainly decodes rapidly. You are getting the latest performance increases which are significant. The OpenMP jt9, which is not in WSJT-X yet, has the potential to almost half decoding times in dual JT65+JT9 mode when there is equivalent work to be done in each mode. > > --- John G4KLA 73 Bill G4WJS. ---------------------------------------------------------------------------- -- Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ wsjt-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/wsjt-devel ------------------------------------------------------------------------------ Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ wsjt-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/wsjt-devel
