Я пытался в течение последних нескольких дней, чтобы получить температуру моего GPU с использованиемПолучить температуры от NVidia GPU с использованием NVAPI
C++ с использованием NVAPI я следующий код
#include "stdafx.h"
#include "nvapi.h"
int _tmain(int argc, _TCHAR* argv[])
{
NvAPI_Status ret = NVAPI_OK;
int i=0;
NvDisplayHandle hDisplay_a[NVAPI_MAX_PHYSICAL_GPUS*2] = {0};
ret = NvAPI_Initialize();
if (!ret == NVAPI_OK){
NvAPI_ShortString string;
NvAPI_GetErrorMessage(ret, string);
printf("NVAPI NvAPI_Initialize: %s\n", string);
}
NvAPI_ShortString ver;
NvAPI_GetInterfaceVersionString(ver);
printf("NVAPI Version: %s\n", ver);
NvU32 cnt;
NvPhysicalGpuHandle phys;
ret = NvAPI_EnumPhysicalGPUs(&phys, &cnt);
if (!ret == NVAPI_OK){
NvAPI_ShortString string;
NvAPI_GetErrorMessage(ret, string);
printf("NVAPI NvAPI_EnumPhysicalGPUs: %s\n", string);
}
NvAPI_ShortString name;
NV_GPU_THERMAL_SETTINGS thermal;
ret = NvAPI_GPU_GetFullName(phys, name);
if (!ret == NVAPI_OK){
NvAPI_ShortString string;
NvAPI_GetErrorMessage(ret, string);
printf("NVAPI NvAPI_GPU_GetFullName: %s\n", string);
}
printf("Name: %s\n", name);
thermal.version =NV_GPU_THERMAL_SETTINGS_VER;
ret = NvAPI_GPU_GetThermalSettings(phys,0, &thermal);
if (!ret == NVAPI_OK){
NvAPI_ShortString string;
NvAPI_GetErrorMessage(ret, string);
printf("NVAPI NvAPI_GPU_GetThermalSettings: %s\n", string);
}
printf("Temp: %l C\n", thermal.sensor[0].currentTemp);
return 0;
}
Выход я получить в
NVAPI Version: NVidia Complete Version 1.10
Name: GeForce GTX 680
Temp: C
Так NVAPI инициализируется, и он может найти свой GPU, который является GTX680, но это обыкновение возвращать температуру
Чтобы напечатать длинный int, 'printf (" Temp:% l C \ n ")' должен быть 'printf (" Temp:% li C \ n ")'. l - это просто спецификатор длины, вы также должны указать тип, на который он влияет. Посмотрите [здесь] (http://www.cplusplus.com/reference/cstdio/printf/) –
Большое вам спасибо Я думаю, я должен был проверить мои типы лучше – Shuttleu