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动态加载包的方法小结
Apr 18 Python
python使用标准库根据进程名如何获取进程的pid详解
Oct 31 Python
python学习入门细节知识点
Mar 29 Python
Python实现模拟登录网易邮箱的方法示例
Jul 05 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
python组合无重复三位数的实例
Nov 13 Python
python的常用模块之collections模块详解
Dec 06 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
Python matplotlib实时画图案例
Apr 23 Python
Python bisect模块原理及常见实例
Jun 17 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
PHP7匿名类用法分析
2016/09/26 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
使用JQuery进行跨域请求
2010/01/25 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
使用Web Uploader实现多文件上传
2016/06/08 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
python实现每次处理一个字符的三种方法
2014/10/09 Python
python实现给数组按片赋值的方法
2015/07/28 Python
Python部署web开发程序的几种方法
2017/05/05 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
python实现输入数字的连续加减方法
2018/06/22 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
浅谈Python程序的错误:变量未定义
2020/06/02 Python
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
建筑人员岗位职责
2013/12/25 职场文书
教师绩效工资方案
2014/02/01 职场文书
小学母亲节活动方案
2014/03/14 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
安全责任书
2015/01/29 职场文书
公司年夜饭通知
2015/04/25 职场文书
硕士论文致谢范文
2015/05/14 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript