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 suitesgui- launch the results dashboardprofile- 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.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| carm_roofline-1.3.0.tar.gz | 329.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| carm_roofline-1.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 645.9 kB
Release files / carm_roofline-1.3.0.tar.gz
| Download URL | carm_roofline-1.3.0.tar.gz |
|---|---|
| Size | 329.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e6296ca619b2df3c1b90766611b78e72182259a2c458611fb7a89cf9472fac92
|
|
BLAKE2b-256 checksum How to use checksums |
3a8ac16d22386181de4fb73608837dba30c6c6145337213250898c3dbb550f65
|
| 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 Sep 2, 2026.
Transparency logRelease files / carm_roofline-1.3.0-py3-none-any.whl
| Download URL | carm_roofline-1.3.0-py3-none-any.whl |
|---|---|
| Size | 316.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0a81d194aea7b3cecd29ccfacd17173c17c151c07a0042a18847521b402840f7
|
|
BLAKE2b-256 checksum How to use checksums |
92a84fa0a8a300f1fb0a32d6efae4ecabce52a54ea2afc7d2ab888d9ece0c37d
|
| 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 Sep 2, 2026.
Transparency log