DiscoPoP Setup - Package

  • Proposed method of installation for users of DiscoPoP
  • Download the .deb package of choice from releases.
    • Packages for different targets and configurations might become available in the future
  • Install via a package manager of choice (example: sudo apt install ./<packagename>.deb)
  • Uninstall via a package manager of choice (example: sudo apt remove discopop)

DiscoPoP Setup - Manual

  • Proposed method of installation for developers of DiscoPoP

    Prerequisites

  • LLVM/clang version 11
  • Python version 3.6 or greater

Setup

git clone git@github.com:discopop-project/discopop.git
cd discopop
mkdir build

Build libraries and install Python modules

cd build
cmake .. <CMAKE_FLAGS>
make
cd ..

where <CMAKE_FLAGS> can consist of any combination of the following flags and commonly used CMAKE_FLAGS:

Environment configuration

  • -DUSE_LLVM_VERSION=<version> – Use a specific Version of LLVM
  • -DLLVM_DIST_PATH=<llvm_base_dir> – Use a specific LLVM installation by specifiying the location

    Profiling configuration

  • -DDP_PTHREAD_COMPATIBILITY_MODE=[0|1] – If your application uses PThreads, please specify this flag to serialize the calls to the DiscoPoP runtime functions. Note, however, that this can negatively influence the runtime of the profiling. Default: 0.
  • -DDP_NUM_WORKERS=<int> – Specify the number of worker threads available for the dependency analysis during profiling. Default: 3 worker threads. 0 can be used to disable the creation of additional threads for the analysis.
  • -DDP_HYBRID_PROFILING=[0|1] – Enbale hybrid profiling. Default: 1.
  • -DDP_CALLTREE_PROFILING=[0|1] – Enable creation of a call tree during profiling to create extended dependency metadata for improved result quality. Negatively impacts profiling performance. Default: 0.
  • -DDP_CALLTREE_PROFILING_METADATA_CUTOFF=<int> – Set a cutoff amount of vitis per basic block for dependency metadata calculation. Set 0 to disable cutoff. Default: 50.
  • -DDP_CALLTREE_PROFILING_METADATA_CUTOFF_IGNORE_PROBABILITY=[0-1000] – Enable or disable probablistic cutoff. Ignores cutoff with a configurable probability. Set 0 to disable probabilistic cutoff. Set 25 for a probability of 2.5% etc. Default: 1.
  • -DDP_MEMORY_REGION_DEALIASING=[0|1]: Enable or disable the generation of dependency de-aliasing information. Reduces potential false positive parallelization suggestions, but increases the profiling overhead. Default: 0.
  • -DDP_BRANCH_TRACKING=[0|1]: Toggles the creation of instrumentation calls for tracking taken branches. Required by the graph pruning step of the DiscoPoP optimizer. Default: 0.

Development and debugging

  • -DDP_RTLIB_VERBOSE=[0|1] – Enable verbose output during profiling.
  • -DDP_INTERNAL_TIMER=[0|1]– Enable timing of runtime library functions.

Testing the installation

To test the installation, it is possible to execute the provided set of unit tests.

cd <dp_source_dir>
venv/bin/python -m unittest -v

Copyright © 2022, Technical University of Darmstadt.