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;
}
// 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 *){
checkNvidia();
gpuLoad = nvidiaUtilization.gpu;
gpuLoadDisplay = gpuLoad;
gpuTemp = nvidiaTemp;
if (!nvmlSuccess)
checkNvidia();
if (nvmlSuccess){
getNvidiaInfo();
gpuLoad = nvidiaUtilization.gpu;
gpuLoadDisplay = gpuLoad;
gpuTemp = nvidiaTemp;
}
pthread_detach(nvidiaSmiThread);
return NULL;
}

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

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