FFTW3.3 ALPHA + pgcc - where is fftw3-mpi.h ?

I installed the FFTW3.3ALPHA library
I did:

env CC=pgcc CFLAGS=“-fastsse” F77=pgf90 FFLAGS=“-fastsse”

then

./configure --enable-mpi= (i put the pgcc path from which command)–enable-openmp --prefix=

using the pgf90 my serial code compiled and executed without errors

Now, I want to convert my code into parallel but on the include folder there is only the fftw3.h and .f files.

I read that in the include folder should be a fftw3-mpi.h file.

So my question is, did I install the fftw3 apha correctly. During the ./configure everything seems to be OK, for example it didn’t printout something wrong about the MPI.

p.s. I downloaded the fftw-3.3alpha1.tar.gz file.

Hi ebrachos,

I’m guessing that the MPI library did not build for you since the MPI header files could not be found. To fix, add the flag “-Mmpi=mpich” to both CFLAGS and FFLAGS or use a PGI compiled mpicc and mpif90 script instead of pgcc and pgf90. We ship a PGI built debug enabled MPICH with all Linux products which you can use (located in $PGI/linux86-64/2011/mpi). It is an optional install so be sure it was installed with the compilers. Of course, you can build and use your own MPI package as well.

We have several guides on building MPI packages at Porting and Tuning Guides | PGI if you need help.

  • Mat

Thanks for the reply.

On the CRAY cluster where I am , I did the following
module unload xt-mpt
module load xt-mpich2
and in the untar-ed folder I did

./configure CC=cc CFLAGS=“-fastsse -Mmpi=mpich -fPIC” F77=ftn FFLAGS=“-fastsse -Mmpi=mpich -fPIC” MPICC=cc --enable-openmp --with-combined-threads --with-g77-wrappers LDFLAGS=-L/opt/cray/mpt/5.1.4/xt/gemini/mpich2-pgi/lib CPPFLAGS=-I/opt/cray/mpt/5.1.4/xt/gemini/mpich2-pgi/include --enable-mpi=/opt/cray/xt-asyncpe/4.7/bin/cc --enable-shared --prefix=/home/d04/d04/s1013813/FFTW/FFTW-3_3Alpha/

the problem is that it “leaved” and it didn’t compile the mpi folder.

the last lines after the “make” said something about :

/usr/bin/ld: attempted static link of dynamic object `…/.libs/libfftw3.so’

After the make install the serial code compiled Ok but the mpi not. The main problem is that it could not “make” in the fftw3.3alpha/mpi folder.

Thank you very much for the help,
Evangelos

Hi Evangelos,

On the CRAY cluster where I am

While it’s possible that you have the MPICH that ships with the PGI compilers installed, I doubt it. If you did have it, it would be located in the “$PGI/linux86-64/2011/mpi” directory.

If is not installed, then you will need to remove the “-Mmpi=mpich” flag and change your compilers to “mpicc” and “mpif90”. You will also need to make sure the xt-mpich2 module uses a PGI built MPICH2 package. To check run “mpif90 -V”. (-V is PGI’s version flag).

the problem is that it “leaved” and it didn’t compile the mpi folder.

Can you find out why? Do you have a log of the build? I’m guessing that it’s due to the lack of MPI header files, but don’t know for sure.

FYI, it doesn’t appear that the “–enable-mpi” has any sub options. I think configure would just ignore the “=/opt/cray/xt-asyncpe/4.7/bin/cc” but it’s possible that it’s ignoring the entire flag. Try using just the “–enable-mpi” option.

/usr/bin/ld: attempted static link of dynamic object `…/.libs/libfftw3.so’

Since this is a CRAY system, I’m assuming your using the Catamount OS. If I remember right, Catamount does support shared libraries and you need to remove the “–enable-shared” option.

After the make install the serial code compiled Ok but the mpi not. The main problem is that it could not “make” in the fftw3.3alpha/mpi folder.

You’ll need to do more digging as to exactly why if my above suggestions don’t work.

  • Mat

I appreciate your help.

Finally the problem solved.

I did:
export CC=cc
export CFLAGS=“-fast -Minfo -Mmpi=mpich”
export F77=pgf90
export FFLAGS=“-fast -Minfo -Mmpi=mpich”
./configure --enable-openmp --enable-mpi --prefix=

then make and make install

and everything installed.

Regards,
Evangelos