前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TensorFlow中使用GPU

TensorFlow中使用GPU

作者头像
用户1432189
发布2020-02-19 16:29:39
4.2K0
发布2020-02-19 16:29:39
举报
文章被收录于专栏:zingpLiuzingpLiu

TensorFlow默认会占用设备上所有的GPU以及每个GPU的所有显存;如果指定了某块GPU,也会默认一次性占用该GPU的所有显存。可以通过以下方式解决:

1 Python代码中设置环境变量,指定GPU

本文所有代码在tensorflow 1.12.0中测试通过。

代码语言:javascript
复制
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "2"  # 指定只是用第三块GPU

2 系统环境变量中指定GPU

代码语言:javascript
复制
# 只使用第2块GPU,在demo_code.py,机器上的第二块GPU变成”/gpu:0“,不过在运行时所有的/gpu:0的运算将被放到第二块GPU上
CUDA_VISIBLE_DEVICES=1 python demo_code.py

#只使用第一块GPU和第二块GPU
CUDA_VISIBLE_DEVICES=0,1 python demo_code.py

3 动态分配GPU显存

代码语言:javascript
复制
# allow_soft_placement=True 没有GPU的话在CPU上运行
config = tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)

config.gpu_options.allow_growth = True   #  按需分配显存

with tf.Session(config=config) as sess:
    sess.run(...)

4 按固定比例分配显存

代码语言:javascript
复制
# 按照固定的比例分配。
config = tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)
# 以下代码会占用所有可使用的GPU的40%显存
config.gpu_options.per_process_gpu_memory_fraction = 0.4

with tf.Session(config=config) as sess:
    sess.run(...)

在我的设备中设置后GPU占用情况如下:

代码语言:javascript
复制
gz_6237_gpu             Sat Feb 15 23:01:56 2020  418.87.00
[0] GeForce RTX 2080 Ti | 43'C,   0 % |  4691 / 10989 MB | dc:python/1641(4681M)

5 通过tf.device将运算指定到特定设备上

代码语言:javascript
复制
with tf.device("/gpu:0"):
    b = tf.Variable(tf.zeros([1]))
    W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
    y = tf.matmul(W, x_data) + b

这种方式不推荐。TF的kernel中国定义了哪些操作可以跑在GPU上,哪些不可以,因此强制指定GPU会降低程序的可移植性。

推荐的做法是:在创建会话时,指定参数allow_soft_placement=True;这样如果运算无法在GPU上执行,TF会自动将它放在CPU上执行。

代码语言:javascript
复制
config = tf.ConfigProto(allow_soft_placement=True)

with tf.Session(config=config) as sess:
    sess.run(...)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 Python代码中设置环境变量,指定GPU
  • 2 系统环境变量中指定GPU
  • 3 动态分配GPU显存
  • 4 按固定比例分配显存
  • 5 通过tf.device将运算指定到特定设备上
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档