diff --git a/COPYING b/COPYING index 2616659324dfb23e8575212e2c2d056d82cda5f5..a6667742a94d5fd8a5a764b9e316e3109da2334c 100644 --- a/COPYING +++ b/COPYING @@ -1,4 +1,4 @@ -Copyright by Dominic Kempf, 2015. +Copyright by Dominic Kempf, René Heß 2015-2017. The following files are copyrighted by Agner Fog, 2012-2015: diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..df3598c4376762f9933c89acc0a6b1efb27a5bcb --- /dev/null +++ b/README.md @@ -0,0 +1,113 @@ +# dune-perftool + +dune-perftool is an active research project with the goal of +generating high-performance integration kernels for dune-pdelab. + +**Note**: Due to the research character of the code things will change +a lot and there is no guarantee for interface stability ;). + + +## Dependencies + +dune-perftool depends on the following software packages: + +* You need a working [dune-pdelab][1]. + +* We use [dune-testtools][2] for ini file variablility. + +* The [Integer Set Library][3] needs to be installed. Using the + package manager is probably the easiest way. + + +## Cloning and Patching + +We use several submodules so you should clone with the `--recursive` option: + +``` +git clone --recursive ssh://git@parcomp-git.iwr.uni-heidelberg.de:20022/dominic/dune-perftool.git +``` + +or + +``` +git clone --recursive https://parcomp-git.iwr.uni-heidelberg.de/dominic/dune-perftool.git +``` + +If you have a feature branch `feature/my-branch` where you change the +submodules of dune-perftool and you want to test your branch it makes +sense to checkout this branch directly in a fresh clone: + +``` +git clone --recursive -b feature/my-branch ssh://git@parcomp-git.iwr.uni-heidelberg.de:20022/dominic/dune-perftool.git +``` + +Some tests compare the vtkoutput to a reference vtk output. If you +want to have all tests passing you need to install [git-lfs][0] before +cloning. Cloning via ssh and using a ssh-agent are recommended in this +case: + +``` +ssh-add +git clone --recursive ssh://git@parcomp-git.iwr.uni-heidelberg.de:20022/dominic/dune-perftool.git +``` + +After cloning dune-perftool you need apply some patches: + +* Go to the base folder of dune-perftool and run + patches/apply_patches.sh. This applies patches to the submodules. + + ``` + cd dune-perftool/ + ./patches/apply_patches.sh + ``` + +* Besides that you need to apply the patch + dune-perftool/patches/dune-geometry/quadrule_operator_counting_compatible.patch + in dune-geometry. + + +## Building dune-perftool + +Building dune-perftool is done through the Dune build-system using +cmake. See the [Dune homepage][4] for further details. You need to set the options + +``` +-DDUNE_PYTHON_ALLOW_GET_PIP=1 +-DDUNE_PYTHON_VIRTUALENV_SETUP=1 +``` + +in your options file. Your options file could for example look like +the following: + +``` +CMAKE_FLAGS=" + -DDUNE_PYTHON_FORCE_PYTHON3=1 + -DDUNE_PYTHON_ALLOW_GET_PIP=1 + -DDUNE_PYTHON_VIRTUALENV_SETUP=1 + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_FLAGS='-march=native -ffast-math' + -DDUNE_SYMLINK_TO_SOURCE_TREE=1 +" + +MAKE_FLAGS="-j2" +``` + + +## Building and Running the Tests + +You can build and run the tests via: + +``` +cd path/to/dune-perftool/build/directory +make build_tests +ctest +``` + + +## Links + +[0]: https://git-lfs.github.com/ +[1]: https://gitlab.dune-project.org/pdelab/dune-pdelab +[2]: https://gitlab.dune-project.org/quality/dune-testtools +[3]: http://isl.gforge.inria.fr/ +[4]: https://www.dune-project.org/doc/installation/ diff --git a/patches/apply_patches.sh b/patches/apply_patches.sh new file mode 100755 index 0000000000000000000000000000000000000000..9bb1d2e2b98930176835ff7bb7fbba3dfb089d11 --- /dev/null +++ b/patches/apply_patches.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +pushd python/loopy +git apply ../../patches/loopy/Current.patch +git apply ../../patches/loopy/0001-Allow-using-globalargs-as-base-storage.patch +popd + +pushd dune/perftool/vectorclass +git apply ../../../patches/vectorclass/0001-Better-implementation-of-horizontal_add.patch +popd