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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
python解析xml模块封装代码
Feb 07 Python
python求众数问题实例
Sep 26 Python
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
Python内建数据结构详解
Feb 03 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
Python实现的个人所得税计算器示例
Jun 01 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
python实现猜数字游戏
Mar 25 Python
python如何查看网页代码
Jun 07 Python
python实现人性化显示金额数字实例详解
Sep 25 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上传图片存入数据库示例分享
2014/03/11 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
Python 随机按键模拟2小时
2020/12/30 Python
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
一道输出判断型Java面试题
2014/10/01 面试题
教师演讲稿范文
2014/01/08 职场文书
竞聘副主任科员演讲稿
2014/01/11 职场文书
同事吵架检讨书
2014/02/05 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers
业余无线电通联Q语
2022/02/18 无线电