Skip to Content.
Sympa Menu

forum - Re: [abinit-forum] parallel configuration problem

forum@abinit.org

Subject: The ABINIT Users Mailing List ( CLOSED )

List archive

Re: [abinit-forum] parallel configuration problem


Chronological Thread 
  • From: Aaron <nkleof@gmail.com>
  • To: forum@abinit.org
  • Subject: Re: [abinit-forum] parallel configuration problem
  • Date: Wed, 11 Feb 2009 23:25:07 +0800
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=w0g34Oqn20qCEUzVzDsAfv/6zraf0irk2PYDlxkhvS9B7djrdxdq/SRcUwy5yXFxZl 0wQic7KcGGQVR7sXgyeIel3KbTzhA9ZlzTxFW0fXeo66ix3eNu9gazLuyNaeiAST2B9P iFg8k1ABEYexwFEMXOqqR0jZlZ9aJQ1ndU+GY=

Hello Alain,

Maybe the fact that /home/opt/intel/impi/3.1//bin/mpicc is called comes from a mess in my setup.  I have compiled and installed abinit-5.4.4p serial version in cluster, and I did not do any clean job before compiling abinit-5.6.4 parallel version. I just created a new directory named abinit-5.6.4 and do all parallel compilation in it. Could the previous installation affect the new compilation?

PATH environment variable is like this after cleaning from pgi and pathscale links:

/home/opt/intel/impi/3.1/bin64:/home/opt/intel//fce/10.1.015/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/mfeng/bin:/home/opt/bin:/sbin:/usr/sbin:/home/opt/vasp/bin:/home/opt/crystal98/utils:/home/opt/tetr_lev00/bin:/home/opt/wien2k:/home/opt/wien2k/SRC_structeditor/bin:/home/mfeng/abinit/abinit-5.4.4p/tmp/src/main

and LD_LIBRARY_PATH:

/home/opt/intel/impi/3.1/lib64:/home/opt/intel/mkl/10.0.3.020/lib/em64t:/home/opt/intel//fce/10.1.015/lib

"which mpicc" returns:    /home/opt/intel/impi/3.1/bin64/mpicc
"which mpif90" returns:    /home/opt/intel/impi/3.1/bin64/mpif90
"mpicc --showme" returns:    
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
"mpif90 --showme" returns:
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgfortranbegin.a(fmain.o): In function `main':
(.text+0xa): undefined reference to `MAIN__'
collect2: ld returned 1 exit status

"mpicc -v" returns:
mpigcc for the Intel(R) MPI Library 3.1 for Linux
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-cpu=generic --host=x86_64-redhat-linux
Thread model: posix
gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)
 /usr/libexec/gcc/x86_64-redhat-linux/4.1.2/collect2 --eh-frame-hdr --build-id -m elf_i386 --hash-style=gnu -dynamic-linker /lib/ld-linux.so.2 crt1.o crti.o /usr/lib/gcc/x86_64-redhat-linux/4.1.2/32/crtbegin.o -L/home/opt/intel/impi/3.1/lib -L/home/opt/intel/mkl/10.0.3.020/lib/em64t -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2/32 -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2/32 -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib -L/lib/../lib -L/usr/lib/../lib -rpath /home/opt/intel/impi/3.1/lib -rpath /opt/intel/mpi-rt/3.1 -lmpi -lmpigf -lmpigi -lrt -lpthread -ldl -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-redhat-linux/4.1.2/32/crtend.o crtn.o
/usr/bin/ld: crt1.o: No such file: No such file or directory

Can I tell my system administrator that MPI in cluster was built with gcc?
I have compiled and run the parallel C code you gave me. It completed successfully and showed correct result. Then I tried many configure settings as following:
 ./configure FC="/home/opt/intel/impi/3.1/bin64/mpif90" CC="/home/opt/intel/impi/3.1/bin64/mpicc" --enable-mpi=yes
Configuration could completed using above setting, but errors came out when "make":

cd blas && make FC="/home/opt/intel/impi/3.1/bin64/mpif90" FCFLAGS="  -g -O3 -fschedule-insns2 -malign-double -march=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse" AR="ar" ARFLAGS="rv" RANLIB="ranlib"
make[5]: Entering directory `/home/mfeng/abinit/abinit-5.6.4/prereqs/linalg/blas'
/home/opt/intel/impi/3.1/bin64/mpif90 -g -O3 -fschedule-insns2 -malign-double -march=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse -c caxpy.f
caxpy.f:0: error: -malign-double makes no sense in the 64bit mode
make[5]: *** [caxpy.o] Error 1
make[5]: Leaving directory `/home/mfeng/abinit/abinit-5.6.4/prereqs/linalg/blas'
make[4]: *** [build-stamp] Error 2
make[4]: Leaving directory `/home/mfeng/abinit/abinit-5.6.4/prereqs/linalg'
make[3]: *** [package-ready] Error 2
make[3]: Leaving directory `/home/mfeng/abinit/abinit-5.6.4/prereqs/linalg'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/mfeng/abinit/abinit-5.6.4/prereqs'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/mfeng/abinit/abinit-5.6.4'
make: *** [all] Error 2

 ./configure FC="/home/opt/intel/impi/3.1/bin64/mpif90" CC="/home/opt/intel/impi/3.1/bin64/mpiicc" --enable-mpi=yes
Configuration goes wrong as before. It says "c compiler cannot create executables"

 ./configure FC="/home/opt/intel/impi/3.1/bin64/mpiifort" --enable-mpi=yes --disable-netcdf
Configuration completed but errors came out when make went here:

......
Making all in netcdf
make[3]: Entering directory `/home/mfeng/abinit/abinit-5.6.4/plugins/netcdf'
make -f ../../plugins/netcdf/netcdf.mk
make[4]: Entering directory `/home/mfeng/abinit/abinit-5.6.4/plugins/netcdf'
gzip -cd /home/mfeng/.abinit/tarballs/netcdf-3.6.3.tar.gz | tar xf -
touch uncompress-stamp
netcdf-3.6.3 has been uncompressed.
mkdir tmp
cd netcdf-3.6.3 && \
         CPP="gcc -E" \
         CPPFLAGS="-DpgiFortran" \
         CC="gcc" \
         CFLAGS="-g -O3 -fschedule-insns2 -malign-double -march=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse " \
         CXX="g++" \
         CXXFLAGS="-g -O3 -fschedule-insns2 -malign-double -march=nocona -mmmx -msse -msse2 -msse3 -mfpmath=sse " \
         F77="/home/opt/intel/impi/3.1/bin64/mpiifort" \
         FFLAGS=" -extend_source -vec-report0 -g -O3 -arch pn4 -tune pn4 -xT -ip -no-prec-div" \
         F90="/home/opt/intel/impi/3.1/bin64/mpiifort" \
         F90FLAGS=" -extend_source -vec-report0 -g -O3 -arch pn4 -tune pn4 -xT -ip -no-prec-div" \
         FC="/home/opt/intel/impi/3.1/bin64/mpiifort" \
         FCFLAGS=" -extend_source -vec-report0 -g -O3 -arch pn4 -tune pn4 -xT -ip -no-prec-div" \
         ./configure \
          --prefix=/home/mfeng/abinit/abinit-5.6.4/plugins/netcdf/tmp \
          --disable-cxx
configure: netCDF 3.6.3
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
configure: checking user options
checking whether CXX is set to ''... no
checking whether FC is set to ''... no
checking whether F90 is set to ''... no
checking whether this is a netCDF-4.x build... no
checking whether netCDF extra tests should be run (developers only)... no
checking whether documentation is to be installed... no
checking whether Fortran compiler(s) should be tested during configure... yes
checking whether configure should try to set compiler flags... yes
checking whether FFIO will be used... no
checking whether to skip C++, F77, or F90 APIs if compiler is broken... yes
checking whether only the C library is desired... no
checking whether examples should be built... yes
checking whether F77 API is desired... yes
checking whether F90 API is desired... yes
checking whether fortran type sizes should be checked... yes
checking whether C API is desired... yes
checking where to get netCDF C-only library for separate fortran libraries...
checking whether CXX API is desired... no
checking whether v2 netCDF API should be built... yes
checking whether the ncgen/ncdump should be built... yes
checking whether large file (> 2GB) tests should be run... no
checking whether benchmaks should be run (experimental)... no
checking whether extreme numbers should be used in tests... yes
checking where to put large temp files if large file tests are run... .
checking whether a win32 DLL is desired... no
checking whether separate fortran libs are desired... no
configure: finding C compiler
checking for C compiler default output file name...
configure: error: C compiler cannot create executables
See `config.log' for more details.
make[4]: *** [configure-stamp] Error 77
make[4]: Leaving directory `/home/mfeng/abinit/abinit-5.6.4/plugins/netcdf'
make[3]: *** [package-ready] Error 2
make[3]: Leaving directory `/home/mfeng/abinit/abinit-5.6.4/plugins/netcdf'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/mfeng/abinit/abinit-5.6.4/plugins'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/mfeng/abinit/abinit-5.6.4'
make: *** [all] Error 2

I am curious about why --disable-netcdf has no effect on configuration and make. Now I am continue trying to fix this problem.

Thank you for your suggestion. And thanks to Yann too. I hope you can give me more advices about make process.

Best regards,

Aaron

2009/2/11 Alain Jacques <ajs.jacques@gmail.com>

Hello Aaron,

There are 2 things that are strange in your config ... I don't see why abinit configure looks for /home/opt/intel/impi/3.1//bin/mpicc - I assume the right 64bit mpicc resides in /home/opt/intel/impi/3.1/bin64/mpicc (?). And the config test fails because mpicc (/home/opt/intel/impi/3.1/bin/mpicc ... a 32bit compiler) invokes gcc-4.1.2 32bit (32bit is okay but it should be the 32 bit Intel compiler) - and fails to find the /usr/lib/crt1.o lib (that should be there even on a 64bit system). So I wondering if the fact that /home/opt/intel/impi/3.1//bin/mpicc is called comes from a bug in abinit configure or a mess in your setup. So let's do a few tests (maybe after cleaning your PATH and LD_LIBRARY_PATH from pgi and pathscale links that you don't need for the moment - mixing compilers paths and libs is really asking for troubles...)

* what's the output of "echo $PATH", "echo $LD_LIBRARY_PATH", "which mpicc",  "mpicc -showme", "which mpif90" and "mpif90 -showme"

* just for the fun, try a "/home/opt/intel/impi/3.1/bin/mpicc -v"; if the output mentions gcc-4.1.2 then you can tell your system administrator that mpi has been built with gcc.

* try to compile a tiny parallel C code ... save the following lines in testparc.c:

#include <stdio.h>
#include <mpi.h>

int main(int argc, char *argv[]) {
  int numprocs, rank, namelen;
  char processor_name[MPI_MAX_PROCESSOR_NAME];

  MPI_Init(&argc, &argv);
  MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Get_processor_name(processor_name, &namelen);

  printf("Process %d on %s out of %d\n", rank, processor_name, numprocs);

  MPI_Finalize();
}


Compile it with "mpicc testparc.c". Run it with "mpirun -np 2 ./a.out". Do you see the following output (xxx will be the name of your sytem):
Process 1 on xxx out of 2
Process 0 on xxx out of 2
And a "file ./a.out" should say ./a.out: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped ... right?

* if the testparc.c runs okay, do you still have the ...

configure:8505: checking for C compiler default output file name
configure:8532: /home/opt/intel/impi/3.1//bin/mpicc    conftest.c  >&5
/usr/bin/ld: crt1.o: No such file: No such file or directory
... when running abinit configure?

Cheers,

Alain


Aaron wrote:
hi,

Thank you for your advice. I have contacted with my system administrator and he confirmed that mpi installation does not depend on 32-bit version gcc. I cannot tell it does or not, so just let it be. I have been trying a lot of settings, including using FC=ifort CC=icc CXX=icpc and -I to set library path and -L to set path, but the same error kept showing up. 

checking for style of include used by make... GNU
checking for gcc... /home/opt/intel/impi/3.1//bin/mpicc
checking for C compiler default output file name...
configure: error: C compiler cannot create executables
See `config.log' for more details.

If I disable --enable-mpi option, configuration will complete successfully. Description about abinit-5.6.4 on www.abinit.org said if the LD_LIBRARY_PATH and PATH environment variables are not properly set up, the configure script of parallel build will abort with "configure: error: cannot run C compiled programs."  Could my problem be related to this?

LD_LIBRARY_PATH and PATH environment variables in my system are set as following:

PATH=/home/opt/intel/fce/10.1.015/bin/:/home/opt/intel/cce/10.1.015/bin/:/home/opt/pgi/linux86-64/7.0/bin:/home/opt/intel/impi/3.1/bin64:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/mfeng/bin:/home/opt/bin:/sbin:/usr/sbin:/home/opt/vasp/bin:/home/opt/crystal98/utils:/home/opt/tetr_lev00/bin:/home/opt/wien2k:/home/opt/wien2k/SRC_structeditor/bin:/home/opt/pathscale/bin:/home/mfeng/abinit/abinit-5.4.4p/tmp/src/main/

LD_LIBRARY_PATH=/home/opt/intel/fce/10.1.015/lib/:/home/opt/intel/cce/10.1.015/lib/:/home/opt/acml/4.0.0/pathscale64/lib:/home/opt/pathscale/lib/3.0:/home/opt/pathscale/lib/3.0/32:/home/opt/intel/impi/3.1/lib64:/home/opt/intel/mkl/10.0.3.020/lib/em64t

And mpi path is:   /home/opt/intel/impi/3.1/

I hope someone give me some suggestions.  Any advice is welcome. Thanks in advance.

Best regards,

Aaron

...







Archive powered by MHonArc 2.6.15.

Top of Page