fftw 3.3.4 not working with pgi 16.1

as described in https://github.com/FFTW/fftw3/issues/55, fftw 3.3.4 does compile with pgi 16.1 alright, BUT any client to the library produces a segfault. In other words, fftw 3.3.4 is unusable with 16.1!

the behavior can be reproduced with the “bench” utility inside the source code directory or by calling “make check”. Any help would be appreciated. PGI 15.9 builds the library without any problems and produces a working binary.


PS. Recent versions of GCC and ICC also produce usable binaries of fftw 3.3.4!

We are investigating, and while we do build fftw, we are not using your
configuration. When we determine what is going wrong, we will create
a bug report for it and proceed from there.


thanks dave for letting me know. Please keep me posted on this!

any news on this issue?

I just downloaded fftw 3.3.5

and built them on a Nehalem and Haswell systems. I used the configuration
FFLAGS="-Mpreprocess -Mbackslash -O2"
./configure --prefix=/path/to/final/installdir
make check
make install

and things work as expected.

I tried this with both 16.9 and upcoming 16.10 release.


very good news! thanks. than I consider this closed.

Unfortunately, you had not add --enable-avx flag. With this this flag version 3.3.5 fails during the compilation . Other hand version 3.3.4 is compiled by PGI 16.9 , 16.10 but failed during the run as at the beginning of this topic. Therefore, fftw 3.3.4 and 3.3.5 are still unusable with 16.9-16.10!

according to

the problem with segfaulting FFTW still exists in PGI 16.9

We filed TPR 23180 in October, but it does appear corrected yet.

You can enable avx type instructions from code generator if you compile
on a Sandybridge cpu or compile with “-tp sandybridge”. Other CPUs support
avx as well (amd bulldozer, for example). To get avx2 instructions as
part of what the code generator can generate, use -tp haswell.
add the cpu type to the compile flags.

But inlining the avx headers in fftw when you set those switches, does not work yet, and we don’t know if it is the header or us.