Tools
DiscoPoP consists of several tools. Each tool reads the files of the previous one from the .discopop directory of your project and writes its own results back into it. The tools work on this directory and are run from inside it (cd .discopop), unless they take a path option such as --path or --dot-dp-path.
Overview
flowchart TD
PM["Project manager / GUI<br/>(configurations, execution, reports)"]
MCP["MCP server<br/>(for LLM agents)"]
CC["discopop_cc / discopop_cxx"]
PROG["Instrumented program"]
PROF[".discopop/profiler"]
EXP["discopop_explorer"]
PAT["explorer/patterns.json"]
PG["patch_generator/"]
REP["discopop_patch_repair"]
AT["discopop_auto_tuner"]
APPLY["discopop_patch_applicator"]
HCC["discopop_hotspot_cc / discopop_hotspot_cxx"]
HPROG["Hotspot-instrumented program"]
HAN["discopop_hotspot_analyzer"]
HOT["hotspot_detection/Hotspots.json"]
CC --> PROG -->|run| PROF --> EXP --> PAT
EXP --> PG
PG --> REP --> AT
PG --> AT
AT -->|"auto_tuner/results.json"| APPLY
HCC --> HPROG -->|run| HAN --> HOT
HOT -->|"--hotspot-types"| EXP
HOT -->|"-A 6"| AT
PM -.drives.-> CC
PM -.drives.-> HCC
PM -.drives.-> EXP
PM -.drives.-> REP
PM -.drives.-> AT
MCP -.drives.-> CC
MCP -.drives.-> EXP
MCP -.drives.-> AT
MCP -.drives.-> APPLY
- You compile your program with the compiler wrappers and run it. The instrumented program writes the profiling data to
.discopop/profiler. - Optionally, you build the program with the hotspot detection wrappers, run it with several inputs and analyze the runs. This creates
.discopop/hotspot_detection/Hotspots.json. - The Explorer detects parallel patterns and writes them to
.discopop/explorer/patterns.json. It also creates the patches in.discopop/patch_generator/. - Optionally, patch repair lets an LLM agent fix patches that do not compile.
- The empirical autotuner measures which suggestions pay off and writes the result to
.discopop/auto_tuner/results.json. - The patch applicator applies the selected patches to your source code.
The project manager and the GUI store how your project is built and executed (execution configurations) and run these steps for you. The MCP server offers the same pipeline to LLM agents. All three use the same configurations below .discopop/project.
Tools for users
| Command | Purpose | Page |
|---|---|---|
discopop_gui | Graphical user interface for the whole workflow | Graphical user interface |
discopop_project_manager (discopop) | Configurations, execution, measurements and reports on the command line | Project manager |
discopop_cc, discopop_cxx | Compiler wrappers: instrument and profile your program | Compiler wrappers |
discopop_hotspot_cc, discopop_hotspot_cxx, discopop_hotspot_analyzer | Find the code regions that dominate the runtime | Hotspot detection |
discopop_explorer | Detect parallel patterns in the profiling data | Explorer |
discopop_patch_generator | Convert patterns into patch files | Patch generator |
discopop_patch_applicator | Apply, roll back and list patches | Patch applicator |
discopop_patch_repair | Repair patches that do not compile, using an LLM agent | Patch repair |
discopop_auto_tuner | Measure and select the best combination of suggestions | Empirical autotuner |
discopop_mcp_server | MCP server for LLM agents | MCP server |
discopop_optimizer | Select suggestions using a performance model (experimental) | Optimizer |
Helper tools
Helper tools are used by other tools or serve special purposes.
| Command | Purpose | Page |
|---|---|---|
discopop_config_provider | Report the paths and the build configuration of the installation | Helper tools |
discopop_sanity_checker | Check suggestions with ThreadSanitizer | Helper tools |
discopop_preprocessor | Preprocess profiling data | Helper tools |
discopop_dependency_comparator | Compare two dependency files | Helper tools |
discopop_parallel_region_merger | Merge neighboring parallel regions | Helper tools |