#include "memory.h" #include "gpu.h" struct gpuInfo gpu_info; amdgpu_files amdgpu {}; void getNvidiaGpuInfo(){ #ifdef HAVE_NVML if (nvmlSuccess){ getNVMLInfo(); gpu_info.load = nvidiaUtilization.gpu; gpu_info.temp = nvidiaTemp; gpu_info.memoryUsed = nvidiaMemory.used / (1024.f * 1024.f * 1024.f); gpu_info.CoreClock = nvidiaCoreClock; gpu_info.MemClock = nvidiaMemClock; gpu_info.powerUsage = nvidiaPowerUsage / 1000; return; } #endif #ifdef HAVE_XNVCTRL if (nvctrlSuccess) { getNvctrlInfo(); gpu_info.load = nvctrl_info.load; gpu_info.temp = nvctrl_info.temp; gpu_info.memoryUsed = nvctrl_info.memoryUsed / (1024.f); gpu_info.CoreClock = nvctrl_info.CoreClock; gpu_info.MemClock = nvctrl_info.MemClock; gpu_info.powerUsage = 0; return; } #endif #ifdef _WIN32 nvapi_util(); #endif } void getAmdGpuInfo(){ int64_t value = 0; if (amdgpu.busy) { rewind(amdgpu.busy); fflush(amdgpu.busy); if (fscanf(amdgpu.busy, "%d", &gpu_info.load) != 1) gpu_info.load = 0; gpu_info.load = gpu_info.load; } if (amdgpu.temp) { rewind(amdgpu.temp); fflush(amdgpu.temp); if (fscanf(amdgpu.temp, "%d", &gpu_info.temp) != 1) gpu_info.temp = 0; gpu_info.temp /= 1000; } if (amdgpu.vram_total) { rewind(amdgpu.vram_total); fflush(amdgpu.vram_total); if (fscanf(amdgpu.vram_total, "%" PRId64, &value) != 1) value = 0; gpu_info.memoryTotal = float(value) / (1024 * 1024 * 1024); } if (amdgpu.vram_used) { rewind(amdgpu.vram_used); fflush(amdgpu.vram_used); if (fscanf(amdgpu.vram_used, "%" PRId64, &value) != 1) value = 0; gpu_info.memoryUsed = float(value) / (1024 * 1024 * 1024); } if (amdgpu.core_clock) { rewind(amdgpu.core_clock); fflush(amdgpu.core_clock); if (fscanf(amdgpu.core_clock, "%" PRId64, &value) != 1) value = 0; gpu_info.CoreClock = value / 1000000; } if (amdgpu.memory_clock) { rewind(amdgpu.memory_clock); fflush(amdgpu.memory_clock); if (fscanf(amdgpu.memory_clock, "%" PRId64, &value) != 1) value = 0; gpu_info.MemClock = value / 1000000; } if (amdgpu.power_usage) { rewind(amdgpu.power_usage); fflush(amdgpu.power_usage); if (fscanf(amdgpu.power_usage, "%" PRId64, &value) != 1) value = 0; gpu_info.powerUsage = value / 1000000; } }