Compiling GROMACS on Cluster
Contents
Download tar files
In order to compile GROMACS on the Brookhaven Linux Cluster (using sunysb or blc nodes), you need two things:
1.) The latest version of the GROMACS source code [1].
2.) A recent FFT library [2]. The newest version of FFTW (linked here) is well tested and most recommended.
For the purpose of these instructions, I am using GROMACS v4.5.4 and FFTW v3.2.2.
Compile FFTW
FTP the two tarballs onto your account on cluster. As a general practice, I compile all software and libraries into a "local" folder, i.e.:
/home/wjallen/local/
Unzip the FFTW tarball into your 'local' folder (or wherever else you prefer), then cd into the directory:
tar -xzf fftw-3.2.2.tar.gz cd fftw-3.2.2
Before configuring, we must first define which C and Fortran compilers to use. In a bash shell, this is done by using environment variables. To define their locations on cluster, execute the following commands on the command line:
export CC="/software1/intel/Compiler/11.1/069/bin/intel64/icc" export F77="/software1/intel/Compiler/11.1/069/bin/intel64/ifort"
If you are using C shell instead, you might have to define the environment variables a little differently. Something like:
setenv CC = /software1/intel/Compiler/11.1/069/bin/intel64/icc setenv F77 = /software1/intel/Compiler/11.1/069/bin/intel64/ifort
Now you are ready to configure FFTW. Decide exactly where you want to install it, then execute the following within the fftw-3.2.2 directory. I append '-double' to the directory to let me know I am compiling the double-precision version of the libraries:
./configure --prefix=/home/wjallen/local/fftw-3.2.2-double --enable-threads --with-pic
If there are no errors in the configuration, finish with:
make make install
Compile GROMACS
Unzip the GROMACS tarball and cd into that directory as before:
tar -xzf gromacs-4.5.4.tar.gz cd gromacs-4.5.4
Before you can configure, you have to set a few more environment variables. On top of the C and Fortran compilers, you have to define the location of the C++ compiler you wish to use:
export CXX="/software1/intel/Compiler/11.1/069/bin/intel64/icpc"
And you have to define exactly where you compiled FFTW:
export CPPFLAGS="-I/home/wjallen/local/fftw-3.2.2-double/include" export LDFLAGS="-L/home/wjallen/local/fftw-3.2.2-double/lib"
Now we are ready to configure GROMACS. Remember, we compiled double-precision FFTW libraries because we want to compile double-precision GROMACS. In this case, we will compile a serial version (cannot run on MPI, but can thread). Execute:
./configure --prefix=/home/wjallen/local/gromacs-4.5.4-double --disable-float --program-suffix=-4.5.4-double --with-fft=fftw3
If there are no errors in the configuration, finish with:
make make install
Compile a parallel version of GROMACS
It is oftentimes more convenient to run jobs in parallel. In the GROMACS package, only the MD integrator itself (called 'mdrun', equivalent to 'sander' in AMBER) is capable of running in parallel. To enable MPI, execute the following:
make distclean ./configure --enable-mpi --prefix=/home/wjallen/local/gromacs-4.5.4-double-mpi --disable-float --program-suffix=-4.5.4-double-mpi --with-fft=fftw3 make mdrun make install-mdrun
We have now compiled just 'mdrun' in parallel in new directories. Take careful notice of the change in the name of the install directory and the program suffix.
Finishing up
The last thing to do is to specify in your .bash_profile the location of the GROMACS executables. Add the following lines:
PATH=$PATH:/home/wjallen/local/gromacs-4.5.4-double/bin PATH=$PATH:/home/wjallen/local/gromacs-4.5.4-double-mpi/bin
Finally:
source .bash_profile