参考:

https://blog.csdn.net/TracelessLe/article/details/107405544

====================================================

发现了一个python版本的可以查看和管理NVIDIA显卡的工具pynvml,安装方法:

pip install nvidia-ml-py

在这个库的基础上自己写了一个小程序,用来监控GPU的使用情况:

import psutil
import pynvml #导包 UNIT = 1024 * 1024 pynvml.nvmlInit() #初始化
gpuDeriveInfo = pynvml.nvmlSystemGetDriverVersion()
print("Drive版本: ", str(gpuDeriveInfo, encoding='utf-8')) #显示驱动信息 gpuDeviceCount = pynvml.nvmlDeviceGetCount()#获取Nvidia GPU块数
print("GPU个数:", gpuDeviceCount ) for i in range(gpuDeviceCount):
handle = pynvml.nvmlDeviceGetHandleByIndex(i)#获取GPU i的handle,后续通过handle来处理 memoryInfo = pynvml.nvmlDeviceGetMemoryInfo(handle)#通过handle获取GPU i的信息 gpuName = str(pynvml.nvmlDeviceGetName(handle), encoding='utf-8') gpuTemperature = pynvml.nvmlDeviceGetTemperature(handle, 0) gpuFanSpeed = pynvml.nvmlDeviceGetFanSpeed(handle) gpuPowerState = pynvml.nvmlDeviceGetPowerState(handle) gpuUtilRate = pynvml.nvmlDeviceGetUtilizationRates(handle).gpu
gpuMemoryRate = pynvml.nvmlDeviceGetUtilizationRates(handle).memory print("第 %d 张卡:"%i, "-"*30)
print("显卡名:", gpuName)
print("内存总容量:", memoryInfo.total/UNIT, "MB")
print("使用容量:", memoryInfo.used/UNIT, "MB")
print("剩余容量:", memoryInfo.free/UNIT, "MB")
print("显存空闲率:", memoryInfo.free/memoryInfo.total)
print("温度:", gpuTemperature, "摄氏度")
print("风扇速率:", gpuFanSpeed)
print("供电水平:", gpuPowerState)
print("gpu计算核心满速使用率:", gpuUtilRate)
print("gpu内存读写满速使用率:", gpuMemoryRate)
print("内存占用率:", memoryInfo.used/memoryInfo.total) """
# 设置显卡工作模式
# 设置完显卡驱动模式后,需要重启才能生效
# 0 为 WDDM模式,1为TCC 模式
gpuMode = 0 # WDDM
gpuMode = 1 # TCC
pynvml.nvmlDeviceSetDriverModel(handle, gpuMode)
# 很多显卡不支持设置模式,会报错
# pynvml.nvml.NVMLError_NotSupported: Not Supported
""" # 对pid的gpu消耗进行统计
pidAllInfo = pynvml.nvmlDeviceGetComputeRunningProcesses(handle)#获取所有GPU上正在运行的进程信息
for pidInfo in pidAllInfo:
pidUser = psutil.Process(pidInfo.pid).username()
print("进程pid:", pidInfo.pid, "用户名:", pidUser,
"显存占有:", pidInfo.usedGpuMemory/UNIT, "Mb") # 统计某pid使用的显存 pynvml.nvmlShutdown() #最后关闭管理工具

输出:

Drive版本:  470.63.01
GPU个数: 4
第 0 张卡: ------------------------------
显卡名: NVIDIA GeForce RTX 3090
内存总容量: 24268.3125 MB
使用容量: 14168.625 MB
剩余容量: 10099.6875 MB
显存空闲率: 0.41616768780276747
温度: 59 摄氏度
风扇速率: 51
供电水平: 2
gpu计算核心满速使用率: 46
gpu内存读写满速使用率: 46
内存占用率: 0.5838323121972325
进程pid: 68028 用户名: xxxxxx 显存占有: 14165.0 Mb
第 1 张卡: ------------------------------
显卡名: NVIDIA GeForce RTX 3090
内存总容量: 24268.3125 MB
使用容量: 3.625 MB
剩余容量: 24264.6875 MB
显存空闲率: 0.9998506282626779
温度: 32 摄氏度
风扇速率: 30
供电水平: 8
gpu计算核心满速使用率: 0
gpu内存读写满速使用率: 0
内存占用率: 0.0001493717373220738
第 2 张卡: ------------------------------
显卡名: NVIDIA GeForce RTX 3090
内存总容量: 24268.3125 MB
使用容量: 3.625 MB
剩余容量: 24264.6875 MB
显存空闲率: 0.9998506282626779
温度: 33 摄氏度
风扇速率: 30
供电水平: 8
gpu计算核心满速使用率: 0
gpu内存读写满速使用率: 0
内存占用率: 0.0001493717373220738
第 3 张卡: ------------------------------
显卡名: NVIDIA GeForce RTX 3090
内存总容量: 24268.3125 MB
使用容量: 3.625 MB
剩余容量: 24264.6875 MB
显存空闲率: 0.9998506282626779
温度: 33 摄氏度
风扇速率: 30
供电水平: 8
gpu计算核心满速使用率: 0
gpu内存读写满速使用率: 0
内存占用率: 0.0001493717373220738

注意的是上面代码需要安装第三方依赖库:psutil

相关资料:

[1] NVIDIA官方GPU管理和部署文档
[2] 【Python管理GPU】pynvml工具的安装与使用
[3] pypi下的nvidia-ml-py包

https://pythonhosted.org/nvidia-ml-py/

https://github.com/gpuopenanalytics/pynvml

==================================================

Python使用pynvml查看GPU信息的更多相关文章

  1. 【MonkeyRunner】[技术博客]用python编写脚本查看设备信息

    [MonkeyRunner]用python编写脚本查看设备信息 原以为是个简单的操作,在实践的时候发现了一些问题. python脚本 test.py: from com.android.monkeyr ...

  2. 【tensorflow基础】TensorFlow查看GPU信息

    re 1. TensorFlow查看GPU信息; end

  3. pytorch中查看gpu信息

    其他:windows使用nvidia-smi查看gpu信息 为什么将数据转移至GPU的方法叫做.cuda而不是.gpu,就像将数据转移至CPU调用的方法是.cpu?这是因为GPU的编程接口采用CUDA ...

  4. Linux查看GPU信息和使用情况

    Linux查看显卡信息: lspci | grep -i vga 使用nvidia GPU可以: lspci | grep -i nvidia [root@gpu-server-002 ~]# lsp ...

  5. 如何在linux下查看gpu信息

    ~$ lspci | grep -i vga01:00.0 VGA compatible controller: NVIDIA Corporation GF119 [GeForce GT 610] ( ...

  6. 怎么用 pytorch 查看 GPU 信息

    如果你用的 Keras 或者 TensorFlow, 请移步 怎么查看keras 或者 tensorflow 正在使用的GPU In [1]: import torch In [2]: torch.c ...

  7. linux 查看gpu信息

  8. 新手篇丨Python任意网段Web端口信息探测工具

    你学习Python的目的是什么?是想写爬虫爬取数据(数据.图片等内容),还是想自写自动化的小工具,又或是作为一个新手小白单纯的欣赏这门语言呢? 今天i春秋分享的是一篇关于多线程工具的文章,工具使用效率 ...

  9. ubuntu 查看进程信息

    查看进程信息 ps ps -aux 查看所有进程,每行一个程序 top 显示当前运行程序 kill 98 (98为PID号,) kill -9 98 (强制杀死98) ps -e Linux如何查看端 ...

  10. python爬虫之User-Agent用户信息

    python爬虫之User-Agent用户信息 爬虫是自动的爬取网站信息,实质上我们也只是一段代码,并不是真正的浏览器用户,加上User-Agent(用户代理,简称UA)信息,只是让我们伪装成一个浏览 ...

随机推荐

  1. Scrapy框架(五)--请求传参

    在某些情况下,我们爬取的数据不在同一个页面中,例如,我们爬取一个电影网站,电影的名称,评分在一级页面,而要爬取的其他电影详情在其二级子页面中. 这时我们就需要用到请求传参. 请求传参的使用场景 当我们 ...

  2. 增补博客 第八篇 python 中国大学排名数据分析与可视化

    [题目描述]以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取:(1)按照排名先后顺序输出不同年份的前10位大学信息, ...

  3. ElasticSearch服务Java内存异常分析和排查解决

    ElasticSearch服务Java内存异常分析和排查解决 1.ElasticSearch业务微服务日志排查java.lang.IllegalStateException: Request cann ...

  4. 一行超长日志引发的 “血案” - Containerd 频繁 OOM 背后的真相

    案发现场:混沌初现 2024年6月10日,本应是平静的一天.但从上午 9 点开始,Sealos 公有云的运维监控告警就开始不停地响.北京可用区服务器节点突然出现大量 "not ready&q ...

  5. 结构型模式(Structural Pattern)

    模式介绍 结构型模式(Structural Pattern)的主要目的就是将不同的类和对象组合在一起,形成更大或者更复杂的结构体.该模式并不是简单地将这些类或对象摆放在一起,而是要提供它们之间的关联方 ...

  6. 关于c指针的理解

    1 #include<stdio.h> 2 { 3 int a= 100,b=10; 4 int *p1=&a,*p2=&b; 5 *p1=b; 6 *p2=a; 7 pr ...

  7. Linux下命令行开启关闭触摸板

    Linux下命令行开启关闭触摸板 从设备列表中找到触摸板的设备id,调用xinput可以控制设备的开启关闭. 示例代码如下: #!/bin/bash device=`xinput list | gre ...

  8. Win10升Win11后出现的文件系统错误-1073740771的几种可能解决办法

    可能性1 有服务没能启动 键盘按"WIN+R"打开"运行"对话框 在对话框输入"services.msc"点击"确定"按 ...

  9. Linux 内核:设备树(2)dtb转换成device_node

    Linux 内核:设备树(2)dtb转换成device_node 背景 前面我们了解到dtb的内存分布以后(dtb格式),接下来就来看看内核是如何把设备树解析成所需的device_node. 原文(有 ...

  10. Ubuntu中安装最新 Node.js 和 npm

    背景 为了安装GNU QEMU Eclipse,需要安装比较新的nodejs $ npm install --global xpm@latest ▌ ╢░░░░░░░░░░░░░░░░░░░░░░░░ ...