使用到了包pynvml

import pynvml# ======================GPU========================#
# 查看torch使用gpu情况,需要安装一个包pynvml
# 直接使用pip可以安装
# ======================GPU========================#
def get_gpu_info(use_index=(0,)):"""深度学习训练使用,可以回去显卡信息,使用到的包:pynvml:param use_index: 使用的GPU的物理编号:return: """# 计算显存是GB还是MB的函数,方便后续查看数据def func(number):# number单位是MBif number // 1024 > 0:  # 如果number对1024取整是大于0的说明单位是GBreturn f"{number / 1024.0:.3f}GB"  # 返回值的单位是GBelse:return f"{number:.3f}MB"# 初始化管理工具pynvml.nvmlInit()# device = torch.cuda.current_device()  # intgpu_count = pynvml.nvmlDeviceGetCount()  # intinformation = []for index in range(gpu_count):# 不是使用的gpu,就剔除if index not in use_index:continuehandle = pynvml.nvmlDeviceGetHandleByIndex(index)meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)total = meminfo.total / 1024 ** 2  # 总的显存大小,单位是MBused = meminfo.used / 1024 ** 2  # 已用显存大小free = meminfo.free / 1024 ** 2  # 剩余显存大小information.append(f"Memory Total:{func(total)}; Memory Used:{func(used)}; Memory Free:{func(free)}")# 关闭管理工具pynvml.nvmlShutdown()return "\n".join(information)print(get_gpu_info(use_index=(0,)))

改进:改成类,这样实例化的函数就能够通过参数的形式传递了

import pynvmlclass GetGPUInfo:"""# ======================GPU========================## 查看torch使用gpu情况,需要安装一个包pynvml# 直接使用pip可以安装# ======================GPU========================#"""def __init__(self, use_index=(0,)):self.use_index = use_index@staticmethoddef get_gpu_info(use_index=(0,)) -> str:"""深度学习训练使用,可以回去显卡信息,使用到的包:pynvml:param use_index: 使用的GPU的物理编号:return: 显存使用的信息str"""# 计算显存是GB还是MB的函数,方便后续查看数据def func(number):# number单位是MBif number // 1024 > 0:  # 如果number对1024取整是大于0的说明单位是GBreturn f"{number / 1024.0:.3f}GB"  # 返回值的单位是GBelse:return f"{number:.3f}MB"# 初始化管理工具pynvml.nvmlInit()# device = torch.cuda.current_device()  # intgpu_count = pynvml.nvmlDeviceGetCount()  # intinformation = []for index in range(gpu_count):# 不是使用的gpu,就剔除if index not in use_index:continuehandle = pynvml.nvmlDeviceGetHandleByIndex(index)meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)total = meminfo.total / 1024 ** 2  # 总的显存大小,单位是MBused = meminfo.used / 1024 ** 2  # 已用显存大小free = meminfo.free / 1024 ** 2  # 剩余显存大小information.append(f"\nMemory Total:{func(total)}; Memory Used:{func(used)}; Memory Free:{func(free)}")# 关闭管理工具pynvml.nvmlShutdown()return "".join(information)def __call__(self):return self.get_gpu_info(use_index=self.use_index)if __name__ == "__main__":# 使用的显卡的物理编号,用于显示显卡使用信息use_cuda_index = (0,)get_gpu_info = GetGPUInfo(use_index=use_cuda_index)print(get_gpu_info())

python编程查看gpu显存使用相关推荐

  1. ubuntu安装nvidia显卡驱动+cuda9.0+cudnn7.0+查看cuda版本+安装tensorrt+python查看gpu显存

    一,驱动安装 显卡驱动和cuda版本关系 卸载原先驱动 sudo apt-get remove --purge nvidia-\* ubuntu-drivers devices  查看显卡类型 Nvi ...

  2. 查看GPU显存 使用率

    watch -n 0.2 nvidia-smi 主要关注GPU-Util Memory-Usage 0.2表示每隔0.2秒刷新一次终端的显示结果. 上面的表格中: 第一栏的Fan:N/A是风扇转速,从 ...

  3. ubuntu服务器常见使用技巧及-kill掉后GPU显存不释放进程-

    如何解决python进程被kill掉后GPU显存不释放的问题 1 重新开一个shell,然后输入: ps aux|grep user_name|grep python.所有该用户下的python程序就 ...

  4. 矩池云中Tensorflow指定GPU及GPU显存设置

    矩池云中Tensorflow指定GPU及GPU显存设置 指定GPU 查看机器上GPU情况 命令: nvidia-smi 功能:显示机器上gpu的情况 命令: nvidia-smi -l 功能:定时更新 ...

  5. nvidia-smi 显示无进程,但GPU显存被占用

    问题场景 训练网络时,未等网络训练完,中途按了:ctrl + c结束网络训练.当再次进行训练网络时,提示GPU显存不足,使用nvidia-smi查看GPU,无进程占用,但GPU显存被占满. 问题分析 ...

  6. 解决矩池云GPU显存未释放问题

    很多用户反馈说终止程序之后,显存依然被占用,这里我们提供了两种解决方案,帮助用户解决这个问题. nvidia-smi查看 我们可以先用如下命令 nvidia-smi 查看一下当前GPU进程情况. _ ...

  7. 开源GPU显存虚拟化项目,你的2080Ti还能救一下

    #开源GPU显存虚拟化项目,你的2080Ti还能救一下 vGPU device plugin 基于NVIDIA官方插件(NVIDIA/k8s-device-plugin),在保留官方功能的基础上,实现 ...

  8. 【经验分享】GPU 显存不足怎么办?

    作者:老宋的茶书会 知乎专栏:NLP与深度学习 研究方向:自然语言处理 来自:AINLP 前言 最近跑的模型都比较大,尤其是Bert, 这真的是难为我 1080ti 了, 在Bert的Example中 ...

  9. Ubuntu下GPU显存无法释放和多卡训练时候的一些总结

    如果我们正在训练模型的时候,强制ctrl+C 结束进程的话,有时候,GPU的显存不会释放, 一般情况下,我们会用nvidia-smi 的命令进行查看哪个进程占用了GPU显存. 但是有时候我们发现不了具 ...

最新文章

  1. 数据读取与数据扩增方法
  2. iOS自动布局(AutoLayout)之 NSLayoutAnchor
  3. WINCE之“系统事件”——System/Events
  4. php e error,E_ERROR定义与用法汇总
  5. grpc 客户端的context 服务端获取不到_MLamp;DEV[10] | gRPC的应用
  6. 【Flink】Flink Dump of the process-tree for container Exit code is 143
  7. Linux学习总结(70)——Bash 脚本中常用的内置变量汇总
  8. java中整数和字符串间的转换方法
  9. 古希腊之争(一)详解(C++)
  10. 给机械硬盘加个缓存:PrimoCache
  11. 创新不是突然而至——它是慢慢成长的
  12. gatedata graph digitier 基本使用
  13. 截图软件与网络的完美结合---Jingproject(Z)
  14. c语言简单图形库,C语言图形库简单对比及EGE库的安装小手册
  15. 付款码支付-微信和支付宝付款码类型标识
  16. 一文带你熟悉android的smali语法一
  17. 基于PyQt的网站后台工具
  18. google map 看经度和纬度
  19. 全志A33移植openharmony3.1标准系统之添加产品编译
  20. JavaScript-歌词展示与音乐同步

热门文章

  1. adobe xd_如何在Adobe XD中创建Finance App UI设计
  2. 无聊吗?写个【飞机大战】来玩吧(下篇)
  3. 逊哥dp专题 总结(普通dp,斜率优化dp,数位dp)
  4. 使用腾讯云 SCF 云函数压缩 COS 对象存储文件
  5. 云计算大数据:Xen、KVM、VMware、hyper-v等虚拟化技术的比较
  6. 根据经纬度定位百度地图(带图片的)
  7. 递归陷入死循环的判断方法与解决措施(java代码)
  8. arcgis 属性表中起点终点创建线_一种GIS单线路网自动生成双线路网的方法与流程...
  9. 加减法、原码一位乘法、Booth算法、恢复余数法、加减交替法符号位及小结
  10. super是不是java中的标识符_java关键字super和this是什么?有什么区别?