Tensorflow操作似乎不使用GPU

时间:2020-10-12 09:32:11

标签: tensorflow gpu cpu

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

在运行时监视nvtop和htop,我发现在这些操作中根本没有使用GPU(在我训练Keras模型时总是显示最活跃的状态),而在这些操作中CPU的使用激增。

我已经在下面的代码段中对其进行了仿真(试图将非tf工作降至最低)。

我在做什么错了?

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))

谢谢

迈克尔

1 个答案:

答案 0 :(得分:0)

我可能是错的,但是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