Building on Ubuntu

From GridPACK
Revision as of 22:41, 3 October 2018 by Bjpalmer (talk | contribs) (Build and Test GridPACK)

Jump to: navigation, search

GridPACK is relatively easy to build on Ubuntu Linux systems. This example was performed on a Virtual Box instance running a clean install of Ubuntu Linux 16.04 (LTS). If you have no need to modify the GridPACK library itself, consider installing the binary package. You will need super user or sudo privileges for this installation.

A few basic development packages will be necessary. Install them with

sudo apt-get install git build-essential devscripts equivs

Obtain GridPACK Source

At the time of writing (1/5/2018), these instructions only work with the Github repository code. These instructions will not work with the most recent official release (3.1).

In a convenient location, clone the GridPACK repository

git clone https://github.com/GridOPTICS/GridPACK.git
cd GridPACK
git submodule update --init


Install Required Packages

All the GridPACK prerequisites packages can be installed using the packaging information in the source. Run this command in the top directory of the cloned repository:

sudo mk-build-deps -i

This will make and install a virtual package called gridpack-build-deps with all the dependencies needed to build GridPACK.

Alternatively, all required packages will be installed by installing the GridPACK binary package.

Build and Test GridPACK

Configure and build GridPACK using the recipe for gridpackvm in example_configuration.sh:

mkdir src/build
cd src/build
bash ../example_configuration.sh gridpackvm
make 
make test

Or, modify this configuration recipe to fit your needs:

CC=gcc
CXX=g++
export CC CXX

cmake \
    -D PETSC_DIR:STRING="/usr/lib/petscdir/3.6.2" \
    -D PETSC_ARCH:STRING="x86_64-linux-gnu-real" \
    -D PARMETIS_DIR:PATH="/usr" \
    -D GA_EXTRA_LIBS:STRING="-lscalapack-openmpi -lblacsCinit-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=60 \
    -D USE_GLPK:BOOL=ON \
    -D GLPK_ROOT_DIR:PATH="/usr" \
    -D BUILD_SHARED_LIBS:BOOL=OFF \
    -D CMAKE_INSTALL_PREFIX:PATH="$HOME/gridpack" \
    -D CMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
    ..
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

Removing Required Software

If no longer needed, the required packages can be removed using


sudo apt-get purge gridpack-build-deps
sudo apt autoremove