Installing GROMACS on a 64-bit AMD Opteron Cluster running CentOS 5 Linux
The GROningen MAchine for Chemical Simulations (GROMACS) is a molecular dynamics simulation package that is very fast and has support for different force fields. It is notable for being used for protein folding at Folding@Home.
To install, download the source code from the GROMACS website to a suitable directory, extract, and configure with the appropriate environment variables. Note that a different environment module file is created for each installation as it depends on the version on openmpi that it was compiled against. It can be tested with the command mdrun_d_mpi
# cd /usr/local/src/GROMACS
# wget ftp://ftp.gromacs.org/pub/gromacs/gromacs-4.5.3.tar.gz
# tar xvf gromacs-4.5.3.tar.gz
# cd gromacs-4.5.3
# more ../config-openmpi-pgi
The configure file looks like the following. It loads the most recent version of openmpi-pgi and fftw-pgi. Note the multiple steps of make, make clean, make install and a new configuration. GROMACS is not trivial to install; the script is very handy!
#!/bin/bash . /etc/profile.d/modules.sh module purge module load openmpi-pgi module load fftw/2.1.5-pgi CC=pgcc F77=pgf95 CXX=pgcpp ./configure --prefix=/usr/local/$(basename $(pwd) | sed 's#-#/#')-openmpi-pgi --with-fft=fftw2 make make install make clean CC=pgcc F77=pgf95 CXX=pgcpp ./configure --prefix=/usr/local/$(basename $(pwd) | sed 's#-#/#')-openmpi-pgi --with-fft=fftw2 --enable-double --program-suffix=_d make make install make clean CC=pgcc F77=pgf95 CXX=pgcpp ./configure --prefix=/usr/local/$(basename $(pwd) | sed 's#-#/#')-openmpi-pgi --with-fft=fftw2 --enable-mpi --program-suffix=_mpi make make install-mdrun make clean CC=pgcc F77=pgf95 CXX=pgcpp ./configure --prefix=/usr/local/$(basename $(pwd) | sed 's#-#/#')-openmpi-pgi --with-fft=fftw2 --enable-mpi --program-suffix=_d_mpi --enable-double make make install-mdrun
Now run the compile and make.
# ../config-openmpi-pgi
Create a new environment module file.
#%Module1.0#####################################################################
##
## $name modulefile
##
set ver [lrange [split [ module-info name ] / ] 1 1 ]
set name [lrange [split [ module-info name ] / ] 0 0 ]
set loading [module-info mode load]
proc ModulesHelp { } {
puts stderr "\tThis module sets the envinronment for $name v$ver"
}
module-whatis "Set environment variables to use $name version $ver"
set GROMACSDIR /usr/local/$name/$ver
# must force load of version it was compiled against
if { $loading && [ is-loaded openmpi-pgi ] } {
module unload openmpi-pgi
}
if { $loading && ![ is-loaded openmpi-pgi ] } {
module load openmpi-pgi/1.4.3
}
setenv GROMACSDIR $GROMACSDIR
prepend-path PATH $GROMACSDIR/bin
prepend-path GMXBIN $GROMACSDIR/bin
prepend-path LD_LIBRARY_PATH $GROMACSDIR/lib
prepend-path GMXLDLIB $GROMACSDIR/lib
prepend-path GMXMAN $GROMACSDIR/man
prepend-path MANPATH $GROMACSDIR/man
prepend-path GMXDATA $GROMACSDIR/share

Comments
Nota bene: As of v4.5.4
Nota bene: As of v4.5.4 upgrade your FFTW to version 3.x (e.g., module load fftw/3.2.2-pgi) and for each configuration include --enable-static. Use GCC rather than PGI (there's a bug that is not fixed for autoconf. You won't need the CC= etc. Just go straight to ./configure e.g.,