zoukankan      html  css  js  c++  java
  • TensorFlow GPU 的使用

    一、TensorFlow 设备分配

    1、设备分配规则

    If a TensorFlow operation has both CPU and GPU implementations, the GPU devices will be given priority when the operation is assigned to a device.

    2、手动指定设备分配

    • 如果你不想让系统自动为 operation 分配设备, 而是自己手动指定, 可以用 with tf.device 创建一个设备环境, 这个环境下的 operation 都统一运行在指定的设备上.
    • 代码示例如下:
     1 # op 在 cpu 上运算
     2 with tf.device('/cpu:0'):
     3       a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
     4       b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
     5 
     6 # op 在 gpu 上运算
     7 with tf.device('/device:GPU:2'):
     8   a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
     9   b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    10 
    11 # op 在 gpus 上运算
    12 for d in ['/device:GPU:2', '/device:GPU:3']:
    13   with tf.device(d):
    14     a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3])
    15     b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2])

    二、TensorFlow GPU 配置

    1、指定可以被看见的GPU设备

    1 import os
    2 
    3 # 默认情况,TF 会占用所有 GPU 的所有内存, 我们可以指定
    4 # 只有 GPU0 和 GPU1 这两块卡被看到,从而达到限制其使用所有GPU的目的
    5 os.environ['CUDA_VISIBLE_DEVICES'] = '0, 1'  
    6 
    7 # 打印 TF 可用的 GPU
    8 print os.environ['CUDA_VISIBLE_DEVICES']
    9 >>> 0, 1

     2、限定使用显存的比例

     1 # 在开启对话session前,先创建一个 tf.ConfigProto() 实例对象
     2 # 通过 allow_soft_placement 参数自动将无法放在 GPU 上的操作放回 CPU
     3 gpuConfig = tf.ConfigProto(allow_soft_placement=True)
     4 
     5 # 限制一个进程使用 60% 的显存
     6 gpuConfig.gpu_options.per_process_gpu_memory_fraction = 0.6
     7 
     8 # 把你的配置部署到session
     9 with tf.Session(config=gpuConfig) as sess:
    10   pass
    11 
    12 这样,如果你指定的卡的显存是8000M的话,你这个进程只能用4800M。

    3、需要多少拿多少

     1 # 在开启对话session前,先创建一个 tf.ConfigProto() 实例对象
     2 # 通过 allow_soft_placement 参数自动将无法放在 GPU 上的操作放回 CPU
     3 gpuConfig = tf.ConfigProto(allow_soft_placement=True)
     4 
     5 # 运行时需要多少再给多少
     6 gpuConfig.gpu_options.allow_growth = True  
     7 
     8 # 把你的配置部署到session
     9 with tf.Session(config=gpuConfig) as sess:
    10      pass

      4、GPU 使用总结

    1 import os
    2 os.environ['CUDA_VISIBLE_DEVICES'] = '0, 1'  
    3 
    4 gpuConfig = tf.ConfigProto(allow_soft_placement=True)
    5 gpuConfig.gpu_options.allow_growth = True  
    6 
    7 with tf.Session(config=gpuConfig) as sess:
    8      pass
  • 相关阅读:
    [BZOJ1659][Usaco2006 Mar]Lights Out 关灯
    [BZOJ1789][BZOJ1830][Ahoi2008]Necklace Y型项链
    [HDU5015]233 Matrix
    [BZOJ1786][BZOJ1831]逆序对
    各种音视频编解码学习详解
    Methods and systems for sharing common job information
    在nodejs使用Redis缓存和查询数据及Session持久化(Express)
    jQuery 遍历 – 同胞(siblings)
    jQuery 遍历 – 后代
    jQuery 遍历 – 祖先
  • 原文地址:https://www.cnblogs.com/tectal/p/9048184.html
Copyright © 2011-2022 走看看