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.
The following screenshot shows an exemplary suggestion preview.
License
© DiscoPoP is available under the terms of the BSD-3-Clause license, as specified in the LICENSE file.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
055e2e796584383c1e551493521a2538e035b479f268a93aa82a06fc9eebda96
|
|
| MD5 |
f5832b7c7ab1845fcb237bea3fdd46ef
|
|
| BLAKE2b-256 |
6d1267a99f263df35b535605e210a6ed4ca5bf921aac1e21c841fbc800c31929
|
Provenance
The following attestation bundles were made for discopop-5.0.3a1.tar.gz:
Publisher:
publish_prerelease.yml on discopop-project/discopop
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
discopop-5.0.3a1.tar.gz -
Subject digest:
055e2e796584383c1e551493521a2538e035b479f268a93aa82a06fc9eebda96 - Sigstore transparency entry: 1461614545
- Sigstore integration time:
-
Permalink:
discopop-project/discopop@79eb8d38048da09d4177a7a0a38ad461b1615bfa -
Branch / Tag:
refs/tags/v_5.0.3a1 - Owner: https://github.com/discopop-project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish_prerelease.yml@79eb8d38048da09d4177a7a0a38ad461b1615bfa -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f8fa69fc78cda34381ff33df4033b522d30bba21d7c88d7b585fc6f7a30bcd2
|
|
| MD5 |
4f6eba4a4ecd7d41b90e1b7f21d7e22e
|
|
| BLAKE2b-256 |
22105f711aac1721a80a25de2ee5f77a15ba884dc0d4952448e8e4f1eef29b6b
|
Provenance
The following attestation bundles were made for discopop-5.0.3a1-py3-none-any.whl:
Publisher:
publish_prerelease.yml on discopop-project/discopop
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
discopop-5.0.3a1-py3-none-any.whl -
Subject digest:
1f8fa69fc78cda34381ff33df4033b522d30bba21d7c88d7b585fc6f7a30bcd2 - Sigstore transparency entry: 1461614607
- Sigstore integration time:
-
Permalink:
discopop-project/discopop@79eb8d38048da09d4177a7a0a38ad461b1615bfa -
Branch / Tag:
refs/tags/v_5.0.3a1 - Owner: https://github.com/discopop-project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish_prerelease.yml@79eb8d38048da09d4177a7a0a38ad461b1615bfa -
Trigger Event:
push
-
Statement type: