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
  1. You compile your program with the compiler wrappers and run it. The instrumented program writes the profiling data to .discopop/profiler.
  2. 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.
  3. The Explorer detects parallel patterns and writes them to .discopop/explorer/patterns.json. It also creates the patches in .discopop/patch_generator/.
  4. Optionally, patch repair lets an LLM agent fix patches that do not compile.
  5. The empirical autotuner measures which suggestions pay off and writes the result to .discopop/auto_tuner/results.json.
  6. 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

Table of contents


Copyright © 2026, Technical University of Darmstadt.

This site uses Just the Docs, a documentation theme for Jekyll.