Use nvml to display gpu values in hud

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

@ -165,8 +165,6 @@ void PrintStats(const std::vector<CPUData> & entries1, const std::vector<CPUData
}
void *cpuInfo(void *){
checkNvidia();
FILE *cpuInfo = fopen("/proc/cpuinfo", "r");
char line[256];
int i = 0;
@ -192,18 +190,28 @@ 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]);
// 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;
pthread_detach(nvidiaSmiThread);
return NULL;
}

@ -1,4 +1,3 @@
#include <stdio.h>
#include "nvidia_info.h"
#include <nvml.h>
@ -10,7 +9,5 @@ void checkNvidia(){
nvmlDeviceGetHandleByIndex(0, &nvidiaDevice);
nvmlDeviceGetUtilizationRates(nvidiaDevice, &nvidiaUtilization);
nvmlDeviceGetTemperature(nvidiaDevice, NVML_TEMPERATURE_GPU, &nvidiaTemp);
printf("temp: %i\n", nvidiaTemp);
printf("util: %i\n", nvidiaUtilization.gpu);
}
}

@ -914,7 +914,7 @@ static void snapshot_swapchain_frame(struct swapchain_data *data)
// get gpu usage
if (deviceName.find("GeForce") != std::string::npos)
pthread_create(&nvidiaSmiThread, NULL, &queryNvidiaSmi, NULL);
pthread_create(&nvidiaSmiThread, NULL, &getNvidiaGpuInfo, NULL);
if (deviceName.find("Radeon") != std::string::npos || deviceName.find("AMD") != std::string::npos)
pthread_create(&gpuThread, NULL, &getAmdGpuUsage, NULL);
@ -1071,7 +1071,7 @@ static void compute_swapchain_display(struct swapchain_data *data)
if (deviceName.find("GeForce") != std::string::npos || deviceName.find("Radeon") != std::string::npos || deviceName.find("AMD") != std::string::npos){
ImGui::TextColored(ImVec4(0.0, 0.502, 0.25, 1.00f), "GPU");
ImGui::SameLine(hudFirstRow);
ImGui::Text("%s%%", gpuLoadDisplay.c_str());
ImGui::Text("%i%%", gpuLoad);
// ImGui::SameLine(150);
// ImGui::Text("%s", "%");
if (instance_data->params.enabled[OVERLAY_PARAM_ENABLED_gpu_temp]){

Loading…
Cancel
Save