C程序获取GPU温度
C Program to get GPU temp
所以Linux中有一个命令叫做
nvidia-settings -q=[gpu:0]/GPUCoreTemp
这让我看到我的 GPU 的温度为 41°C。
Attribute 'GPUCoreTemp' (devnux:0[gpu:0]): 41.
'GPUCoreTemp' is an integer attribute.
'GPUCoreTemp' is a read-only attribute.
'GPUCoreTemp' can use the following target types: X Screen, GPU.
是否有可能以某种整数形式直接获取 C 中的温度?否则我将不得不读取输出和 trim 它,当我想连续检查温度时它并不是很快。
您可以使用 Nvidia 管理库 (nvml) 访问该信息。
我用 nvcc 来编译这个:
#include <stdio.h>
#include <nvml.h>
int main(){
nvmlReturn_t result;
unsigned int temp;
nvmlDevice_t device;
result = nvmlInit();
if(NVML_SUCCESS != result){
printf("failed to initialyse nvml \n");
return 1;
}
result = nvmlDeviceGetHandleByIndex(0, &device);
result = nvmlDeviceGetTemperature(device, NVML_TEMPERATURE_GPU, &temp);
if (NVML_SUCCESS != result) {
printf("Failed to get temperature of device %i: %s\n", 0, nvmlErrorString(result));
}else{
printf("%d\n", temp);
}
return 0;
}
所以Linux中有一个命令叫做
nvidia-settings -q=[gpu:0]/GPUCoreTemp
这让我看到我的 GPU 的温度为 41°C。
Attribute 'GPUCoreTemp' (devnux:0[gpu:0]): 41.
'GPUCoreTemp' is an integer attribute.
'GPUCoreTemp' is a read-only attribute.
'GPUCoreTemp' can use the following target types: X Screen, GPU.
是否有可能以某种整数形式直接获取 C 中的温度?否则我将不得不读取输出和 trim 它,当我想连续检查温度时它并不是很快。
您可以使用 Nvidia 管理库 (nvml) 访问该信息。 我用 nvcc 来编译这个:
#include <stdio.h>
#include <nvml.h>
int main(){
nvmlReturn_t result;
unsigned int temp;
nvmlDevice_t device;
result = nvmlInit();
if(NVML_SUCCESS != result){
printf("failed to initialyse nvml \n");
return 1;
}
result = nvmlDeviceGetHandleByIndex(0, &device);
result = nvmlDeviceGetTemperature(device, NVML_TEMPERATURE_GPU, &temp);
if (NVML_SUCCESS != result) {
printf("Failed to get temperature of device %i: %s\n", 0, nvmlErrorString(result));
}else{
printf("%d\n", temp);
}
return 0;
}