tensorflow指定CPU与GPU运算的方法实现


Posted in Python onApril 21, 2020

1.指定GPU运算

如果安装的是GPU版本,在运行的过程中TensorFlow能够自动检测。如果检测到GPU,TensorFlow会尽可能的利用找到的第一个GPU来执行操作。

如果机器上有超过一个可用的GPU,除了第一个之外的其他的GPU默认是不参与计算的。为了让TensorFlow使用这些GPU,必须将OP明确指派给他们执行。with......device语句能够用来指派特定的CPU或者GPU执行操作:

import tensorflow as tf
import numpy as np

with tf.Session() as sess:
  with tf.device('/cpu:0'):
    a = tf.placeholder(tf.int32)
    b = tf.placeholder(tf.int32)
    add = tf.add(a, b)
    sum = sess.run(add, feed_dict={a: 3, b: 4})
    print(sum)

设备的字符串标识,当前支持的设备包括以下的几种:

cpu:0 机器的第一个cpu。

gpu:0 机器的第一个gpu,如果有的话

gpu:1 机器的第二个gpu,依次类推

类似的还有tf.ConfigProto来构建一个config,在config中指定相关的GPU,并且在session中传入参数config=“自己创建的config”来指定gpu操作

其中,tf.ConfigProto函数的参数如下:

log_device_placement=True: 是否打印设备分配日志

allow_soft_placement=True: 如果指定的设备不存在,允许TF自动分配设备

import tensorflow as tf
import numpy as np

config = tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)

with tf.Session(config=config) as sess:
  a = tf.placeholder(tf.int32)
  b = tf.placeholder(tf.int32)
  add = tf.add(a, b)
  sum = sess.run(add, feed_dict={a: 3, b: 4})
  print(sum)

2.设置GPU使用资源

上文的tf.ConfigProto函数生成的config之后,还可以设置其属性来分配GPU的运算资源,如下代码就是按需分配

import tensorflow as tf
import numpy as np

config = tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)
config.gpu_options.allow_growth = True

with tf.Session(config=config) as sess:
  a = tf.placeholder(tf.int32)
  b = tf.placeholder(tf.int32)
  add = tf.add(a, b)
  sum = sess.run(add, feed_dict={a: 3, b: 4})
  print(sum)

使用allow_growth option,刚开始会分配少量的GPU容量,然后按需要慢慢的增加,有与不会释放内存,随意会导致内存碎片。

同样,上述的代码也可以在config创建时指定,

import tensorflow as tf
import numpy as np

gpu_options = tf.GPUOptions(allow_growth=True)
config = tf.ConfigProto(gpu_options=gpu_options)


with tf.Session(config=config) as sess:
  a = tf.placeholder(tf.int32)
  b = tf.placeholder(tf.int32)
  add = tf.add(a, b)
  sum = sess.run(add, feed_dict={a: 3, b: 4})
  print(sum)

我们还可以给gpu分配固定大小的计算资源。

gpu_options = tf.GPUOptions(allow_growth=True, per_process_gpu_memory_fraction=0.5)

上述代码的含义是分配给tensorflow的GPU显存大小为:GPU的实际显存*0.5

tensorflow指定CPU与GPU运算的方法实现

tensorflow指定CPU与GPU运算的方法实现

到此这篇关于tensorflow指定CPU与GPU运算的方法实现的文章就介绍到这了,更多相关tensorflow指定CPU与GPU运算内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python字符串和文件操作常用函数分析
Apr 08 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
Python编程中的for循环语句学习教程
Oct 14 Python
CentOS安装pillow报错的解决方法
Jan 27 Python
python多进程共享变量
Apr 06 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
Jun 21 Python
python生成器推导式用法简单示例
Oct 08 Python
python实现实时视频流播放代码实例
Jan 11 Python
Django model重写save方法及update踩坑详解
Jul 27 Python
python中PyQuery库用法分享
Jan 15 Python
Python多线程实现支付模拟请求过程解析
Apr 21 #Python
安装多个版本的TensorFlow的方法步骤
Apr 21 #Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 #Python
TensorFLow 数学运算的示例代码
Apr 21 #Python
jupyter修改文件名方式(TensorFlow)
Apr 21 #Python
Python基于requests实现模拟上传文件
Apr 21 #Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 #Python
You might like
PHP4(windows版本)中的COM函数
2006/10/09 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
了解重排与重绘
2019/05/29 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
python实现斐波那契递归函数的方法
2014/09/08 Python
python基于ID3思想的决策树
2018/01/03 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
pandas分组聚合详解
2020/04/10 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
Linux操作面试题
2012/05/16 面试题
电子商务专业实习生自我鉴定
2013/09/24 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
雷人标语集锦
2014/06/19 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
集结号观后感
2015/06/08 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫
Docker部署Mysql8的实现步骤
2022/07/07 Servers
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS