GPU (NVidia Geforce 760 GTX) からNVAPIを使用して温度などの情報を取得するための簡単なコードを作成しようとしています。
CUDA のサンプル コードから始めました。NVidia が提供するこれらのサンプル コードを目にするかもしれません。サンプル コードの 1 つ ('CUDA Samples\v6.5\0_Simple\vectorAdd') をコピーして、このサンプルに記述しました。NVAPIの「.h」ファイルをすべて「CUDA Samples\v6.5\common\inc」にコピーし、「nvapi.lib」を「CUDA Samples\v6.5\common\lib\Win32」にコピーし、「nvapi64」をコピーしました.lib」を「CUDA Samples\v6.5\common\lib\x64」に。
これらのコピーを「C:\Program Files\CUDA\v6.5\include」および「C:\Program Files\CUDA\v6.5\lib」に作成しました。
これは私が書いたコードです:
int _txmain() {
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;
}
しかし、コードをビルドすると、次のエラーが発生しました。
エラー 28 エラー LNK2019: 未解決の外部シンボル NvAPI_GPU_GetThermalSettings が関数で参照されています...
エラー 29 エラー LNK2019: 未解決の外部シンボル NvAPI_GPU_GetFullName が関数で参照されています...
およびいくつかの同様のエラー。