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的几种开发工具介绍
Mar 07 Python
python通过邮件服务器端口发送邮件的方法
Apr 30 Python
python类继承用法实例分析
May 27 Python
详解Python编程中包的概念与管理
Oct 16 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
Nov 07 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
学习python可以干什么
Feb 26 Python
Pandas之Dropna滤除缺失数据的实现方法
Jun 25 Python
Python制作词云图代码实例
Sep 09 Python
为什么说Python可以实现所有的算法
Oct 04 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
pycharm设置默认的UTF-8编码模式的方法详解
Jun 01 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
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
php curl_init函数用法
2014/01/31 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
实例讲解PHP表单处理
2019/02/15 PHP
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
Python实现提取文章摘要的方法
2015/04/21 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
网络方面基础面试题
2012/11/16 面试题
大学生职业生涯规划书模板
2014/01/03 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
毕业留言寄语大全
2014/04/10 职场文书
淘宝活动总结范文
2014/06/26 职场文书
异地年检委托书范本
2014/09/24 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技
Python中tqdm的使用和例子
2022/09/23 Python