如何使用Python在Windows中按进程测量GPU使用情况?

3
我希望能够像Windows任务管理器一样,测量每个进程的GPU使用情况,但是在尝试使用pyNVML库时遇到了几个问题。因此我有几个问题。
首先,在Windows中是否可以使用Python测量每个进程的精确GPU使用情况呢?我已经尝试过nvidia-smi查询,但似乎无法显示每个进程的内存使用和利用率百分比。
其次,如果可以用Python这种方式测量GPU使用情况,我想以与Windows 10的任务管理器类似的方式进行测量和显示。
以下是我的代码:
nvmlInit()
deviceCount = nvmlDeviceGetCount()
#print(deviceCount)
for device_id in range(deviceCount):
    hd = nvmlDeviceGetHandleByIndex(device_id)
    #print(handle)

cps = nvmlDeviceGetGraphicsRunningProcesses(hd)

for ps in cps :
    pp = ps.pid
    #print(pp)
    try :
        name = str(nvmlSystemGetProcessName(ps.pid))
        n = name.split("\\")
        #print(n[len(n)-1][:-1])
        process_name = n[len(n)-1][:-1]
        if process_name == 'chrome.exe':
            print(process_name, pp, ps.usedGpuMemory)
    except:
        pass

我的结果:

chrome.exe 16688 None

nvidia-smi

如您所见,此方法无法显示每个进程的GPU内存使用情况,但我需要taskmgr的GPU部分所显示的信息。(我不需要可视化。)

taskmgr

我的电脑配置是Windows 10专业版,GTX 950,i5-6600.

如果目前Python无法实现此功能,请问您有什么其他建议可以自动收集每个进程的GPU使用情况。

谢谢。

1个回答

0

查看Jonathan DEKHTIAR的答案这里,解释为什么它不起作用。 作为一种解决方法,您可以尝试从powershell中获取值Get-Counter -Counter "\GPU Engine(*)\Utilization Percentage"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接