linuxマシン(CentOS 6.4 : Intel Corei7-4770K 3.50GHz + nVIDIA GeForce GTX660)にGROMACS 4.6.4をインストールする機会があった(2013年11月の情報)ので手順をメモします。

(この記事の後、GROMACS 5.1.2 をインストールした例をこちらに書きました。)

openmpiによるインストールは
Ag++:Gromacs 4.6.* シリーズのインストール – livedoor Blog(ブログ)
を参考にさせていただきました(ありがとうございます)。

cmake 2.8以上を予めインストールしておきます。
gromacs-4.6.4.tar.gz fftw-3.3.3.tar.gz mpich2-1.4.1p1.tar.gz openmpi-1.6.5.tar.gz(現在はもっと新しいversionがそれぞれある)をダウンロードしました。

GPU版のGROMACSのインストールには、CUDA5.5を予めインストールしました。
インストールしたGROMACSはすべてsingle precision版です。

———– mpich2 による方法(GPU版GROMACSも試してみた)————————————
>>>
>>> install mpich2 by gcc
>>>

./configure --prefix=/usr/local/mpich2-1.4.1p1.gcc
make
su
make install

(以下すべて、makeはユーザ領域で、make installはrootで行った。ここら辺は管理方針による。)

>>>
>>> install fftw by gcc & mpich2(by gcc)
>>>

export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.4.7:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/mpich2-1.4.1p1.gcc/lib:$LD_LIBRARY_PATH
./configure --prefix=/usr/local/fftw-3.3.3.mpich2.gcc CC=gcc CXX=g++ F77=gfortran FC=gfortran
 --enable-mpi --enable-threads --enable-sse2 --enable-openmp --enable-static --enable-shared
 --with-g77-wrappers MPICC=/usr/local/mpich2-1.4.1p1.gcc/bin/mpicc
 LDFLAGS=-L/usr/local/mpich2-1.4.1p1.gcc/lib CPPFLAGS=-I/usr/local/mpich2-1.4.1p1.gcc/include
make
su
make install
make clean
./configure --prefix=/usr/local/fftw-3.3.3.mpich2.gcc CC=gcc CXX=g++ F77=gfortran FC=gfortran
 --enable-mpi --enable-threads --enable-sse2 --enable-openmp --enable-static --enable-shared
 --with-g77-wrappers MPICC=/usr/local/mpich2-1.4.1p1.gcc/bin/mpicc
 LDFLAGS=-L/usr/local/mpich2-1.4.1p1.gcc/lib CPPFLAGS=-I/usr/local/mpich2-1.4.1p1.gcc/include
 --enable-single
make
su
make install

>>>
>>> install gromacs 4.6.4 single precision
>>>

mkdir b1
cd b1
export LDFLAGS="-L/usr/local/fftw-3.3.3.mpich2.gcc/lib"
export CPPFLAGS="-I/usr/local/fftw-3.3.3.mpich2.gcc/include"
export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.4.7:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/mpich2-1.4.1p1.gcc/lib:$LD_LIBRARY_PATH
cmake ../ -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DGMX_MPI=OFF
 -DGMX_CPU_ACCELERATION=AVX_256 -DGMX_DOUBLE=OFF -DGMX_OPENMP=ON -DGMX_GPU=OFF
 -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs-4.6.4.mpich2.gcc -DBUILD_SHARED_LIBS=OFF
 -DGMX_PREFER_STATIC_LIBS=ON -DGMX_FFT_LIBRARY=FFTW3
 -DCMAKE_PREFIX_PATH=/usr/local/fftw-3.3.3.mpich2.gcc
make
su
make install

(Intel Corei7-4770K 3.50GHz の場合は、-DGMX_CPU_ACCELERATION=AVX_256 でした。)

>>>
>>> install gromacs 4.6.4 mpi version
>>>

mkdir b2
cd b2
export LDFLAGS="-L/usr/local/fftw-3.3.3.mpich2.gcc/lib"
export CPPFLAGS="-I/usr/local/fftw-3.3.3.mpich2.gcc/include"
export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.4.7:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/mpich2-1.4.1p1.gcc/lib:$LD_LIBRARY_PATH
cmake ../ -DCMAKE_C_COMPILER=/usr/local/mpich2-1.4.1p1.gcc/bin/mpicc
 -DCMAKE_CXX_COMPILER=/usr/local/mpich2-1.4.1p1.gcc/bin/mpicxx -DGMX_MPI=ON
 -DGMX_CPU_ACCELERATION=AVX_256 -DGMX_DOUBLE=OFF -DGMX_OPENMP=ON -DGMX_GPU=OFF
 -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs-4.6.4.mpich2.gcc -DBUILD_SHARED_LIBS=OFF
 -DGMX_PREFER_STATIC_LIBS=ON -DGMX_FFT_LIBRARY=FFTW3
 -DCMAKE_PREFIX_PATH=/usr/local/fftw-3.3.3.mpich2.gcc
make
su
make install

>>>
>>> install gromacs 4.6.4 single precision by GPU
>>>

mkdir b3
cd b3
export LDFLAGS="-L/usr/local/fftw-3.3.3.mpich2.gcc/lib"
export CPPFLAGS="-I/usr/local/fftw-3.3.3.mpich2.gcc/include"
export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.4.7:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/mpich2-1.4.1p1.gcc/lib:$LD_LIBRARY_PATH
cmake ../ -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DGMX_MPI=OFF
 -DGMX_CPU_ACCELERATION=AVX_256 -DGMX_DOUBLE=OFF -DGMX_OPENMP=ON -DGMX_GPU=ON
 -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs-4.6.4.mpich2.gcc.gpu -DBUILD_SHARED_LIBS=OFF
 -DGMX_PREFER_STATIC_LIBS=ON -DGMX_FFT_LIBRARY=FFTW3
 -DCMAKE_PREFIX_PATH=/usr/local/fftw-3.3.3.mpich2.gcc
make
su
make install

>>>
>>> install gromacs 4.6.4 mpi version by GPU
>>>

mkdir b4
cd b4
export LDFLAGS="-L/usr/local/fftw-3.3.3.mpich2.gcc/lib"
export CPPFLAGS="-I/usr/local/fftw-3.3.3.mpich2.gcc/include"
export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.4.7:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/mpich2-1.4.1p1.gcc/lib:$LD_LIBRARY_PATH
cmake ../ -DCMAKE_C_COMPILER=/usr/local/mpich2-1.4.1p1.gcc/bin/mpicc
 -DCMAKE_CXX_COMPILER=/usr/local/mpich2-1.4.1p1.gcc/bin/mpicxx -DGMX_MPI=ON
 -DGMX_CPU_ACCELERATION=AVX_256 -DGMX_DOUBLE=OFF -DGMX_OPENMP=ON -DGMX_GPU=ON
 -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs-4.6.4.mpich2.gcc.gpu -DBUILD_SHARED_LIBS=OFF
 -DGMX_PREFER_STATIC_LIBS=ON -DGMX_FFT_LIBRARY=FFTW3
 -DCMAKE_PREFIX_PATH=/usr/local/fftw-3.3.3.mpich2.gcc
make
su
make install

>>
>> MPI版の実行コマンド例
>>

source /usr/local/gromacs-4.6.4.mpich2.gcc/bin/GMXRC
mpirun -n 8 mdrun_mpi -testverlet -v -deffnm md

とある計算条件で、1CPUでのMPIの8並列で、59.283secでした。

>>
>> GPU版の実行コマンド例
>>

source /usr/local/gromacs-4.6.4.mpich2.gcc.gpu/bin/GMXRC
mdrun -gpu_id 0 -testverlet -v -deffnm md

上記と同じ計算条件で、MPI並列なしの1CPU+1GPUで、23.429secでした。MPIの8並列より約2.53倍早くなった。貧弱なPC(1CPU+1GPU)なのでこんなものか。
ちなみに、もっと高性能なマシン(多CPU+多GPU)での実行方法は、東工大のTSUBAMEのサイトが詳しいです。

———– openmpi による方法(GPU版GROMACSは試していない)——————————

こちらは、コンパイルは通りましたが、実行は試してませんので、あくまで参考です。

>>>
>>> install openmpi by gcc
>>>

./configure --enable-static --prefix=/usr/local/openmpi-1.6.5.gcc CC=gcc CXX=g++ F77=gfortran FC=gfortran
make
su
make install

>>>
>>> install fftw by gcc & openmpi(by gcc)
>>>

export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.4.7:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/openmpi-1.6.5.gcc/lib:$LD_LIBRARY_PATH
./configure --prefix=/usr/local/fftw-3.3.3.openmpi.gcc CC=gcc CXX=g++ F77=gfortran FC=gfortran
 --enable-mpi --enable-threads --enable-sse2 --enable-openmp --enable-static --enable-shared
 --with-g77-wrappers MPICC=/usr/local/openmpi-1.6.5.gcc/bin/mpicc
 LDFLAGS=-L/usr/local/openmpi-1.6.5.gcc/lib CPPFLAGS=-I/usr/local/openmpi-1.6.5.gcc/include
make
su
make install
make clean
./configure --prefix=/usr/local/fftw-3.3.3.openmpi.gcc CC=gcc CXX=g++ F77=gfortran FC=gfortran
 --enable-mpi --enable-threads --enable-sse2 --enable-openmp --enable-static --enable-shared
 --with-g77-wrappers MPICC=/usr/local/openmpi-1.6.5.gcc/bin/mpicc
 LDFLAGS=-L/usr/local/openmpi-1.6.5.gcc/lib CPPFLAGS=-I/usr/local/openmpi-1.6.5.gcc/include
 --enable-single
make
su
make install

>>>
>>> install gromacs 4.6.4 single precision
>>>

mkdir b5
cd b5
export LDFLAGS="-L/usr/local/fftw-3.3.3.openmpi.gcc/lib"
export CPPFLAGS="-I/usr/local/fftw-3.3.3.openmpi.gcc/include"
export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.4.7:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/openmpi-1.6.5.gcc/lib:$LD_LIBRARY_PATH
cmake ../ -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DGMX_MPI=OFF
 -DGMX_CPU_ACCELERATION=AVX_256 -DGMX_DOUBLE=OFF -DGMX_OPENMP=ON -DGMX_GPU=OFF
 -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs-4.6.4.openmpi.gcc -DBUILD_SHARED_LIBS=OFF
 -DGMX_PREFER_STATIC_LIBS=ON -DGMX_FFT_LIBRARY=FFTW3
 -DCMAKE_PREFIX_PATH=/usr/local/fftw-3.3.3.openmpi.gcc
make
su
make install

>>>
>>> install gromacs 4.6.4 mpi version
>>>

mkdir b6
cd b6
export LDFLAGS="-L/usr/local/fftw-3.3.3.openmpi.gcc/lib"
export CPPFLAGS="-I/usr/local/fftw-3.3.3.openmpi.gcc/include"
export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.4.7:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/openmpi-1.6.5.gcc/lib:$LD_LIBRARY_PATH
cmake ../ -DCMAKE_C_COMPILER=/usr/local/openmpi-1.6.5.gcc/bin/mpicc
 -DCMAKE_CXX_COMPILER=/usr/local/openmpi-1.6.5.gcc/bin/mpiCC -DGMX_MPI=ON
 -DGMX_CPU_ACCELERATION=AVX_256 -DGMX_DOUBLE=OFF -DGMX_OPENMP=ON -DGMX_GPU=OFF
 -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs-4.6.4.openmpi.gcc -DBUILD_SHARED_LIBS=OFF
 -DGMX_PREFER_STATIC_LIBS=ON -DGMX_FFT_LIBRARY=FFTW3
 -DCMAKE_PREFIX_PATH=/usr/local/fftw-3.3.3.openmpi.gcc
make
su
make install