Download analysis/AutoGPU.py from cagasoluh/MYRA: direct link, hf CLI and curl.
- Browser
- Download file 1.11 kB
-
https://huggingface.co/cagasoluh/MYRA/resolve/main/analysis/AutoGPU.py
- Command line
-
hf download hf://cagasoluh/MYRA/analysis/AutoGPU.py
-
curl -L -o AutoGPU.py https://huggingface.co/cagasoluh/MYRA/resolve/main/analysis/AutoGPU.py
1.11 kB
| from pynvml import * | |
| import time | |
| class GPUEnergyTracker: | |
| """ | |
| GPU energy monitor using NVIDIA NVML. | |
| Measures instantaneous power and integrates | |
| it over time to estimate total GPU energy | |
| consumption. | |
| Units | |
| Power : Watts | |
| Energy : Joules | |
| """ | |
| def __init__(self, gpu_index=0): | |
| nvmlInit() | |
| self.handle = nvmlDeviceGetHandleByIndex(gpu_index) | |
| self.energy_joules = 0.0 | |
| self.last_time = time.time() | |
| self.last_power = self._read_power() | |
| def _read_power(self): | |
| power_mw = nvmlDeviceGetPowerUsage(self.handle) | |
| return power_mw / 1000.0 | |
| def step(self): | |
| current_time = time.time() | |
| power = self._read_power() | |
| dt = current_time - self.last_time | |
| # trapezoidal integration | |
| self.energy_joules += 0.5 * (self.last_power + power) * dt | |
| self.last_power = power | |
| self.last_time = current_time | |
| def total_energy(self): | |
| return self.energy_joules | |
| def current_power(self): | |
| return self.last_power |