Page 1 of 1

Compiling Abinit 6.4.1 in HPC cluster CentOS

Posted: Wed Oct 20, 2010 6:56 am
by cespejo
Dear Abiniters,
I'm getting the following problem at configure on several compilers and parallel environments:

(1) the compilers: intel 11.1, gfortran 4.1.2
(1') parallel environments: mvapich-intel, openmpi-gcc
(2) the architecture: 64 bit, HPC SMP cluster. (CentOS 5)
(3) The problem occur compiling in parallel.
(4) the version of ABINIT: 6.4.1
(5) the relevant compiler error message:
(the full config.log is attached)

Code: Select all

  $ ../configure --enable-vdwxc=yes --enable-mpi=yes --enable-mpi-io=yes FC=/usr/local/mpi/intel/mvapich/bin/mpif90
.
.
.
==============================================================================
 === Advanced compiler features                                             ===
 ==============================================================================

checking stddef.h usability... no
checking stddef.h presence... yes
configure: WARNING: stddef.h: present but cannot be compiled
configure: WARNING: stddef.h:     check for missing prerequisite headers?
configure: WARNING: stddef.h: see the Autoconf documentation
configure: WARNING: stddef.h:     section "Present But Cannot Be Compiled"
configure: WARNING: stddef.h: proceeding with the compiler's result
configure: WARNING:     ## ------------------------------------------------- ##
configure: WARNING:     ## Report this to https://bugs.launchpad.net/abinit/ ##
configure: WARNING:     ## ------------------------------------------------- ##
checking for stddef.h... no
checking stdarg.h usability... no
checking stdarg.h presence... yes
configure: WARNING: stdarg.h: present but cannot be compiled
configure: WARNING: stdarg.h:     check for missing prerequisite headers?
configure: WARNING: stdarg.h: see the Autoconf documentation
configure: WARNING: stdarg.h:     section "Present But Cannot Be Compiled"
configure: WARNING: stdarg.h: proceeding with the compiler's result
configure: WARNING:     ## ------------------------------------------------- ##
configure: WARNING:     ## Report this to https://bugs.launchpad.net/abinit/ ##
configure: WARNING:     ## ------------------------------------------------- ##
checking for stdarg.h... no
checking stdio.h usability... no
checking stdio.h presence... yes
configure: WARNING: stdio.h: present but cannot be compiled
configure: WARNING: stdio.h:     check for missing prerequisite headers?
configure: WARNING: stdio.h: see the Autoconf documentation
configure: WARNING: stdio.h:     section "Present But Cannot Be Compiled"
configure: WARNING: stdio.h: proceeding with the compiler's result
configure: WARNING:     ## ------------------------------------------------- ##
configure: WARNING:     ## Report this to https://bugs.launchpad.net/abinit/ ##
configure: WARNING:     ## ------------------------------------------------- ##
checking for stdio.h... no
checking malloc.h usability... no
checking malloc.h presence... yes
configure: WARNING: malloc.h: present but cannot be compiled
configure: WARNING: malloc.h:     check for missing prerequisite headers?
configure: WARNING: malloc.h: see the Autoconf documentation
configure: WARNING: malloc.h:     section "Present But Cannot Be Compiled"
configure: WARNING: malloc.h: proceeding with the compiler's result
configure: WARNING:     ## ------------------------------------------------- ##
configure: WARNING:     ## Report this to https://bugs.launchpad.net/abinit/ ##
configure: WARNING:     ## ------------------------------------------------- ##
checking for malloc.h... no
checking math.h usability... no
checking math.h presence... yes
configure: WARNING: math.h: present but cannot be compiled
configure: WARNING: math.h:     check for missing prerequisite headers?
configure: WARNING: math.h: see the Autoconf documentation
configure: WARNING: math.h:     section "Present But Cannot Be Compiled"
configure: WARNING: math.h: proceeding with the compiler's result
configure: WARNING:     ## ------------------------------------------------- ##
configure: WARNING:     ## Report this to https://bugs.launchpad.net/abinit/ ##
configure: WARNING:     ## ------------------------------------------------- ##
checking for math.h... no
checking termios.h usability... no
checking termios.h presence... yes
configure: WARNING: termios.h: present but cannot be compiled
configure: WARNING: termios.h:     check for missing prerequisite headers?
configure: WARNING: termios.h: see the Autoconf documentation
configure: WARNING: termios.h:     section "Present But Cannot Be Compiled"
configure: WARNING: termios.h: proceeding with the compiler's result
configure: WARNING:     ## ------------------------------------------------- ##
configure: WARNING:     ## Report this to https://bugs.launchpad.net/abinit/ ##
configure: WARNING:     ## ------------------------------------------------- ##
checking for termios.h... no
checking errno.h usability... no
checking errno.h presence... yes
configure: WARNING: errno.h: present but cannot be compiled
configure: WARNING: errno.h:     check for missing prerequisite headers?
configure: WARNING: errno.h: see the Autoconf documentation
configure: WARNING: errno.h:     section "Present But Cannot Be Compiled"
configure: WARNING: errno.h: proceeding with the compiler's result
configure: WARNING:     ## ------------------------------------------------- ##
configure: WARNING:     ## Report this to https://bugs.launchpad.net/abinit/ ##
configure: WARNING:     ## ------------------------------------------------- ##
checking for errno.h... no
checking mcheck.h usability... no
checking mcheck.h presence... yes
configure: WARNING: mcheck.h: present but cannot be compiled
configure: WARNING: mcheck.h:     check for missing prerequisite headers?
configure: WARNING: mcheck.h: see the Autoconf documentation
configure: WARNING: mcheck.h:     section "Present But Cannot Be Compiled"
configure: WARNING: mcheck.h: proceeding with the compiler's result
configure: WARNING:     ## ------------------------------------------------- ##
configure: WARNING:     ## Report this to https://bugs.launchpad.net/abinit/ ##
configure: WARNING:     ## ------------------------------------------------- ##
checking for mcheck.h... no
checking for abort... no

Although configure is finished, soon after typing make the installation stops claiming that C compiler cannot create executables.
Thanks in advance for any help.

Camilo.

Re: Compiling Abinit 6.4.1 in HPC cluster CentOS

Posted: Wed Oct 20, 2010 10:19 am
by Alain_Jacques
Hello Camillo,

It isn't the right way to configure Abinit anymore i.e. don't mix mpi compilers with FC or CC variables. Mpi compilers will call the backend compiler. So a sample configure invocation line should look like

Code: Select all

../configure
--with-64bit-flags="yes"
--enable-mpi="yes"
--with-mpi-prefix=/PathToMpiRoot
FCFLAGS=ifyouneedthem
FC_LDFLAGS_EXTRA=ifyouneedthem


Before invoking configure, you should source the script that setups Intel compilers i.e. source /opt/intel/Compiler/.../bin/ifortvars.sh intel64
and /PathToMpiRoot is the path where MPI binaries and libs associated with Intel compilers reside i.e. in /PathToMpiRoot/bin/ and /PathToMpiRoot/lib/
no CC or FC ... configure should pick the righ compiler from mpif90 and mpicc
If it works like that, you may tune i further to add MKL, optimizations ... but that's another story

Kind regards,

Alain

Re: Compiling Abinit 6.4.1 in HPC cluster CentOS

Posted: Wed Oct 20, 2010 8:14 pm
by cespejo
Dear Alain,
Thanks! I've done what you suggested for the configuration. Also In my .bashrc I source the ifortvars.sh and export Paths and set library paths also. However I'm getting the same problem: although using --with-mpi-prefix the correct compilers are chosen, there is the same list of warnings at advanced compiler features section of configure, and next in Connectors it is claimed that MPI support is not usable, furthermore after make compilation stops claiming that C compiler connot generate executables.
Later I changed to openmpi-gcc and set properly my .bashrc getting the same results (I take care of logout the machine and login again in order to mpi-selector-menu adjusts the parallel environment).
Thanks again for any help.

Camilo.

Re: Compiling Abinit 6.4.1 in HPC cluster CentOS

Posted: Wed Oct 20, 2010 11:31 pm
by Alain_Jacques
Ok Camillo, a small exercise then ...

Create a file with this small MPI C program ...

Code: Select all

#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();
}

Setup your parallel environment, compile with mpicc and run with mpirun (let's say with -np 4 to request 4 slots). Does it work? As long as it doesn't, Abinit configure cannot get past the mpi c consistency test.


Alain

Re: Compiling Abinit 6.4.1 in HPC cluster CentOS

Posted: Wed Oct 20, 2010 11:35 pm
by Alain_Jacques
... Sorry CamiLo - I'll never get "Don Camillo" (http://en.wikipedia.org/wiki/Don_Camillo) out of my head. :oops:

Alain

Re: Compiling Abinit 6.4.1 in HPC cluster CentOS

Posted: Thu Oct 21, 2010 6:09 pm
by cespejo
Dear Alain,
It was compiled without complains, and here is the execution log:

Code: Select all

 mpirun -hostfile ./myhosts -np 4 a.out 
Process 1 on node001 out of 4
Process 3 on node001 out of 4
Process 0 on node001 out of 4
Process 2 on node001 out of 4

So I think that the mpi and c compiler are working.

PD. wow now I know that the tv series Don Camilo at the end of the 80s in Colombia was indeed an adaptation of
the original Don Camillo to the political weather in the 50s, when rivalry among liberal and conservative parties drove the country
to a violent course ;)

Re: Compiling Abinit 6.4.1 in HPC cluster CentOS

Posted: Thu Oct 21, 2010 7:45 pm
by pouillon
I've looked into your config.log. You're getting these warnings because you're using GCC 4.1, which is not supported by the build system of Abinit. A quick fix would be to specify the CFLAGS at configure-time yourself.

Re: Compiling Abinit 6.4.1 in HPC cluster CentOS

Posted: Thu Oct 21, 2010 8:47 pm
by cespejo
Thanks Yann. However, the problem persists working with ifort 11.1
Cheers.
Camilo.

Re: Compiling Abinit 6.4.1 in HPC cluster CentOS  [SOLVED]

Posted: Fri Oct 22, 2010 11:33 am
by pouillon
You have to make sure that mpicc is connected to icc, not to gcc. If "mpicc --version" tells you about GCC, then you know why it keeps giving you these warnings.

Re: Compiling Abinit 6.4.1 in HPC cluster CentOS

Posted: Mon Oct 25, 2010 6:23 pm
by cespejo
Thanks Yann, certainly it is the problem, we have not the icc compiler!
So, neither the mpi-gcc nor the mpi-intel work due to different reasons (gcc version on one hand and lack of icc on the other)
I'm updating the gcc compilers now :)
Cheers,
Camilo.

Re: Compiling Abinit 6.4.1 in HPC cluster CentOS

Posted: Mon Oct 25, 2010 10:04 pm
by myid520@163.com
pouillon wrote:I've looked into your config.log. You're getting these warnings because you're using GCC 4.1, which is not supported by the build system of Abinit. A quick fix would be to specify the CFLAGS at configure-time yourself.

Yes. You must remove '-mtune=native -march=native' in the CFLAGS to enable-plugins successfully.
(the defauls CFLAGS seems "-fixed -g -extend-source -vec-report0 -noaltparam -nofpscomp -O3 -xHost -ip -no-prec-div")
Actually, I found icc does not work too if do not remove those keys in CFLAGS.
I want to know the defauls CFLAGS is for which type C compilers?

Re: Compiling Abinit 6.4.1 in HPC cluster CentOS

Posted: Mon Oct 25, 2010 11:19 pm
by cespejo
Thanks a lot Zhenhua! It compiled cleanly with gcc after, as Yann said, adjusting CFLAGS as you suggested :D

Camilo.