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 修改文件指定行的方法
May 15 Python
Python和GO语言实现的消息摘要算法示例
Mar 10 Python
Python下的twisted框架入门指引
Apr 15 Python
python让列表倒序输出的实例
Jun 25 Python
Python字符串的全排列算法实例详解
Jan 07 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
Python pip install如何修改默认下载路径
Apr 29 Python
django中related_name的用法说明
May 20 Python
Python Switch Case三种实现方法代码实例
Jun 18 Python
python 操作excel表格的方法
Dec 05 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 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
PHP的异常处理类Exception的使用及说明
2012/06/13 PHP
如何使用php输出时间格式
2013/08/31 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
JavaScript高级程序设计 阅读笔记(二十) js错误处理
2012/08/14 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
react-router实现按需加载
2017/05/09 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
vue引用js文件的多种方式(推荐)
2018/05/17 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
Django中的Signal代码详解
2018/02/05 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
Python常用特殊方法实例总结
2019/03/22 Python
python中setuptools的作用是什么
2020/06/19 Python
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
普通员工辞职信
2014/01/17 职场文书
对教师的评语
2014/04/28 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
社区好人好事材料
2014/12/26 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
党支部培养考察意见
2015/06/02 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers