Hello
I have been trying to install plumed-2.4.1 (with gromacs-5.1.4) on a linux cluster. Initially, I installed both gromacs and plumed using MVAPICH2(ver-2.3) that was installed locally. In this case both plumed and gromacs were compiled without errors. But while running a test simulation with gromacs, I got a number of errors that indicated problems with MVAPICH2 MPI stack. The cluster admin recommeded using Intel MPI compilers they provide.
Now using Intel MPI, although gromacs was compiled and ran without any errors, I found problems compiling plumed. Following describes the steps I followed:
1.
> ./configure --prefix=/home/acusers/pbalaji/install/plumed-2.4.1 LDFLAGS="-L/home/acusers/pbalaji/install/lapack-3.8.0/lib64/ -L/home/acusers/pbalaji/install/xdrfile/lib/ -L/home/apps/ics/impi/latest/lib64/ -L/home/acusers/pbalaji/install/libmatheval/lib/" CPPFLAGS="-I/home/acusers/pbalaji/install/libmatheval/include/ -I/home/acusers/pbalaji/install/xdrfile/include/ -I/home/apps/ics/impi/latest/include64/" CXX=/home/apps/ics/impi/latest/bin64/mpicxx >>During configuration step, I found warning during lookup for mpi.h
Output:
> checking mpi.h presence... yes
configure: WARNING: mpi.h: present but cannot be compiled
configure: WARNING: mpi.h: check for missing prerequisite headers?
configure: WARNING: mpi.h: see the Autoconf documentation
configure: WARNING: mpi.h: section "Present But Cannot Be Compiled"
configure: WARNING: mpi.h: proceeding with the compiler's result
checking for mpi.h... no
configure: WARNING: cannot enable __PLUMED_HAS_MPI
I found elsewhere online (some Intel MPI forum) that adding CXXFLAGS=-DMPICH_IGNORE_CXX_SEEK should help. So my updated configure command was:
> ./configure --prefix=/home/acusers/pbalaji/install/plumed-2.4.1 LDFLAGS="-L/home/acusers/pbalaji/install/lapack-3.8.0/lib64/ -L/home/acusers/pbalaji/install/xdrfile/lib/ -L/home/apps/ics/impi/latest/lib64 /libmpi.so -L/home/acusers/pbalaji/install/libmatheval/lib/" CPPFLAGS="-I/home/acusers/pbalaji/install/libmatheval/include/ -I/home/acusers/pbalaji/install/xdrfile/include/ -I/home/apps/ics/impi/latest/include64/" CXX=/home/apps/ics/impi/latest/bin64/mpicxx CXXFLAGS=-DMPICH_IGNORE_CXX_SEEK
This time, the configuration ran without any errors.
2. >
make
In this step while linking, I got errors, again related to MPI.
Linking step that fails:
/home/apps/ics/impi/latest/bin64/mpicxx ../main/main.o "/home/acusers/pbalaji/install/plumed-2.4.1/src/lib/libplumed.so" -o plumed-shared -ldlThe error was:
/usr/bin/ld: MPIR_Thread: TLS definition in /home/apps/ics/impi/4.1.3.049/intel64/lib/libmpi_mt.so.4 section .tbss mismatches non-TLS definition in /home/apps/ics/impi/4.1.3.049/intel64/lib/libmpi.so section .bss
/home/apps/ics/impi/4.1.3.049/intel64/lib/libmpi_mt.so.4: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make[4]: *** [plumed-shared] Error 1
Please notice that the Intel MPI library path that I passed to configure is was different compared to the library path the crops up in the error. So, it is entirely unclear what is the problem here. I checked that there are a number of locations where different version of Intel MPI (even openmpi and mvapich2) are installed.
Eg:
/usr/mpi/gcc/openmpi-1.4.3/lib64/libmpi.so
/usr/mpi/gcc/mvapich-1.2.0/lib/shared/libmpich.so
/home/apps/ics/impi/
4.1.3.049/lib64/libmpi.so/home/apps/ics/impi/latest/lib64/libmpi.so
The last one is the recommended library, that I have passed in configure step. But plumed somehow finds the penultimate library (ver-4.1.3.049).
Finally, I repeated the configure and make step using ver 4.1.3.049 Intel MPI. But surprisingly I still get the exact same error during linking.
Some clues towards solving this would be a great help.
Thanks in advance.
Abhishek