gpt4 book ai didi

c - 如何获取每个进程的 GPU 使用率?

转载 作者:可可西里 更新时间:2023-11-01 13:47:29 25 4
gpt4 key购买 nike

我有一个前段时间写的温度监控程序,它监控我的 AMD 显卡上的温度和风扇,检查风扇故障或过热。它的问题是,它需要提前知道哪个进程将使用 GPU(图形处理单元),以便杀死它或优雅地停止它以避免过热。

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

我在问,我如何在 C 中的 Windows 中执行此操作?我知道如果有这样的方法,它将针对 Vista 及更高版本。

最佳答案

如果您有 Tesla 开发板或高端 Quadro 并且在 Windows Server 2008 R2 64 位、Windows 7 64 位(或 32/64 位 Linux)上运行,那么您可以使用 NVML这样做。

下载最新NVML SDK (Tespla Deployment Kit)看看这两个函数:

nvmlReturn_t nvmlDeviceGetComputeRunningProcesses (nvmlDevice_t device, 
unsigned int infoCount,
nvmlProcessInfo_t * infos)

nvmlReturn_t nvmlDeviceGetTemperature (nvmlDevice_t device,
nvmlTemperatureSensors_t sensorType,
unsigned int * temp)

注意:

nvmlReturn_t nvmlDeviceGetFanSpeed (nvmlDevice_t device, unsigned int * speed)

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

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

关于c - 如何获取每个进程的 GPU 使用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13017148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com