【问题标题】:Tensorflow operationseemingly not using GPUTensorFlow 操作似乎不使用 GPU
【发布时间】:2020-10-12 09:32:11
【问题描述】:

我需要执行多次平均大量长向量的工作,我希望在我的 GPU 上完成。

在运行时监控 nvtop 和 htop,我发现 GPU(在我训练 Keras 模型时总是显示最高活动)在这些操作中根本没有被使用,而 CPU 使用在这些操作期间激增。

我已经在下面的代码 sn-p 中模拟了它(试图最小化非 tf-work)。

我做错了什么?

import tensorflow as tf
from tensorflow.math import add_n, add, scalar_mul
import numpy as np

tf.debugging.set_log_device_placement(True)
sess = tf.compat.v1.Session(config=config) 
tf.compat.v1.keras.backend.set_session(sess)
os.environ["CUDA_VISIBLE_DEVICES"]="1"

#Make a random numpy matrix
vecs=np.random.rand(100, 300)

with sess.as_default():
    with tf.device('/GPU:0'):
        for _ in range(1000):
            #vecs=np.random.rand(100, 300)
            tf_vecs=tf.Variable(vecs, dtype=tf.float64)
            tf_invlgt=tf.Variable(1/np.shape(vecs)[0],dtype=tf.float64)
            vectors=tf.unstack(tf_vecs)
            sum_vecs=add_n(vectors)
            mean_vec=tf.Variable(scalar_mul(tf_invlgt, sum_vecs))

谢谢

迈克尔

【问题讨论】:

    标签: tensorflow gpu cpu


    【解决方案1】:

    我可能错了,但 cuda_visible_devices 应该是“0”吗

    import os
    os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
    os.environ["CUDA_VISIBLE_DEVICES"]="0"
    

    见github评论here

    如果还是不行,还可以加一小段代码,检查tensorflow是否能看到gpu设备:

    from tensorflow.python.client import device_lib
    
    def get_available_gpus():
        local_device_protos = device_lib.list_local_devices()
        return [x.name for x in local_device_protos if x.device_type == 'GPU']
    

    这是提到here

    【讨论】:

      猜你喜欢
      • 2017-05-02
      • 2020-04-20
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      相关资源
      最近更新 更多