Skip to main content

DiscoPoP is a tool that helps software developers parallelize their programs with threads. It discovers potential parallelism in a sequential program and makes recommendations on how to exploit it.

Project description

DiscoPoP - Discovery of Potential Parallelism

DiscoPoP is an open-source tool that helps software developers parallelize their programs with threads. It is a joint project of the Laboratory for Parallel Programming @ TU Darmstadt and the Software Analytics and Pervasive Parallelism Lab at Iowa State University.

In a nutshell, DiscoPoP performs the following steps:

  • detect parts of the code (computational units or CUs) with little to no internal parallelization potential,
  • find data dependences among them,
  • identify parallel patterns that can be used to parallelize a code region,
  • and finally, suggest corresponding OpenMP parallelization constructs and clauses to programmers.

DiscoPoP is built on top of LLVM. Therefore, DiscoPoP can perform the above-mentioned steps on any source code that can be transferred into the LLVM IR.

A more comprehensive overview of DiscoPoP can be found on our project website.

Getting started

Follow the steps below to install DiscoPoP. To setup the Visual Studio Code Extension (recommended for general use of the framework), please follow these steps.

For a brief introduction to the VSCode Extension, please follow the walk-through example. For a brief introduction to the command line tools, please refer to the tools overview and follow the command-line walk-through example.

For detailed information on the gathered and stored data as well as the tools themselves, please refer to data and the pages of the individual tools in the tools overview.

Installation

Prerequisites

Via APT package manager

sudo apt install python3 python3-pip python3-venv python3-tk build-essential make cmake git llvm-19-dev clang-19 libomp-19-dev libboost-all-dev
# Replace 19 with 20, 21, or 22 if you prefer a newer LLVM release.

Latest release from PyPi

pip install discopop

Local installation

git clone https://github.com/discopop-project/discopop.git
cd discopop
# installs profiler and python packages
make

Developer

If you are interested in installing DiscoPoP as a developer, please refer to the DiscoPoP setup wiki page.

Example

The following example instruments and builds the provided example code, analyzes the results, and prints the identified parallelization suggestions to the console. In case any issues arise during the process please do not hesitate to contact us via GitHub messages, or get in contact by mail to discopop-support@lists.parallel.informatik.tu-darmstadt.de.

Prerequisites

  • Installed required system packages
  • Installed profiler and python packages
  • Installed the Visual Studio Code Extension for visualization of the results.

Example

Instrument and execute the code.

# create a copy of the example code and enter the folder
cd discopop_example

# instrument and build the example code
# use discopop_cxx for .cpp, and discopop_cc for .c files
discopop_cxx example.cpp -o example

# execute instrumented code
./example

Execute the pattern analysis on the gathered data.

# identify parallel patterns
cd .discopop
discopop_explorer

Navigate to the DiscoPoP extension tab in Visual Studio Code to browse the created parallelization suggestions. Analyzing new projects, like the example code will lead to the automatic creation of a project configuration in the Configurations view. By default, the current timestamp will be used as the configuration label (in the following screenshots, 03_12_2025-16_27_15). Click the clock-like Load Results button next to the configuration name to load the identified parallelization suggestions. Suggestions can be browsed, previewed, and applied via the Suggestions view, or the added annotations (Potential Parallelism(count)) in the analyzed source code.

Screenshot of the DiscoPoP VSCode Extension

The following screenshot shows an exemplary suggestion preview.

Screenshot of the suggestion preview in the DiscoPoP VSCode Extension

License

© DiscoPoP is available under the terms of the BSD-3-Clause license, as specified in the LICENSE file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

discopop-5.0.3a1.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

discopop-5.0.3a1-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file discopop-5.0.3a1.tar.gz.

File metadata

  • Download URL: discopop-5.0.3a1.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for discopop-5.0.3a1.tar.gz
Algorithm Hash digest
SHA256 055e2e796584383c1e551493521a2538e035b479f268a93aa82a06fc9eebda96
MD5 f5832b7c7ab1845fcb237bea3fdd46ef
BLAKE2b-256 6d1267a99f263df35b535605e210a6ed4ca5bf921aac1e21c841fbc800c31929

See more details on using hashes here.

Provenance

The following attestation bundles were made for discopop-5.0.3a1.tar.gz:

Publisher: publish_prerelease.yml on discopop-project/discopop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file discopop-5.0.3a1-py3-none-any.whl.

File metadata

  • Download URL: discopop-5.0.3a1-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for discopop-5.0.3a1-py3-none-any.whl
Algorithm Hash digest
SHA256 1f8fa69fc78cda34381ff33df4033b522d30bba21d7c88d7b585fc6f7a30bcd2
MD5 4f6eba4a4ecd7d41b90e1b7f21d7e22e
BLAKE2b-256 22105f711aac1721a80a25de2ee5f77a15ba884dc0d4952448e8e4f1eef29b6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for discopop-5.0.3a1-py3-none-any.whl:

Publisher: publish_prerelease.yml on discopop-project/discopop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page