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
|