• tensorflow指定CPU与GPU运算


    tensorflow指定CPU与GPU运算

    一、总结

    一句话总结:

    with tf.device('/cpu:0'):

    二、tensorflow指定CPU与GPU运算

    转自或参考:TensorFlow——tensorflow指定CPU与GPU运算
    https://www.cnblogs.com/baby-lily/p/10924444.html

    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

     
  • 相关阅读:
    高级数据结构(一)----并查集
    分享复杂的线性动态规划问题(一)
    分享利用微信公众号做淘宝客返利机器人系统的3个技巧
    淘宝京东拼多多三合一cms源码怎么搭建优惠券网站
    微信公众号怎么查京东优惠券之3步搭建自己的找券机器人
    【职场提示】什么时间提出涨薪资更合适?
    项目管理之Git
    快速排序,数组去重
    信息安全风险治理——制度与标准篇
    浅谈漏洞管理实践
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13457328.html
Copyright © 2020-2023  润新知