Building on Debian

From GridPACK
Revision as of 23:06, 3 October 2018 by Bjpalmer (talk | contribs) (GridPACK Configuration and Build)

Jump to: navigation, search

Building GridPACK is relatively straightforward on | Debian 9 (stretch) systems. At the time of writing, | Debian 9 was the current stable distribution. There is no need to build any prerequisite software. All can be installed from Debian package repositories.

System Preparation

You will need super user or sudo privileges for this installation. You will not be able to edit files /etc/apt/sources.list or use utilities such as apt-get without them.

Starting with a clean, minimal installation, add contrib and non-free components of the Debian distribution needed to apt sources (ParMETIS is in non-free). Edit /etc/apt/sources.list and make the main repository line look like this:

deb http://ftp.us.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.us.debian.org/debian/ stretch main contrib non-free

and then refresh the system package lists with

sudo apt-get update

Prerequisite Installation

General

Install a C++ compiler, CMake, and Git:

sudo apt-get install git cmake g++

Boost

Install necessary Boost libraries:

sudo apt-get install libboost-dev libboost-mpi-dev \
   libboost-random-dev libboost-filesystem-dev libboost-system-dev

This will also install the default MPI implementation (OpenMPI), including compiler wrappers.

PETSc

Install the real-valued version of PETSc with

sudo apt-get install petsc-dev

or the complex-valued version with

sudo apt-get install libpetsc3.7.5-dev

Global Arrays

Global Arrays has lots of dependencies. Unfortunately, installing the Debian GA package (version 5.4~beta~r10636+dfsg-5) does not enforce any of them. Installing PETSc first will install most of them. This should complete the GA installation:

sudo apt-get install libglobalarrays-dev libarmci-mpi-dev

ParMETIS

Install ParMETIS using

sudo apt-get install libparmetis-dev libmetis-dev

GNU Linear Programming Kit

GLPK is optional and can be installed with

sudo apt-get install libglpk-dev

GridPACK Configuration and Build

Download GridPACK from the GridPACK release page and untar the release using

   tar xvf gridpack-X.X.tar.gz

The top level GridPACK directory is denoted below by the variable $GRIDPACK.

It is a good idea to build GridPACK in a separate directory under the GridPACK source tree. The example below assumes that a directory called build has been created under $GRIDPACK/src and that you have cd'd into this directory.

 cd $GRIDPACK/src
 mkdir build
 cd build

Configure GridPACK as follows

CC=gcc
CXX=g++
CFLAGS=-pthread
CXXFLAGS=-pthread
export CC CXX CFLAGS CXXFLAGS

cmake \
    -D PETSC_DIR:STRING="/usr/lib/petsc" \
    -D PARMETIS_DIR:PATH="/usr" \
    -D GA_EXTRA_LIBS:STRING="-lscalapack-openmpi -lblacs-openmpi -llapack -lblas -lgfortran" \
    -D MPI_CXX_COMPILER:STRING="mpicxx" \
    -D MPI_C_COMPILER:STRING="mpicc" \
    -D MPIEXEC:STRING="mpiexec" \
    -D MPIEXEC_MAX_NUMPROCS:STRING="2" \
    -D GRIDPACK_TEST_TIMEOUT:STRING=30 \
    -D USE_GLPK:BOOL=ON \
    -D GLPK_ROOT_DIR:PATH="/usr" \
    -D CMAKE_BUILD_TYPE:STRING=Release \
    -D CMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
    -D CFLAGS="-pthread" FCFLAGS="-pthread" CXXFLAGS="-pthread" \
    ..

Then, build and test

make
make test

Some of the tests may fail because the regular expression functionality in cmake appears to be unreliable on some platforms. There may also be problems with timeouts, which may be eliminated by increasing the value of GRIDPACK_TEST_TIMEOUT in the GridPACK configuration script. The regular expression errors have the form

 Test project /home/toby/GridPACK/gridpack-3.2/src/build
       Start  1: greetings_serial
  1/85 Test  #1: greetings_serial .....................   Passed    0.29 sec
       Start  2: greetings_parallel
  2/85 Test  #2: greetings_parallel ...................***Failed  Required regular expression not found.Regex=[I am process 0 of [1-9].*$]  0.01 sec