Skip to content

How to compile PUMGen

Sebastian Rettenberger edited this page Feb 27, 2017 · 8 revisions

Prerequirements

To compile PUMGen, you need the following libraries:

HDF5

http://www.hdfgroup.org/HDF5/release/obtainsrc.html

CC=mpicc ./configure --enable-parallel --prefix=/path/to/hdf5
make
make install 

netCDF

http://www.unidata.ucar.edu/downloads/netcdf/index.jsp (NetCDF-C Releases)

CPPFLAGS=-I/path/to/hdf5/include CC=mpicc LDFLAGS=-L/path/to/hdf5/lib LIBS=-ldl ./configure --disable-shared --prefix=/path/to/netcdf
make
make install

Metis

http://glaros.dtc.umn.edu/gkhome/metis/metis/download

make config prefix=/path/to/metis
make

ParMetis

http://glaros.dtc.umn.edu/gkhome/metis/parmetis/download

make config prefix=/path/to/parmetis
make 

PUMI

https://github.com/SCOREC/core

mkdir build && cd build
cmake .. \
  -DCMAKE_C_COMPILER="`which mpicc`" \
  -DCMAKE_CXX_COMPILER="`which mpicxx`" \
  -DCMAKE_C_FLAGS="-O2 -g -Wall" \
  -DCMAKE_CXX_FLAGS="-O2 -g -Wall" \
  -DCMAKE_INSTALL_PREFIX="/path/to/pumi" 
make
make install

Simmetrix (optional)

The Sim Modeling Suite from Simmetrix is optional. To use it, you need a valid Simmetrix license for the Sim Modeling Suite library. If you have the license you should be able to download the library from http://simmetrix.com/support_area/Support.php. The master requires at least version 10.0-161210.

Extract all packages into a single directory and compile MPI wrapper for your MPI version:

cd code/PartitionWrapper
cp Makefile.custom Makefile
# Edit the Makefile and change PQUAL, CC and CXX to match your system
make PARALLEL=mpi
cp lib/libSimPartitionWrapper-*.a ../../lib/x64_rhel6_gcc44/

To combine PUMGen and Simmetrix, you need PUMI with Simmetrix support. If you are using the Simulation Modeling Suite version 10.x, use this PUMI fork. Configure PUMI with the following flags:

cmake .. \
  -DCMAKE_C_COMPILER="mpicc" \
  -DCMAKE_CXX_COMPILER="mpicxx" \
  -DCMAKE_C_FLAGS="-O2 -g -Wall" \
  -DCMAKE_CXX_FLAGS="-O2 -g -Wall" \
  -DENABLE_SIMMETRIX=ON \
  -DSIM_MPI="<mpi-name>" \
  -DSIMMETRIX_LIB_DIR="/path/to/simmetrix/lib/x64_rhel6_gcc44" \
  -DSIMMETRIX_INCLUDE_DIR="/path/to/simmetrix/include" \
  -DCMAKE_INSTALL_PREFIX="/path/to/pumi" 

Where <mpi-name> is the name us set PQUAL to in the Simmetrix Makefile.

Getting PUMGen

git clone --recursive https://github.com/TUM-I5/PUML.git
git checkout seissol_converter
git submodule update

Compiling PUMGen

Without Simmetrix:

scons parallelization=mpi \
     prefixPath=/path/to/hdf5:/path/to/netcdf:/path/to/metis:/path/to/parmetis:/path/to/pumi \
     cc=mpicc cxx=mpicxx

With Simmetrix:

scons parallelization=mpi simModSuite=yes mpiLib=<mpi-name> \
    prefixPath=/path/to/hdf5:/path/to/netcdf:/path/to/metis:/path/to/pumi:/path/to/parmetis/simmetrix \
    cc=mpicc cxx=mpicxx