python编程查看gpu显存使用
使用到了包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显存使用相关推荐
- ubuntu安装nvidia显卡驱动+cuda9.0+cudnn7.0+查看cuda版本+安装tensorrt+python查看gpu显存
一,驱动安装 显卡驱动和cuda版本关系 卸载原先驱动 sudo apt-get remove --purge nvidia-\* ubuntu-drivers devices 查看显卡类型 Nvi ...
- 查看GPU显存 使用率
watch -n 0.2 nvidia-smi 主要关注GPU-Util Memory-Usage 0.2表示每隔0.2秒刷新一次终端的显示结果. 上面的表格中: 第一栏的Fan:N/A是风扇转速,从 ...
- ubuntu服务器常见使用技巧及-kill掉后GPU显存不释放进程-
如何解决python进程被kill掉后GPU显存不释放的问题 1 重新开一个shell,然后输入: ps aux|grep user_name|grep python.所有该用户下的python程序就 ...
- 矩池云中Tensorflow指定GPU及GPU显存设置
矩池云中Tensorflow指定GPU及GPU显存设置 指定GPU 查看机器上GPU情况 命令: nvidia-smi 功能:显示机器上gpu的情况 命令: nvidia-smi -l 功能:定时更新 ...
- nvidia-smi 显示无进程,但GPU显存被占用
问题场景 训练网络时,未等网络训练完,中途按了:ctrl + c结束网络训练.当再次进行训练网络时,提示GPU显存不足,使用nvidia-smi查看GPU,无进程占用,但GPU显存被占满. 问题分析 ...
- 解决矩池云GPU显存未释放问题
很多用户反馈说终止程序之后,显存依然被占用,这里我们提供了两种解决方案,帮助用户解决这个问题. nvidia-smi查看 我们可以先用如下命令 nvidia-smi 查看一下当前GPU进程情况. _ ...
- 开源GPU显存虚拟化项目,你的2080Ti还能救一下
#开源GPU显存虚拟化项目,你的2080Ti还能救一下 vGPU device plugin 基于NVIDIA官方插件(NVIDIA/k8s-device-plugin),在保留官方功能的基础上,实现 ...
- 【经验分享】GPU 显存不足怎么办?
作者:老宋的茶书会 知乎专栏:NLP与深度学习 研究方向:自然语言处理 来自:AINLP 前言 最近跑的模型都比较大,尤其是Bert, 这真的是难为我 1080ti 了, 在Bert的Example中 ...
- Ubuntu下GPU显存无法释放和多卡训练时候的一些总结
如果我们正在训练模型的时候,强制ctrl+C 结束进程的话,有时候,GPU的显存不会释放, 一般情况下,我们会用nvidia-smi 的命令进行查看哪个进程占用了GPU显存. 但是有时候我们发现不了具 ...
最新文章
- 数据读取与数据扩增方法
- iOS自动布局(AutoLayout)之 NSLayoutAnchor
- WINCE之“系统事件”——System/Events
- php e error,E_ERROR定义与用法汇总
- grpc 客户端的context 服务端获取不到_MLamp;DEV[10] | gRPC的应用
- 【Flink】Flink Dump of the process-tree for container Exit code is 143
- Linux学习总结(70)——Bash 脚本中常用的内置变量汇总
- java中整数和字符串间的转换方法
- 古希腊之争(一)详解(C++)
- 给机械硬盘加个缓存:PrimoCache
- 创新不是突然而至——它是慢慢成长的
- gatedata graph digitier 基本使用
- 截图软件与网络的完美结合---Jingproject(Z)
- c语言简单图形库,C语言图形库简单对比及EGE库的安装小手册
- 付款码支付-微信和支付宝付款码类型标识
- 一文带你熟悉android的smali语法一
- 基于PyQt的网站后台工具
- google map 看经度和纬度
- 全志A33移植openharmony3.1标准系统之添加产品编译
- JavaScript-歌词展示与音乐同步
热门文章
- adobe xd_如何在Adobe XD中创建Finance App UI设计
- 无聊吗?写个【飞机大战】来玩吧(下篇)
- 逊哥dp专题 总结(普通dp,斜率优化dp,数位dp)
- 使用腾讯云 SCF 云函数压缩 COS 对象存储文件
- 云计算大数据:Xen、KVM、VMware、hyper-v等虚拟化技术的比较
- 根据经纬度定位百度地图(带图片的)
- 递归陷入死循环的判断方法与解决措施(java代码)
- arcgis 属性表中起点终点创建线_一种GIS单线路网自动生成双线路网的方法与流程...
- 加减法、原码一位乘法、Booth算法、恢复余数法、加减交替法符号位及小结
- super是不是java中的标识符_java关键字super和this是什么?有什么区别?