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赋值语句后逗号的作用分析
Jun 08 Python
Python中文竖排显示的方法
Jul 28 Python
Python的GUI框架PySide的安装配置教程
Feb 16 Python
Python中元组,列表,字典的区别
May 21 Python
Python实现矩阵加法和乘法的方法分析
Dec 19 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
使用python编写监听端
Apr 12 Python
解决yum对python依赖版本问题
Jul 05 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
python能否java成为主流语言吗
Jun 22 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 Python
Python 语言实现六大查找算法
Jun 30 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 开源AJAX框架14种
2009/08/24 PHP
php字符串截取函数用法分析
2014/11/25 PHP
php生成zip文件类实例
2015/04/07 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
Python类super()及私有属性原理解析
2020/06/15 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
意大利团购网站:Groupon意大利
2016/10/11 全球购物
中专生毕业个人鉴定
2014/02/26 职场文书
中学生检讨书1000字
2014/10/28 职场文书
民事起诉书范本
2015/05/19 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
无保留意见审计报告
2015/06/05 职场文书
我的中国梦主题班会
2015/08/14 职场文书
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python