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中List.count()方法的使用教程
May 20 Python
Python中tell()方法的使用详解
May 24 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
利用python和百度地图API实现数据地图标注的方法
May 13 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
Python使用正则表达式分割字符串的实现方法
Jul 16 Python
ORM Django 终端打印 SQL 语句实现解析
Aug 09 Python
py-charm延长试用期限实例
Dec 22 Python
python super用法及原理详解
Jan 20 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
Jun 02 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 Python
python3代码输出嵌套式对象实例详解
Dec 03 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_Flame(Version:Progress)的原代码
2006/10/09 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
浅析Python中的多进程与多线程的使用
2015/04/07 Python
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
Python JSON编解码方式原理详解
2020/01/20 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
乡镇镇长个人整改措施
2014/10/01 职场文书
安全保证书怎么写
2015/02/28 职场文书
道歉的话怎么说
2015/05/12 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
JS数组去重详情
2021/11/07 Javascript
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript