Skip to main content

Powerlog

PyPI version Python versions Documentation License

A command-line tool that measures the CPU and GPU energy consumed by an unmodified program.

Install

pip install powerlog

Python 3.8 or newer, no Python dependencies.

Supported platforms

Power sources are detected at runtime. Install only what matches your hardware; anything unavailable is reported as n/a rather than failing the run.

Domain Read through Needs Gives
NVIDIA GPU NVML nvidia-smi on PATH Per-device power, one column each
AMD GPU ROCm SMI rocm-smi or amd-smi on PATH Per-device power
AMD GPU amdgpu hwmon sysfs Readable /sys/class/drm/card*/device/hwmon Per-device power, no ROCm needed
Intel GPU Level Zero xpu-smi on PATH Per-device power
CPU RAPL powercap Readable /sys/class/powercap Package energy plus a power trace
CPU RAPL via perf perf, kernel.perf_event_paranoid <= 0 Package energy, total only
$ powerlog --list-backends
Detected power sources:
  GPU:
    nvidia       NVIDIA GPU (nvidia-smi / NVML)
  CPU:
    rapl-sysfs   CPU package (RAPL powercap sysfs)

The first source listed for each domain is the one that will be used.

CPU measurement is Linux only. Powerlog measures the node it runs on; it does not aggregate across nodes.

Use

powerlog ./my_program --arg value
================================================================
                    POWERLOG ENERGY SUMMARY
================================================================
Command                 ./my_program --arg value
Total time (s)          12.4180  (wall clock)
CPU                     AMD EPYC 7532 32-Core Processor
GPU                     NVIDIA A100-PCIE-40GB
----------------------------------------------------------------
Domain            Energy (J)   Share (%)   Avg Power (W)
----------------------------------------------------------------
CPU                 962.4013       31.05         77.5005
GPU                2136.7742       68.95        172.0707
----------------------------------------------------------------
TOTAL              3099.1755
EDP (J*s)         38485.5614
  avg power = energy / total time,  EDP = energy x total time
----------------------------------------------------------------
GPU power (W)           min 61.20 / max 249.80
CPU power (W)           min 74.90 / max 79.30
----------------------------------------------------------------
Samples                 124
CPU source              CPU package (RAPL powercap sysfs), 2 package domain(s)
GPU source              NVIDIA GPU (nvidia-smi / NVML), 1 device(s)
================================================================

Powerlog runs unmodified binaries and samples CPU and GPU power in lockstep, so the measurement covers the whole application — I/O, transfers, kernel launches, synchronization — not just the kernels. It writes a summary CSV and a power trace, and exits with the program's own status.

Documentation

powerlog.readthedocs.io

This repository additionally carries two things the wheel does not: example GPU programs in apps/, and datalog-engine-comparison/, a study comparing the energy behaviour of five GPU-accelerated Datalog engines.

Contributing

Bug reports and patches are welcome on the issue tracker. Open an issue first for anything substantial, then send a pull request against main. Release history is in Changelog.md.

License

MIT. See LICENSE.

Citation

@inproceedings{shovon2026heterogeneous,
  title={Heterogeneous Energy Characterization of GPU-Powered Datalog Engines},
  author={Shovon, Ahmedur Rahman and Sun, Yihao and Lan, Zhiling and Perarnau, Swann and Gilray, Thomas and Micinski, Kristopher and Papka, Michael E and Kumar, Sidharth},
  booktitle={2026 IEEE/ACM Workshop on Energy Efficiency with Sustainable Performance: Techniques, Tools, and Best Practices (EESP)},
  year={2026},
  organization={IEEE}
}

Metadata

Release files for powerlog 0.1.2

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

Source distribution (sdist)

Source distribution for powerlog 0.1.2
File Size Uploaded
powerlog-0.1.2.tar.gz 42.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for powerlog 0.1.2
File Interpreter ABI Platform
powerlog-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 65.4 kB

Release files / powerlog-0.1.2.tar.gz

Download URL powerlog-0.1.2.tar.gz
Size 42.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d4ffbf2429b689a2fff66a3e05bc32371ca749afb3039f4344ab9b3736a09a8f
BLAKE2b-256 checksum
How to use checksums
9b615b1af21ce7e4255ad3c56bc75bf485f0c2bdf425623f996afd3a4717f667
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release files / powerlog-0.1.2-py3-none-any.whl

Download URL powerlog-0.1.2-py3-none-any.whl
Size 22.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
185d06dcdef7506f819c8a9ef15c38f67f3d3b459421a39fba1a7e1198985e91
BLAKE2b-256 checksum
How to use checksums
30996b19f2ed34cbf503322c05c6ef8a73ad3e756476e567835d9bc12087b38f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.2

2 release files

0.0.1

2 release files

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