Manual:Specific supercomputers

From OctopusWiki

Jump to: navigation, search

Here the general instructions for building Octopus are supplemented by instructions for some specific large supercomputers. Included also is how to configure the optional ETSF_IO library, and how you can run the testsuite in parallel.

Contents

United States

Franklin

Cray XT4 at National Energy Research Scientific Computing Center (NERSC), Lawrence Berkeley National Laboratory, USA

http://www.nersc.gov/nusers/systems/franklin/

module load gsl
module load fftw/3.1.1
module load netcdf
./configure --prefix=`pwd` --enable-mpi CC=cc FC=ftn FCFLAGS="-O2 -Munroll=c:1 -Mnoframe -Mlre -Mscalarsse -Mcache_align -Mflushz" GSL_CONFIG=$GSL_DIR/gsl-config --enable-newuoa

To build ETSF_IO:

module load netcdf
./configure --prefix=`pwd` --with-netcdf-module-path="$NETCDF_DIR/src/f90"

To run the testsuite in parallel (only for 3.2.0 and later):

#!/bin/bash
#PBS -q debug
#PBS -l mppwidth=5
#PBS -l walltime=0:30:00
#PBS -V

cd $HOME/octopus
export MPIEXEC=`which aprun`
export TEMPDIRPATH=$SCRATCH
make check &> $PBS_O_WORKDIR/makecheck

(27 October 2009)

Kraken

Cray XT5 at National Institute for Computational Sciences (NICS), University of Tennessee-Knoxville / Oak Ridge National Laboratory, USA

Part of National Science Foundation's TeraGrid

http://www.nics.tennessee.edu/computing-resources/kraken

module load gsl
module load fftw/3.1.1
module load netcdf/4.0.1.0
module load gdlib
./configure --prefix=`pwd` --enable-mpi CC=cc FC=ftn FCFLAGS=-fast --with-netcdf="$NETCDF_FLIB" --enable-newuoa

To build ETSF_IO:

module load netcdf/4.0.1.0
./configure --prefix=`pwd` --with-netcdf-module-path="$NETCDF_DIR/include" --with-netcdf-ldflags="$POST_LINK_OPTS"

To run the testsuite in parallel: (the code must be compiled and installed in $SCRATCH, not $HOME)

#!/bin/bash
#PBS -l size=12,walltime=0:30:00
#PBS -V

cd $SCRATCH/octopus
export MPIEXEC=`which aprun`
export TEMPDIRPATH=$SCRATCH/tmp
make -e check &> $PBS_O_WORKDIR/makecheck

(12 February 2010)

Lonestar

Dell Linux cluster at Texas Advanced Computing Center (TACC), University of Texas, Austin, USA

Part of National Science Foundation's TeraGrid

http://services.tacc.utexas.edu/index.php/lonestar-user-guide

module load gsl
module load mkl
module load netcdf
module load fftw3
./configure --prefix=`pwd` --enable-mpi FCFLAGS=-O3 --with-blas="-L$TACC_MKL_LIB -lmkl_em64t" --with-fft-lib="-L$TACC_FFTW3_LIB -lfftw3" --with-netcdf="-L$TACC_NETCDF_LIB -lnetcdf -I$TACC_NETCDF_INC" --enable-newuoa --disable-gdlib

To build ETSF_IO:

module load netcdf 
./configure --prefix=`pwd` FC=mpif90 --with-netcdf-module-path=$TACC_NETCDF_INC --with-netcdf-ldflags=-L$TACC_NETCDF_LIB FCFLAGS=-O3

To run the testsuite in parallel:

Not really possible to do properly.

(26 October 2009)

Lawrencium

Dell Linux cluster at Lawrence Berkeley National Laboratory, USA

Cluster available only to Lawrence Berkeley National Laboratory researchers

http://lrc.lbl.gov/html/Lawrencium.html

module load netcdf/4.0-intel
module load gsl
module load mkl
module load fftw/3.1.2-intel
module load gdlib
./configure --prefix=`pwd` --enable-mpi FCFLAGS=-O3 --with-blas="-L$MKL_HOME/lib/em64t -lmkl_em64t -lguide -pthread" --with-fft-lib="-L/global/software/centos-5.x86_64/modules/fftw/3.1.2-intel/lib -lfftw3" --with-netcdf="-L$NETCDF/lib -lnetcdf -lnetcdf_c++ -I$NETCDF/include" --enable-newuoa

To build ETSF_IO:

module load netcdf 
./configure --prefix=`pwd` --with-netcdf-module-path=$NETCDF/include/ --with-netcdf-ldflags="-L$NETCDF/lib/ -lnetcdf"

(29 October 2009)

Europe

Jugene

FZJ-JSC IBM Blue Gene/P, JÜLICH SUPERCOMPUTING CENTRE (JSC), Germany

May also work in another Blue Gene/P computers

General information: http://www.fz-juelich.de/jsc/jugene

Usage information: http://www.fz-juelich.de/jsc/jugene/usage/

module load gsl;
module load lapack;
autoreconf -i;
export FC_INTEGER_SIZE=4;
export CC_FORTRAN_INT=int;
export CC=mpixlc_r;
export CFLAGS='-g -O3 -qarch=450d';
export FC=mpixlf90_r;
export FCFLAGS='-g -O3 -qarch=450d -qxlf90=autodealloc -qessl -qsmp=omp';
export LIBS_BLAS="-lesslsmpbg -L/opt/ibmmath/essl/4.4/lib -lesslbg";
export LIBS_LAPACK="-L$LAPACK_LIB -llapack";
export LIBS_FFT="-L/bgsys/local/fftw3/lib/ -lfftw3 -lm";
./configure --prefix=$outdir \
     --host=powerpc32-unknown-linux-gnu \
     --build=powerpc64-unknown-linux-gnu \
     --disable-gdlib \
     --with-gsl-prefix=$GSL_DIR \
     --enable-mpi --enable-openmp;

To run you have to change to $WORK directory and run LoadLeveler. Below is an example of the tutorial (http://www.tddft.org/programs/octopus/wiki/index.php/Tutorial:Benzene_molecule) executing in 32 nodes in the SMP mode (4 threads per chip). The execution mode is hybrid; OpenMP/MPI.

Here is a example job input script:

# @ job_name = Octopus_Sample_1
# @ comment = "BGP Job by Size"
# @ error = $(job_name).$(jobid).out
# @ output = $(job_name).$(jobid).out
# @ environment = COPY_ALL;
# @ wall_clock_limit = 00:30:00
# @ notification = error
# @ notify_user = foo@gmail.com
# @ job_type = bluegene
# @ bg_size = 32
# @ queue
mpirun  -exe $OCTOPUS_HOME/bin/octopus_mpi -mode SMP -verbose 1 

To execute the above script:

llsubmit executing_script

Finis Terrae

Finis Terrae Itanium computer installed at CESGA (Galicia, Spain), is an integrated system with shared memory nodes with an SMP NUMA architecture.

http://www.cesga.es/content/view/917/115/lang,en/

Script to build ETSF_IO-1.0.2 under bash:

#!/bin/bash
module load ifort/11.0.074 netcdf/4.0

export F77="ifort"
export FFLAGS="-O3 -ip -ftz"

export FC="ifort"
export FCFLAGS="-O3 -ip -ftz"

./configure --prefix=/dir/install/etsf_io-1.0.2 \ 
 --with-netcdf-module-path="/dir/install/netcdf-4.0/include" --with-netcdf-ldflags="-L/dir/install/netcdf-4.0/lib -lnetcdf -lnetcdff -lnetcdf_c++"

Script to build Octopus-3.2.0 in serial mode under bash:

#!/bin/bash
module load gsl/1.12 icc/11.0.074 ifort/11.0.074 fftw/3.1.2 mkl/10.1.0 impi/3.2.0.011 netcdf/4.0 sparskit/2 etsf_io/1.0.2

export CC="icc"
export CFLAGS="-O2 -ip -ftz" 
export LDFLAGS="-lguide -lpthread -lm"

export F77="ifort"
export FFLAGS="-O2 -ip -ftz" 

export FC="ifort"
export FCFLAGS="-O2 -ip -ftz" 
# without MPI
./configure  --prefix=/dir/install/octopus-3.2.0  --disable-python  --disable-gdlib  \ 
 --with-blas="-L/dir/install/intel/intel11.0/Compiler/11.0/069/mkl/lib/64 -lmkl -lguide -lpthread"  \ 
 --with-lapack="-L/dir/install/intel/intel11.0/Compiler/11.0/069/mkl/lib/64 -lmkl_lapack -lguide -lpthread"  \ 
 --with-fft=fftw3 \ 
 --with-etsf_io="-L/dir/install/etsf_io-1.0.2/lib/ -letsf_io -I/dir/install/etsf_io-1.0.2/include/intel/" \
 --with-netcdf="-L/dir/install/netcdf-4.0/lib -lnetcdf -lnetcdff -lnetcdf_c++ -I/dir/install/netcdf-4.0/include" \ 
 --with-sparskit="-L/dir/install/SPARSKIT-2/lib -lskit"

The tests in serial mode run properly:

    Passed:  36 / 38
    Skipped: 2 / 38 

Everything seems to be OK
Total run-time of the testsuite: 00:11:13

Script to build Octopus-3.2.0 in parallel mode under bash:

#!/bin/bash
module load gsl/1.12 icc/11.0.074 ifort/11.0.074 fftw/3.1.2 mkl/10.1.0 impi/3.2.0.011 netcdf/4.0 sparskit/2 etsf_io/1.0.2

export CC="mpiicc"
export CFLAGS="-O2 -ip -ftz"
export LDFLAGS="-lguide -lpthread -lm"

export F77="mpiifort"
export FFLAGS="-O2 -ip -ftz"

export FC="mpiifort"
export FCFLAGS="-O2 -ip -ftz"
# with MPI
./configure --prefix=/dir/install/octopus-3.2.0-mpi --disable-python --disable-gdlib --enable-mpi \
 --with-blas="-L/dir/install/intel/intel11.0/Compiler/11.0/069/mkl/lib/64 -lmkl -lguide -lpthread"  \ 
 --with-lapack="-L/dir/install/intel/intel11.0/Compiler/11.0/069/mkl/lib/64 -lmkl_lapack -lguide -lpthread"  \ 
 --with-fft=fftw3 \ 
 --with-etsf_io="-L/dir/install/etsf_io-1.0.2/lib/ -letsf_io -I/dir/install/etsf_io-1.0.2/include/intel/" \
 --with-netcdf="-L/dir/install/netcdf-4.0/lib -lnetcdf -lnetcdff -lnetcdf_c++ -I/dir/install/netcdf-4.0/include" \ 
 --with-sparskit="-L/dir/install/SPARSKIT-2/lib -lskit"

If you have a lot of failed tests in parallel mode, fail:

...
Test run failed with exit code 65280
...
cat: td.general/multipoles: No such file or directory
...
   Passed:  1 / 38
   Skipped: 3 / 38
   Failed:  34 / 38
...

Maybe you must set the MPIEXEC variable to mpirun instead fo mpiexec and you must use a SHARED directory:

#!/bin/bash
module load gsl/1.12 icc/11.0.074 ifort/11.0.074 fftw/3.1.2 mkl/10.1.0 impi/3.2.0.011 netcdf/4.0 sparskit/2 etsf_io/1.0.2
mkdir -p $HOMESFS/tmp

export TEMPDIRPATH=$HOMESFS/tmp
echo TEMPDIRPATH: $TEMPDIRPATH

export MPIEXEC=`which mpirun`
echo MPIEXEC: $MPIEXEC

make check

It seems to work:

   Passed:  34 / 38
   Skipped: 3 / 38
   Failed:  1 / 38
   testfile                                          # failed testcases
   --------------------------------------------------------------------
   finite_systems_3d/21-lobpcg.test                  2

MareNostrum

MareNostrum is a supercomputer in Europe, the most powerful in Spain. This is one of the seven supercomputers of the Spanish Supercomputing Network. The supercomputer consists of 2,560 JS21 blade computing nodes, each with 2 dual-core IBM 64-bit PowerPC 970MP processors running at 2.3 GHz for 10,240 CPUs in total. The computing nodes of MareNostrum communicate primarily through Myrinet.

You may need to compile GSL and FFTW libraries before starting then installation.

Here is a script to build Octopus:

#!/bin/bash

export LD_LIBRARY_PATH=/usr/lib
export CC=mpicc
export FC=mpif90

export CFLAGS="-q64 -O3 -qtune=ppc970 -qarch=ppc970 -qcache=auto -qnostrict -qignerrno -qinlglue"
export FCFLAGS=$CFLAGS" -qessl -qxlf90=autodealloc" 

export LIBS_BLAS="-L/usr/lib64 -lessl" 

./configure   \
   --with-lapack=/gpfs/apps/LAPACK/lib64/liblapack.a \
   --disable-gsltest \
   --disable-gdlib \
   --with-gsl-prefix=$outdirGSL \
   --with-fft-lib=$outdirFFT/lib/libfftw3.a  \
   --prefix=$outdir --enable-mpi --disable-f90-forall

As you can see in the script the --with-gsl-prefix has to point to your GSL and --with-fft-lib to your FFTW. You should compile those with the same CFLAGS and FCFLAGS. Here is an example of configuring GSL (we use GSL-1.11):

./configure --prefix=$outdirGSL CC=gcc -m64 --enable-static --disable-shared

We use FFTW-3.1.3. To configure FFTW3 just write:

./configure --prefix=$outdirFFT

Recently Marenostrum has changed to the SLURM manager. To execute a job you have to submit it with jobsubmit (more details in the User's Guide).

Personal tools