Manual
The manual is the detailed reference of DiscoPoP. It is for users who want to go beyond the graphical workflow: install DiscoPoP in a non-standard way, run single tools on the command line, interpret the output files, or contribute to DiscoPoP.
Components
DiscoPoP consists of seven Python packages, which pip install discopop installs together (the package discopop depends on all others).
| Folder | PyPI name | Console scripts | Purpose |
|---|---|---|---|
profiler | discopop-profiler | discopop_cc, discopop_cxx | LLVM instrumentation pass and runtime library; compiler wrappers that instrument C and C++ code |
explorer | discopop-explorer | discopop_explorer | Pattern detection on the profiling data |
library | discopop-library | discopop_gui, discopop_project_manager, discopop (alias of discopop_project_manager), discopop_patch_generator, discopop_patch_applicator, discopop_patch_repair, discopop_auto_tuner, discopop_optimizer, discopop_config_provider, discopop_sanity_checker, discopop_preprocessor, discopop_dependency_comparator, discopop_parallel_region_merger | The project manager with the GUI, the patch tools, the autotuner and the helper tools |
hotspot_detection | discopop-hotspot-detection | discopop_hotspot_analyzer, discopop_hotspot_cc, discopop_hotspot_cxx | Instrumentation that measures the hotness of code regions, and its analysis |
mcp_server | discopop-mcp-server (module name discopop_mcp_server) | discopop_mcp_server | MCP server that lets AI assistants run DiscoPoP |
GUI | discopop-gui | none | GUI components (graph visualizers); see below |
. (root) | discopop | none | Meta package that depends on all of the above |
The discopop_gui command comes from discopop-library: the GUI is part of the project manager (library/discopop_library/ProjectManager/gui). The folder GUI/ holds GUI components and declares no console script. The explorer depends on discopop-library, the library on discopop-hotspot-detection.
Workflow
flowchart TD
CC["discopop_cc / discopop_cxx<br/>instrument and build"] --> RUN["run the program"]
RUN --> PROF[".discopop/profiler"]
HS["hotspot detection<br/>discopop_hotspot_cc / _cxx"] --> HOT["hotspot results"]
PROF --> EXP["discopop_explorer"]
HOT --> EXP
EXP --> PAT["patterns.json and patches"]
PAT --> REP["patch repair"]
REP --> TUN["discopop_auto_tuner"]
PAT --> TUN
HOT --> TUN
TUN --> APP["apply the best combination<br/>discopop_patch_applicator"]
PM["project manager and GUI"] -.drives.-> CC
PM -.drives.-> EXP
PM -.drives.-> TUN
MCP["MCP server"] -.drives.-> PM
The project manager and the GUI run these steps for you; the MCP server lets an AI assistant do the same.
Guide to the sections
| Section | Content |
|---|---|
| Setup | Installation, build options, environment variables, VS Code extension |
| Examples | Command line walk-through, project manager on the command line, GUI walk-through, VS Code extension walk-through |
| Tools | Every tool with its options, from compiler wrappers to the explorer, the patch tools, the autotuner and the MCP server |
| Data | The files DiscoPoP writes: profiling output, explorer output, parallel patterns |
| How to contribute | Development setup, code style, tests and the pull request process |