carm gui
Launch the interactive CARM GUI, a Dash + Plotly dashboard for exploring roofline plots and application performance data.
Run carm gui --help for a full argument listing.
Basic Usage
carm gui [options]
Once launched, open the URL printed in the terminal (default: http://0.0.0.0:8050) in your browser.
What You’ll See
The GUI displays the architecture’s roofline — peak performance bounds for compute and memory at each cache level — with application data points plotted on it (if profiling data was loaded). Each point represents a code region positioned by its performance (GFLOP/s) and arithmetic intensity (FLOP/byte).
- Memory-bound points fall below the roofline intersection — they benefit from better data locality and reduced memory traffic.
- Compute-bound points sit on or near the compute roof — they benefit from increasing computational intensity.
- The distance to the roofline shows how much performance headroom exists.
- Clicking an application point emphasizes the roof ceilings according to the point’s cache-residency fractions.
- After selecting an application point, hover a small circle on its guide to see that roof’s performance and ratio to the point; the tooltip ends with
@<roof>(for example,@DRAM,@L1, or@add).
Arguments by Category
Where to find data (--results-dir)
The GUI scans --results-dir (default: platform user data dir for carm) for benchmark roofline data and application profiling data. Point it elsewhere if your results live in a non-standard location.
Server configuration (--gui-host, --gui-port, --gui-debug)
The Dash server binds to 0.0.0.0:8050 by default, making it accessible from other machines in the network. Set --gui-host to a specific address (e.g. 127.0.0.1) if you want to restrict access.
Verbosity (--verbose)
Level of terminal output: --verbose [0-4] (0 = quiet, 4 = debug). The default is 3 (configuration details); a bare -v means level 4. Useful when diagnosing why the GUI can’t find or parse result files.
Loading Data
The GUI automatically discovers:
benchmarks.jsonl: benchmark records generated bycarm benchmark, defining the architecture’s roofsapplications.jsonl: profiling data generated bycarm profile
The GUI loads existing data at startup. Successful Benchmark and Profile runs refresh data automatically.
You can also drag-and-drop a results folder onto the GUI page to import its data. To import a single machine’s results, drop a folder containing benchmarks.jsonl and applications.jsonl. To import multiple machines, drop a folder containing one or more machine subfolders.
Paraver mode
Passing --paraver-trace (optionally with --paraver-window-csv) switches the GUI into Paraver mode: the trace’s bursts are plotted on the roofline, a time-window slider and arithmetic-intensity/duration filters control the displayed view, and a Paraver panel exports the metrics back as Paraver-importable windows. See the Paraver section for the full list of controls and exports.
GUI Features
Benchmark
Use the Benchmark navbar button to configure and run carm benchmark on the GUI server host. A guide appears in the left sidebar beside the benchmark controls. Basic settings cover test type, ISA, data types, thread counts, target run time, and result name. Hover over a field label to read more detail.
Open Advanced settings to configure memory, arithmetic, hardware, compiler, simulator, and output options. Click Start benchmark to launch the CLI process. The page shows the current pipeline stage, completed measurements, elapsed time, process output, and final status. Only one benchmark can run at a time for each GUI server.
The GUI refreshes its roofline data after a successful benchmark run. Select CARM View to see the new roofline data.
Profile
Use the Profile navbar button to configure and run carm profile on the GUI server host. Select PAPI or perf as the top-level backend. Aggregation, ISA, and data type can be configured in the main panel. Open Advanced settings for the remaining options. These include machine and application names, output directory, optional metrics, counter merging, and artifact retention. Backend-specific cache or sampling controls also appear there.
Enter the executable and arguments in the command field. Quoted text groups into one argument. The application runs directly on the GUI server, without a shell. Pipes, redirection, and shell expansion are not applied. The page displays the safely quoted command, process output, elapsed time, and final status. Profiling requires the selected backend’s tools and access to hardware counters.
Leave the output directory blank to use the configured results directory shown in its placeholder.
Settings
The Settings panel (navbar button) groups plotting and appearance controls:
- Plotting settings: Normalize performance by threads
- Plot style: Show roof labels, 2^N axis tick labels, Roof fill (between-roof fills, no fill, or bound regions), Point size multiplier, Line width, and font sizes for axis labels, axis ticks, tooltips, and the legend.