Building NWChem 6.1 with openmpi


Just Got Here
I had a strange happening building 6.1 on OpenSuse 11.4 with gcc/gfortran and MPI.
Of 1st try, I used environment settings thus:

export LARGE_FILES=TRUE
export USE_NOFSCHECK=TRUE
export NWCHEM_TOP=/home/ian/source/nwchem-6.1
export NWCHEM_TARGET=LINUX64
export BLASOPT="-L/usr/local/lib64 -lgoto_i8"
export NWCHEM_MODULES=all
export FC=gfortran
export CC=gcc
export USE_MPI=y
export USE_MPIF=y
export USE_MPIF4=y
export MPI_LIB=/usr/lib64/mpi/gcc/openmpi/lib64
export MPI_INCLUDE=/usr/lib64/mpi/gcc/openmpi/include
export LIBMPI="-L/usr/lib64/mpi/gcc/openmpi/lib -lmpi -lopen-pal -lopen-rte -lmpi_f90 -lmpi_f77"

This fails at link time, with a bunch of messages like

/home/ian/source/nwchem-6.1/lib/LINUX64/libnwpwlib.a(Parallel-mpi.o): In function `parallel_init_':
Parallel-mpi.F:(.text+0x0): multiple definition of `parallel_init_'
/home/ian/source/nwchem-6.1/lib/LINUX64/libnwpwlib.a(Parallel-tcgmsg.o):Parallel-tcgmsg.F:(.text+0x0): first defined here
/home/ian/source/nwchem-6.1/lib/LINUX64/libnwpwlib.a(Parallel-mpi.o): In function `parallel2d_init_':

i.e. it looks like it's trying to link both tcgmsg and mpi routines of the same name.

If I delete USE_MPIF=y from my environment, then compilation and linking are successful,
and the resulting program gives correct results.

Does anyone understand what's going on? Can there be a bug in the build system?

Ian

Forum Vet
Hi Ian,

That is bizarre. Given out GNUmakefile structure either Parallel-mpi.o or Parallel-tcgmsg.o should have been build. Could you do a make realclean, and recompile with the environment variables you list below.


Please do a "make >& make.log" and if it again builds badly then send me the make.log at bert.dejong@pnnl.gov.

Bert

Quote:Ian gay Feb 29th 9:52 pm
I had a strange happening building 6.1 on OpenSuse 11.4 with gcc/gfortran and MPI.
Of 1st try, I used environment settings thus:

export LARGE_FILES=TRUE
export USE_NOFSCHECK=TRUE
export NWCHEM_TOP=/home/ian/source/nwchem-6.1
export NWCHEM_TARGET=LINUX64
export BLASOPT="-L/usr/local/lib64 -lgoto_i8"
export NWCHEM_MODULES=all
export FC=gfortran
export CC=gcc
export USE_MPI=y
export USE_MPIF=y
export USE_MPIF4=y
export MPI_LIB=/usr/lib64/mpi/gcc/openmpi/lib64
export MPI_INCLUDE=/usr/lib64/mpi/gcc/openmpi/include
export LIBMPI="-L/usr/lib64/mpi/gcc/openmpi/lib -lmpi -lopen-pal -lopen-rte -lmpi_f90 -lmpi_f77"

This fails at link time, with a bunch of messages like

/home/ian/source/nwchem-6.1/lib/LINUX64/libnwpwlib.a(Parallel-mpi.o): In function `parallel_init_':
Parallel-mpi.F:(.text+0x0): multiple definition of `parallel_init_'
/home/ian/source/nwchem-6.1/lib/LINUX64/libnwpwlib.a(Parallel-tcgmsg.o):Parallel-tcgmsg.F:(.text+0x0): first defined here
/home/ian/source/nwchem-6.1/lib/LINUX64/libnwpwlib.a(Parallel-mpi.o): In function `parallel2d_init_':

i.e. it looks like it's trying to link both tcgmsg and mpi routines of the same name.

If I delete USE_MPIF=y from my environment, then compilation and linking are successful,
and the resulting program gives correct results.

Does anyone understand what's going on? Can there be a bug in the build system?

Ian

Forum Vet
Make realclean resolved the issue.

Bert


Forum >> NWChem's corner >> Compiling NWChem