Pytorch如何切换 cpu和gpu的使用详解


Posted in Python onMarch 01, 2021

前言,在pytorch中,当服务器上的gpu被占用时,很多时候我们想先用cpu调试下代码,那么就需要进行gpu和cpu的切换。

方法1:x.to(device)

把 device 作为一个可变参数,推荐使用argparse进行加载:

使用gpu时:

device='cuda'
x.to(device) # x是一个tensor,传到cuda上去

使用cpu时:

device='cpu'
x.to(device)

方法2:使用x.cuda()+CUDA_VISIBLE_DEVICES

很多贴子中说,使用x.cuda() 和x.to('cuda') 虽然是等效的,但是x.cuda() 的缺点是无法动态切换cpu。然而,其实配合命令行参数CUDA_VISIBLE_DEVICES 是可以进行切换的。

在服务器上创建一个python脚本 t.py:

import torch
print(torch.cuda.device_count()) # 可用gpu数量
print(torch.cuda.is_available()) # 是否可用gpu

首先先看一下,正常运行的情况:

  • 执行命令:python t.py
  • 输出结果:因为服务器上有两个gpu,所以是我们想要的结果。

2
True

如果想要只使用某一块gpu,只需要在执行前加一个参数:

  • CUDA_VISIBLE_DEVICES=0 python t.py,例如,我们要使用gpu 0
  • 接下来看看输出什么:是的!程序中确实只可见了一块gpu~

1
True

下面,如果我们想使用cpu呢?

  • CUDA_VISIBLE_DEVICES="" python t.py
  • 输出结果:可以看到,虽然服务器上有2块cpu,通过我们设置执行参数,程序中也成功看不到了!

0
False

因此,回归正题,当我们使用x.cuda()进行分配gpu时,只需要使用torch.cuda.is_available()加一个判断即可,当想使用cpu的时候在执行程序的命令行参数进行控制:

if torch.cuda.is_available():
  x= x.cuda()

到此这篇关于Pytorch如何切换 cpu和gpu的使用详解的文章就介绍到这了,更多相关Pytorch切换cpu和gpu内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python多线程学习资料
Dec 19 Python
Python continue语句用法实例
Mar 11 Python
PyQt5每天必学之弹出消息框
Apr 19 Python
python 多个参数不为空校验方法
Feb 14 Python
python实现两张图片的像素融合
Feb 23 Python
详解Python是如何实现issubclass的
Jul 24 Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 Python
Python collections中的双向队列deque简单介绍详解
Nov 04 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
基于python实现matlab filter函数过程详解
Jun 08 Python
实例讲解Python 迭代器与生成器
Jul 08 Python
python爬取股票最新数据并用excel绘制树状图的示例
Mar 01 #Python
python中openpyxl和xlsxwriter对Excel的操作方法
Mar 01 #Python
python中random模块详解
Mar 01 #Python
利用python实现汉诺塔游戏
Mar 01 #Python
python绘制汉诺塔
Mar 01 #Python
彻底解决pip下载pytorch慢的问题方法
Mar 01 #Python
Python 里最强的地图绘制神器
Mar 01 #Python
You might like
PHP 导出Excel示例分享
2014/08/18 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
使用js画图之画切线
2015/01/12 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
python基础教程之udp端口扫描
2014/02/10 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
运动检测ViBe算法python实现代码
2018/01/09 Python
对pandas的算术运算和数据对齐实例详解
2018/12/22 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
浅谈Python中(&,|)和(and,or)之间的区别
2019/08/07 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
收银员的岗位职责范本
2014/02/04 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
安全协议书
2014/04/23 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python
Python OpenCV形态学运算示例详解
2022/04/07 Python