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比较两个列表是否相等的方法
Jul 28 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
Python中序列的修改、散列与切片详解
Aug 27 Python
Python WSGI的深入理解
Aug 01 Python
浅谈django的render函数的参数问题
Oct 16 Python
Python读取xlsx文件的实现方法
Jul 04 Python
Django后端接收嵌套Json数据及解析详解
Jul 17 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
Jan 04 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
May 07 Python
python爬虫爬取图片的简单代码
Jan 18 Python
Python爬虫基础讲解之请求
May 13 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调用Twitter的RSS的实现代码
2010/03/10 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
js删除所有的cookie的代码
2010/11/25 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python del()函数用法
2013/03/24 Python
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
Atom的python插件和常用插件说明
2018/07/08 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
Python内置加密模块用法解析
2019/11/25 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
财务会计人员岗位职责
2013/11/30 职场文书
企业年会主持词
2014/03/27 职场文书
学生操行评语大全
2014/04/24 职场文书
单位承诺书格式
2014/05/21 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android