Download mindxtrain/operator/telemetry/energy.py from PYTHAI/mindXtrain: direct link, hf CLI and curl.
- Browser
- Download file 1.15 kB
-
https://huggingface.co/PYTHAI/mindXtrain/resolve/main/mindxtrain/operator/telemetry/energy.py
- Command line
-
hf download hf://PYTHAI/mindXtrain/mindxtrain/operator/telemetry/energy.py
-
curl -L -o energy.py https://huggingface.co/PYTHAI/mindXtrain/resolve/main/mindxtrain/operator/telemetry/energy.py
1.15 kB
| """Energy / power telemetry — wraps `rocm-smi --showpower --json`. | |
| Returns 0.0 W if the binary isn't on PATH (typical CPU-only dev box). | |
| """ | |
| from __future__ import annotations | |
| import json | |
| import shutil | |
| import subprocess | |
| def sample_power_w(gpu_index: int = 0) -> float: | |
| """Return current GPU power draw in watts; 0.0 if `rocm-smi` is unavailable.""" | |
| if shutil.which("rocm-smi") is None: | |
| return 0.0 | |
| try: | |
| out = subprocess.run( | |
| ["rocm-smi", "--showpower", "--json"], | |
| capture_output=True, | |
| text=True, | |
| timeout=5.0, | |
| check=False, | |
| ) | |
| except (subprocess.TimeoutExpired, OSError): | |
| return 0.0 | |
| if out.returncode != 0: | |
| return 0.0 | |
| try: | |
| data = json.loads(out.stdout) | |
| except json.JSONDecodeError: | |
| return 0.0 | |
| card_key = f"card{gpu_index}" | |
| card = data.get(card_key) or {} | |
| for k, v in card.items(): | |
| if "power" in k.lower(): | |
| try: | |
| return float(str(v).replace("W", "").strip()) | |
| except ValueError: | |
| continue | |
| return 0.0 | |
| __all__ = ["sample_power_w"] | |