获取NVIDIA显卡的温度

来源:互联网 发布:武汉大学张梦婷 知乎 编辑:程序博客网 时间:2024/05/10 04:00

NVIDIA显卡在硬件上有温度传感器,可以感知显卡的运行环境。温度数据的获取,一般是通过调用NVIDIA的SDK的相关函数即可。SDK的下载的网址(https://developer.nvidia.com/nvapi),里面有一些sample code可以参考。获取温度的函数是NvAPI_GPU_GetThermalSettings。参考代码如下:

     int main()     {        NvAPI_Status ret = NVAPI_OK;        ret = NvAPI_Initialize();        if(ret != NVAPI_OK)        {            printf("NvAPI_Initialize() failed = 0x%x", ret);            return 1; // Initialization failed        }        NvPhysicalGpuHandle hPhysicalGpu[NVAPI_MAX_PHYSICAL_GPUS];        for (NvU32 PhysicalGpuIndex = 0; PhysicalGpuIndex < NVAPI_MAX_PHYSICAL_GPUS; PhysicalGpuIndex++)        {            hPhysicalGpu[PhysicalGpuIndex]=0;        }         ret = NvAPI_EnumPhysicalGPUs(hPhysicalGpu, &physicalGpuCount);        if(ret != NVAPI_OK)        {            printf("Cannot enumerate GPUs in the system...\n");            getchar();            exit(1);        }        NV_GPU_THERMAL_SETTINGS currentTemp;//获取温度的数据结构        currentTemp.version = NV_GPU_THERMAL_SETTINGS_VER;//一定要设置,不然调用获取温度函数时候会出错        for(NvU32 GpuIndex = 0; GpuIndex < physicalGpuCount; GpuIndex++)        {            ret = NvAPI_GPU_GetThermalSettings(hPhysicalGpu[PhysicalGpuIndex], NVAPI_THERMAL_TARGET_ALL,&currentTemp);//获取温度            if(ret == NVAPI_OK)            {                printf("current temperature=%d\n",currentTemp.sensor[0].currentTemp);            }        }        return 0;     }
        就这样OK了。
0 0
原创粉丝点击