mpip / pfft

Parallel fast Fourier transforms
GNU General Public License v3.0
54 stars 23 forks source link

Compiling using Cray compilers #11

Closed LadaF closed 7 years ago

LadaF commented 9 years ago

I have problems compiling the library using the Cray compiler. It is first detected to be a gcc compiler and then the configure has troubles finding the correct flags and options.

I was able to fix the unknown flag for extending the line width in Fortran by supplying -N 255 in FCFLAGS.

However, the configure than tries to link a C program with a Fortran object with -lgfortran, which fails.

The actual way how to link them with Cray is just

  ftn sub.f90 -c -o sub.o
  cc sub.o main.c

The configure fails in this step:

 configure: error: linking to Fortran libraries from C fails
 See `config.log' for more details.

and config.log contains several variations to

    configure:6540: checking for dummy main to link with Fortran libraries
    configure:6574: cc -o conftest -g   conftest.c   -L/opt/cray/cce/8.3.7/CC/x86-64/lib/x86-64 -L/opt/gcc/4.8.1/snos/lib64 /opt/cray/cce/8.3.7/craylibs/x86-64/libmodules.a /opt/cray/cce/8.3.7/craylibs/x86-64/libomp.a
    /opt/cray/cce/8.3.7/craylibs/x86-64/libopenacc.a -L/opt/cray/fftw/3.3.4.1/sandybridge/lib -L/opt/cray/dmapp/default/lib64 -L/opt/cray/mpt/7.1.1/gni/mpich2-cray/83/lib -L/opt/cray/libsci/13.0.1/CRAY/83/sandybridge
    /lib -L/opt/cray/rca/1.0.0-2.0501.48090.7.46.ari/lib64 -L/opt/cray/alps/5.1.1-2.0501.8507.1.1.ari/lib64 -L/opt/cray/xpmem/0.1-2.0501.48424.3.3.ari/lib64 -L/opt/cray/dmapp/7.0.1-1.0501.8315.8.4.ari/lib64 -L/opt/cra
    y/pmi/5.0.6-1.0000.10439.140.2.ari/lib64 -L/opt/cray/ugni/5.0-1.0501.8253.10.22.ari/lib64 -L/opt/cray/udreg/2.3.2-1.0501.7914.1.13.ari/lib64 -L/opt/cray/atp/1.7.5/lib -L/opt/cray/cce/8.3.7/craylibs/x86-64 -L/opt/c
    ray/wlm_detect/1.0-1.0501.47908.2.2.ari/lib64 -lfftw3f_mpi -lfftw3f_threads -lfftw3f -lfftw3_mpi -lfftw3_threads -lfftw3 -lAtpSigHandler -lAtpSigHCommData -lsci_cray_mpi_mp -lsci_cray_mp -lmpichf90_cray -lmpich_cr
    ay -lpgas-dmapp -lcray-c++-rts -lcraystdc++ -lxpmem -ldmapp -lpmi -ludreg -lalpslli -lalpsutil -lrca -lwlm_detect -lugni -lomp -lcraymp -lmodules -lfi -lf -lpthread -lcraymath -lm -lgfortran -lquadmath -lu -lrt -l
    csup -ltcmalloc_minimal -lstdc++ -L/opt/gcc/4.8.1/snos/lib/gcc/x86_64-suse-linux/4.8.1 -L/opt/cray/cce/8.3.7/cray-binutils/x86_64-unknown-linux-gnu/lib -L//usr/lib64 >&5
    CC-1254 craycc: WARNING 
      The environment variable "CPATH" is not supported.

    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o):(.bss+0x13): multiple definition of `FLAG__namespace_do_not_use_directly_use_DECLARE_bool_instead::FLAGS_tcmalloc_abort_on_large_alloc'
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o):(.bss+0x13): first defined here
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o): In function `TCMallocImplementation::GetAllocatedSize(void*)':
    tcmalloc.cc:(.text+0x1f0): multiple definition of `TCMallocImplementation::GetAllocatedSize(void*)'
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o):tcmalloc.cc:(.text+0x1f0): first defined here
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o): In function `TCMallocImplementation::MarkThreadBusy()':
    tcmalloc.cc:(.text+0xe40): multiple definition of `TCMallocImplementation::MarkThreadBusy()'
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o):tcmalloc.cc:(.text+0xe40): first defined here
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o):(.bss+0x11): multiple definition of `FLAG__namespace_do_not_use_directly_use_DECLARE_bool_instead::FLAGS_tcmalloc_pad_cacheline'
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o):(.bss+0x11): first defined here
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o): In function `tc_version':
    tcmalloc.cc:(.text+0x4e40): multiple definition of `tc_version'
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o):tcmalloc.cc:(.text+0x4e40): first defined here
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o): In function `tc_set_new_mode':
    tcmalloc.cc:(.text+0x4e70): multiple definition of `tc_set_new_mode'
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o):tcmalloc.cc:(.text+0x4e70): first defined here
    /opt/cray/cce/8.3.7/craylibs/x86-64/libtcmalloc_minimal.a(tcmalloc.o): In function `tc_malloc':

How to fix the configure to accept the Cray compilers?

rainwoodman commented 9 years ago

I always disable-fortran on Crays and never ran into compilation issues.

LadaF commented 9 years ago

Fortran is crucial for me. Dne 4. 9. 2015 3:00 "Yu Feng" notifications@github.com napsal(a):

I always disable-fortran on Crays and never ran into compilation issues.

— Reply to this email directly or view it on GitHub https://github.com/mpip/pfft/issues/11#issuecomment-137623080.

rainwoodman commented 9 years ago
./configure --disable-shared --prefix=/global/homes/y/yfeng1/.local --with-fftw3=/global/homes/y/yfeng1/source/pfft-python/build/depends --enable-openmp MPICC=cc --enable-fortran MPIFC="ftn -N1023" FCLIBS=" "

works fine on Cray Fortran : Version 8.3.11 Fri Sep 04, 2015 15:03:29

LadaF commented 9 years ago

Thanks a lot, it indeed works. Probably, the FCLIBS=" " is the main difference which fixed it.