python中tensorflow-gpu运行语录_TensorFlow中使用GPU

本文介绍了在TensorFlow中如何指定和管理GPU使用,包括通过环境变量、配置文件动态分配和固定比例分配显存,以及使用tf.device指定运算设备。推荐使用allow_soft_placement=True以确保程序的可移植性。
摘要由CSDN通过智能技术生成

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

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

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

import os

os.environ["CUDA_VISIBLE_DEVICES"] = "2" # 指定只是用第三块GPU

2 系统环境变量中指定GPU

# 只使用第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显存

# 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 按固定比例分配显存

# 按照固定的比例分配。

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占用情况如下:

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将运算指定到特定设备上

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上执行。

config = tf.ConfigProto(allow_soft_placement=True)

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

sess.run(...)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值