Skip to content

energy_amd

energy_amd

AMD energy monitor — hardware counters via amdsmi (ROCm 6.1+).

Classes

AmdEnergyMonitor

AmdEnergyMonitor(poll_interval_ms: int = 50)

Bases: EnergyMonitor

AMD GPU energy monitor using amdsmi hardware counters.

Uses amdsmi_get_energy_count() to read per-device energy accumulators. Energy = accumulator_delta * counter_resolution (microjoules), then / 1e6.

Source code in src/openjarvis/telemetry/energy_amd.py
def __init__(self, poll_interval_ms: int = 50) -> None:
    self._poll_interval_ms = poll_interval_ms
    self._handles: List = []
    self._device_count = 0
    self._device_name = ""
    self._initialized = False

    if _AMDSMI_AVAILABLE:
        try:
            amdsmi.amdsmi_init()
            self._handles = amdsmi.amdsmi_get_processor_handles()
            self._device_count = len(self._handles)
            if self._handles:
                info = amdsmi.amdsmi_get_gpu_asic_info(self._handles[0])
                self._device_name = info.get("market_name", "AMD GPU")
            self._initialized = True
        except Exception as exc:
            logger.debug("AMD SMI initialization failed: %s", exc)
            self._initialized = False