Hi Markus,
On 05/01/2017 12:40, Markus Geimer wrote:
All,
FFTW 3.3.5 (at least for this toolchain) should be compiled with
--enable-sse2 --enable-avx --enable-avx2
and preferably with --enable-avx512 too.
I'm looking into this, but even though the FFTW documentation clearly
states that an FFTW library compiled with AVX2 will run just fine on a
system without AVX2, it seems like *building* FFTW with --enable-avx2 on
a system that doesn't support AVX2 doesn't work...
Here's what I'm seeing on a Sandy Bridge systems:
configure flags:
--enable-threads --enable-openmp --with-pic --enable-single
--enable-mpi --enable-sse2 --enable-avx --enable-avx2 --enable-avx512
fails with:
In file included from ../../../dft/simd/n1f.h:21:0,
from ../common/n1fv_12.c:35,
from n1fv_12.c:3:
../../../simd-support/simd-avx2.h:43:2: error: #error "compiling
simd-avx2.h without avx2 support"
#error "compiling simd-avx2.h without avx2 support"
^~~~~
So, I don't think that including all of these --enable-avx* flags is
going to work out well, unless we implement an FFTW easyblock that
auto-detects *what* is really supported and injects the corresponding
--enable-avx* flags.
Thinking cross-platform: None of the '--enable-sse2' or '--enable-avx*'
flags will work on POWER or ARM...
That's a very good point, I totally overlooked that.
With that in mind, an FFTW-specific easyblock that dynamically adds
these configure flags when appropriate is the correct long-term solution
imho...
It should probably do that by default, but provide you the option to
opt-out, and also take the 'optarch' setting into account, i.e. when
GENERIC, don't dynamically add these flags at all.
I'll look into that, but I'm not sure if that'll happen in time for the
EasyBuild 3.0.3 release, which I'd like to get out the door by the end
of next week, with the 2017a toolchain definitions included.
regards,
Kenneth