如何获得每个进程的GPU使用率?

far*_*dve 5 c windows gpu temperature

我有一个温度监控程序,我写了一会儿,监控我的AMD显卡上的温度和风扇,检查风扇故障或过热.它的问题在于,它需要事先知道哪个进程将使用GPU(图形处理单元),以便杀死它或优雅地使其停止以避免过热.

为了使我的程序更具动态性,我需要一种方法来查找哪个进程正在使用GPU,就像哪个进程正在使用CPU时间(任务管理器).一个这样的应用程序是来自SysInternals的Process Explorer.

我在问,我怎么能在Windows中用C做这个?我知道,如果有这样的方式,它将针对Vista及以上.

Prz*_*ych 2

如果您有 Tesla 板或高端 Quadro 并在 Windows Server 2008 R2 64 位、Windows 7 64 位(或 32/64 位 Linux)上运行,那么您可以使用NVML来执行此操作。

\n\n

下载最新的NVML SDK(Tespla部署套件)并看看这两个功能:

\n\n
nvmlReturn_t nvmlDeviceGetComputeRunningProcesses (nvmlDevice_t device, \n                                                   unsigned int  infoCount,\n                                                   nvmlProcessInfo_t * infos)\n\nnvmlReturn_t nvmlDeviceGetTemperature (nvmlDevice_t device,\n                                       nvmlTemperatureSensors_t sensorType,\n                                       unsigned int * temp)\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:

\n\n
nvmlReturn_t nvmlDeviceGetFanSpeed (nvmlDevice_t device, unsigned int * speed)\n
Run Code Online (Sandbox Code Playgroud)\n\n

它“检索设备\xe2\x80\x99s风扇的预期运行速度”而不是实际风扇速度。所以你不能用它来检查风扇故障。

\n\n

我不知道 nvmlDeviceGetComputeRunningProcesses 替代品是否适用于 GeForce 主板,但 Windows NvAPI(也适用于 GeForce)允许查询风扇速度和温度。

\n