Difference between revisions of "Building on Debian"
(→GridPACK Configuration and Build) |
(→GridPACK Configuration and Build) |
||
Line 93: | Line 93: | ||
-D CMAKE_BUILD_TYPE:STRING=Release \ | -D CMAKE_BUILD_TYPE:STRING=Release \ | ||
-D CMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \ | -D CMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \ | ||
+ | -D CFLAGS="-pthread" FCFLAGS="-pthread" CXXFLAGS="-pthread" \ | ||
.. | .. | ||
</pre> | </pre> |
Revision as of 23:06, 3 October 2018
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.
Contents
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