BG/P: опыт установки GROMACS

Подробная инструкция по конфигурированию GROMACS на Blue Gene/P доступна здесь: http://wiki.gromacs.org/index.php/GROMACS_on_BlueGene

Установка FFTW:

CC=mpixlc_r \
CFLAGS="-O3 -qarch=450d -qtune=450" \
MPICC=mpixlc_r \
CXX=mpixlC_r \
CXXFLAGS="-O3 -qarch=450d -qtune=450" \
F77=mpixlf77_r \
FFLAGS="-O3 -qarch=450d -qtune=450" \
LIBS="-lmass" \
./configure --enable-mpi --enable-openmp --enable-fma --prefix=/home/oz/gro/fftw

FFTW на фронтэнде:

CC=xlc_r \
CFLAGS="-q64" \
CXX=xlC_r \
CXXFLAGS="-q64" F77="xlf77_r -q64" \
./configure  --prefix=/gpfs/data/oz/fftw.fen --disable-fortran

Установка GROMACS:

CC=mpixlc_r \
CFLAGS="-O3 -qarch=450d -qtune=450" \
MPICC=mpixlc_r \
CXX=mpixlC_r \
CXXFLAGS="-O3 -qarch=450d -qtune=450" \
F77=mpixlf77_r \
FFLAGS="-O3 -qarch=450d -qtune=450" \
LIBS="-lmass" \
CPPFLAGS="-I/home/oz/gro/fftw/include" \
LDFLAGS="-L/home/oz/gro/fftw/lib" \
./configure \
    --prefix=/home/oz/gro/gromacs \
    --host=ppc \
    --build=ppc64 \
    --enable-ppc-sqrt=1 \
    --enable-bluegene \
    --enable-mpi \
    --with-fft=fftw2 \
    --without-x \
    --enable-double \
    --disable-ia32-3dnow \
    --disable-ia32-sse \
    --disable-x86-64-sse \
    --disable-ia64-asm \
    --disable-apple-64bit

Установка GROMACS на фронтэнде:

CC=xlc_r \
CFLAGS="-q64" \
CXX=xlC_r \
CXXFLAGS="-q64" \
F77=xlf77_r \
FFLAGS="-q64" \
CPPFLAGS="-I/home/oz/gro/fftw.fen/include" \
LDFLAGS="-L/home/oz/gro/fftw.fen/lib" \
./configure \
    --prefix=/home/oz/gro/gromacs.fen \
    --host=ppc \
    --build=ppc64 \
    --enable-ppc-sqrt=1 \
    --with-fft=fftw2 \
    --without-x \
    --enable-double \
    --disable-ia32-3dnow \
    -disable-ia32-sse \
    --disable-x86-64-sse \
    --disable-ia64-asm \
    --disable-apple-64bit

В конфигурационных файлах нужно прописать:

export PATH=$PATH:/gpfs/data/oz/gromacs.fen/bin/

Более стабильный вариант:
не использовать опцию --bluegene и применить ключи -qstrict -qarch=450 (вместо 450d).

CC=mpixlc_r \
CFLAGS="-O3 -qstrict -qarch=450 -qtune=450" \
MPICC=mpixlc_r \
CXX=mpixlC_r \
CXXFLAGS="-O3 -qstrict -qarch=450 -qtune=450" \
F77=mpixlf77_r FFLAGS="-O3 -qstrict -qarch=450 -qtune=450" \
LIBS="-lmass" \
./configure \
    --enable-mpi \
    --enable-fma \
    --prefix=/home/oz/gro/fftw
CC=mpixlc_r \
CFLAGS="-O3 -qstrict -qarch=450 -qtune=450" \
MPICC=mpixlc_r \
CXX=mpixlC_r \
CXXFLAGS="-O3 -qstrict -qarch=450 -qtune=450" \
F77=mpixlf77_r \
FFLAGS="-O3 -qstrict -qarch=450 -qtune=450" \
LIBS="-lmass" \
CPPFLAGS="-I/home/oz/gro/fftw/include" \
LDFLAGS="-L/home/oz/gro/fftw/lib" \
./configure \
    --prefix=/home/oz/gro/gromacs \
    --host=ppc \
    --build=ppc64 \
    --enable-ppc-sqrt=1  \
    --enable-mpi \
    --with-fft=fftw2 \
    --without-x \
    --enable-double \
    --disable-ia32-3dnow \
    -disable-ia32-sse \
    --disable-x86-64-sse  \
    --disable-ia64-asm \
    --disable-apple-64bit \
    --enable-all-static

Успешно работает на 512 ядрах (128 вычислительных узлов в VN-режиме или 512 — в SMP-режиме).