If you use CMake to compile, most of the prerequesites are downloaded automatically if they aren't already found on your system.
boost::program_options
library (at least version 1.53.0). The Boost multiprecision component may also be of interest to PFASST++ users.The HashDist environment management system provides an easy, robust, and version controlled way for our developers (and users) to download and install all prerequesites locally (ie, you don't need special privileges on your system to use HashDist, and it won't modify your system).
To use HashDist
git clone [email protected]:hashdist/hashdist.git export PATH=$PWD/hashdist/bin:$PATH
cd PFASST hit build -v tools/hashdist/pfasst-stack.debian.yaml mv pfasst-stack.debian stack
This may take a while (ie, do this before going for lunch) the first time through. However, once complete, subsequent builds (using CMake or otherwise) will bypass prerequesite installation, even if you change CMake build options or start a fresh out-of-source build directory.
Use Git to clone the repository (https://github.com/Parallel-in-Time/PFASST.git) or download the latest release from GitHub.
build
) in the source tree (or elsewhere).-DCMAKE_BUILD_TYPE=<VALUE>
to specify general compiler flags. | `CMAKE_BUILD_TYPE` | implied compiler flags | |--------------------|------------------------| | `Debug` | `-g` | | `Release` | `-O3 -DNDEBUG` | | `RelWithDebInfo` | `-O2 -g -DNDEBUG` | | `MinSizeRel` | `-Os -DNDEBUG` |
-Dpfasst_WITH_GCC_PROF=ON
and have the GNU compiler selected. When compiling with Clang this option is obsolete as profiling with Clang is not supported.-Dpfasst_DISABLE_LIBCXX=OFF
. As libc++ is highly experimental on non-Darwin systems, this is a very exotic option.-DBOOST_ROOT=<PATH>
. The root path should contain the directory lib
or lib64
with the compiled Boost libraries as well as include/boost
with the Boost header files.-DGMOCK_ROOT=<PATH>
to specify the root path to the framework.-Dpfasst_WITH_MPI=ON
. To avoid a warning and potential undefined behaviour, also set -DCMAKE_C_COMPILER
and -DCMAKE_CXX_COMPILER
to the MPI compiler wrappers.-Dpfasst_BUILD_TESTS=OFF
to the CMake command line (not recommended).-Dpfasst_BUILD_EXAMPLES=OFF
to the CMake command line.install
target by passing -Dpfasst_INSTALL_EXAMPLES=ON
to the CMake command line (by default, they will not get installed).Use -DCMAKE_INSTALL_PREFIX=<PREFIX>
to specify the prefix for installing the headers and optional compiled examples.
By default, <PREFIX>
is /usr/local
on Linux systems.
The headers will go into <PREFIX>/include
and compiled binaries in <PREFIX>/bin
.
-Dpfasst_INSTALL_EXAMPLES=ON
.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ -Dpfasst_BUILD_EXAMPLES=OFF ..
/home/<USER>
, call CMake with: cmake -DCMAKE_BUILD_TYPE=Debug -Dpfasst_WITH_GCC_PROF=ON \ -Dpfasst_INSTALL_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=$HOME ..
make
Run the unit tests (if unit tests have been built):
make test
In case any of the tests do not pass, please open an issue on GitHub and provide the full log of your CMake and make invocations.
make install
There are a few tweaks and special care require to get up and running on supercomputers. We have compiled a few working walk-throughs at Usage on Supercomputers .
It is possible to use extra compiler wrappers like Score-P when compiling. See Instrumentation with Score-P and usage of extra compiler wrappers.
A sample Makefile
is included in the advection_diffusion
example. This may be of particular interested to advanced users wishing to incorporate PFASST++ into their existing code bases.