Skip to main content

The CARM Tool

Cache-Aware Roofline Model (CARM) toolkit - benchmark, visualize and profile Intel, AMD, ARM, RISC-V CPUs and NVIDIA, AMD GPUs.

The package provides:

  • automatic benchmarking for supported ISAs
  • arithmetic, memory, and roofline benchmark modes
  • optional web GUI for interactive result visualization

Documentation

You can find the full documentation at https://champ-hub.github.io/carm-roofline.

Installation

Install from PyPI:

# command-line interface only:
pip install carm-roofline
# with GUI extras:
pip install carm-roofline[gui]
# with all extras (GUI + development tools):
pip install carm-roofline[all]

To avoid conflicts with other packages, we recommend installing in a virtual environment:

python -m venv carm-env
source carm-env/bin/activate
pip install carm-roofline[all]

If cloning the repository directly (e.g. for development or access to example applications), use --recurse-submodules to also fetch the examples:

git clone --recurse-submodules https://github.com/champ-hub/carm-roofline

Requirements

  • Python 3.9+
  • C compiler (e.g. gcc, clang)
  • Optional: PAPI headers and binaries for profiling

Command-Line Interface

The installed command is:

carm

Available subcommands:

  • benchmark - run benchmark suites
  • gui - launch the results dashboard
  • profile - profile an application with PAPI or perf

Show help:

carm --help
carm benchmark --help
carm gui --help
carm profile --help

Basic Usage

Run a default benchmark (roofline mode with auto-detected settings):

carm benchmark

Other usage examples:

# Short roofline benchmark (1 second per micro-bench)
carm benchmark --test roofline --test-time 1
# Arithmetic-only
carm benchmark --test arithmetic --instruction add mul fma --data-type f32
# Memory-only
carm benchmark --test memory --mem-target L2 --ld-st-ratio 2:1
# Dry run (generate benchmark code, skip compile/execute):
carm benchmark --dry-run --test arithmetic --test-time 1 --verbose 4

Output and Results

By default, results are written to the user data directory (via platformdirs). On linux, this is typically ~/.local/share/carm/, on Windows, %APPDATA%\carm\, and on MacOS, ~/Library/Application Support/carm/.

Control output directory and format(s):

carm benchmark --output-dir ./carm_results --output-fmt table json csv plot

Use --name to label result files:

carm benchmark --name my_machine

GUI Mode

Launch the dashboard (requires GUI extras):

carm gui

Custom results location and port:

carm gui --results-dir ./carm_results --gui-port 8050

Paraver traces can be analyzed on the roofline too:

carm gui --paraver-trace trace.prv

See the documentation for details.

Publications and Citation

If you use the CARM and the CARM Tool in papers or reports, please cite:

J. Morgado, L. Sousa, A. Ilic. "CARM Tool: Cache-Aware Roofline Model Automatic Benchmarking and Application Analysis", IEEE International Symposium on Workload Characterization (IISWC), Vancouver, British Columbia, Canada, 2024.

A. Ilic, F. Pratas and L. Sousa, "Cache-aware Roofline model: Upgrading the loft," IEEE Computer Architecture Letters, vol. 13, no. 1, pp. 21-24, Jan.-June 2014. doi:10.1109/L-CA.2013.6.

D. Marques, A. Ilic, Z. A. Matveev, and L. Sousa, "Application-driven cache-aware roofline model," Future Generation Computer Systems, vol. 107, pp. 257-273, 2020. doi:10.1016/j.future.2020.01.044.

Metadata

Release files for carm-roofline 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for carm-roofline 1.1.0
File Size Uploaded
carm_roofline-1.1.0.tar.gz 290.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for carm-roofline 1.1.0
File Interpreter ABI Platform
carm_roofline-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 574.3 kB

Release files / carm_roofline-1.1.0.tar.gz

Download URL carm_roofline-1.1.0.tar.gz
Size 290.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ca1766067f935164a3096d9dd0513ca7af3b45f7453ed64f895deac9058a8b40
BLAKE2b-256 checksum
How to use checksums
79ef15293fb0f8493c4a1d64222a0b14065b06c6c6e6829fc4ab54c624913171
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / carm_roofline-1.1.0-py3-none-any.whl

Download URL carm_roofline-1.1.0-py3-none-any.whl
Size 283.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
45d4399e62687f8fccb52447d8b4a370442a9006d6272318f853942bdefd9155
BLAKE2b-256 checksum
How to use checksums
95eccdff7ecda8ad71e4a0ad80bfc1045ffba55ac0564a331de5fdb9f37847df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page