Check nvmlInit() once

pull/20/head
FlightlessMango 4 years ago committed by jackun
parent 369b18eb07
commit a3fb14c0d6
No known key found for this signature in database
GPG Key ID: 119DB3F1D05A9ED3

@ -190,28 +190,17 @@ void *cpuInfo(void *){
return NULL; return NULL;
} }
// void *queryNvidiaSmi(void *){
// vector<string> smiArray;
// string nvidiaSmi = exec("nvidia-smi --query-gpu=utilization.gpu,temperature.gpu --format=csv,noheader | tr -d ' ' | head -n1 | tr -d '%'");
// istringstream f(nvidiaSmi);
// string s;
// while (getline(f, s, ',')) {
// smiArray.push_back(s);
// }
// gpuLoadDisplay = smiArray[0];
// gpuLoad = stoi(smiArray[0]);
// gpuTemp = stoi(smiArray[1]);
// pthread_detach(nvidiaSmiThread);
// return NULL;
// }
void *getNvidiaGpuInfo(void *){ void *getNvidiaGpuInfo(void *){
checkNvidia(); if (!nvmlSuccess)
gpuLoad = nvidiaUtilization.gpu; checkNvidia();
gpuLoadDisplay = gpuLoad;
gpuTemp = nvidiaTemp; if (nvmlSuccess){
getNvidiaInfo();
gpuLoad = nvidiaUtilization.gpu;
gpuLoadDisplay = gpuLoad;
gpuTemp = nvidiaTemp;
}
pthread_detach(nvidiaSmiThread); pthread_detach(nvidiaSmiThread);
return NULL; return NULL;
} }

@ -1,8 +1,13 @@
#include <stdbool.h>
#include <stdio.h>
#include <nvml.h> #include <nvml.h>
nvmlReturn_t result; nvmlReturn_t result;
unsigned int nvidiaTemp, processSamplesCount, lastSeenTimeStamp, *vgpuInstanceSamplesCount; unsigned int nvidiaTemp, processSamplesCount, lastSeenTimeStamp, *vgpuInstanceSamplesCount;
nvmlValueType_t *sampleValType; nvmlValueType_t *sampleValType;
nvmlDevice_t nvidiaDevice; nvmlDevice_t nvidiaDevice;
struct nvmlUtilization_st nvidiaUtilization; struct nvmlUtilization_st nvidiaUtilization;
bool nvmlSuccess;
void checkNvidia(void); void checkNvidia(void);
void getNvidiaInfo(void);

@ -4,10 +4,14 @@
void checkNvidia(){ void checkNvidia(){
result = nvmlInit(); result = nvmlInit();
if (NVML_SUCCESS != result) { if (NVML_SUCCESS != result) {
printf("MANGOHUD: Nvidia module not loaded\n");
} else { } else {
nvmlDeviceGetHandleByIndex(0, &nvidiaDevice); nvmlSuccess = true;
nvmlDeviceGetUtilizationRates(nvidiaDevice, &nvidiaUtilization);
nvmlDeviceGetTemperature(nvidiaDevice, NVML_TEMPERATURE_GPU, &nvidiaTemp);
} }
} }
void getNvidiaInfo(){
nvmlDeviceGetHandleByIndex(0, &nvidiaDevice);
nvmlDeviceGetUtilizationRates(nvidiaDevice, &nvidiaUtilization);
nvmlDeviceGetTemperature(nvidiaDevice, NVML_TEMPERATURE_GPU, &nvidiaTemp);
}
Loading…
Cancel
Save