Hi, I am trying to a version push on a package that needs FFTW. I noticed that FFTW 3.3.5 is out now and there are FFTW 3.3.5 packages in EB 2.9.0 (for e.g foss/2016.09).
Looking into the release node for FFTW 3.3.5, avx2 seems a big addition. Looking into the EB 2.9.0 configurations, it seems sse2 is hard coded. To my understanding that is a factor of 4 in theoretical performance (2x for register length and 2x for FMA). The current SSE2 should be a lowest common denominator for current hardware. I am pretty sure an AVX2 version will do a nice illegal instruction error on oldish hardware (e.g. Interlagos). We now have a bit of a can of worms. I am not supporting any pre avx2 hardware any longer, but I am sure some people here do. For FFTW we could make that explicit, e.g. adding an avx2 to the name of the FFTW. But then I am not building FFTW for the sake of building FFTW, I want to build NAMD with it. If I now supply a NAMD using the avx2 FFTW into the git repository, it will fail on any system deploying pre-avx2 hardware. For the compiler we are dealing with these kind of things via -xHost and -march=native options. Is there an EB mechanism to deal with this kind of thing? Best wishes Joachim

