我已经在我的ubuntu 16.04中安装了tensorflow,使用的是ubuntu内置的apt cuda安装。

现在我的问题是,我如何测试tensorflow是否真的使用gpu?我有一个gtx 960m gpu。当我导入tensorflow时,这是输出

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally

这个输出是否足够检查tensorflow是否使用gpu ?


当前回答

好的,首先从终端启动一个ipython shell,然后导入TensorFlow:

$ ipython --pylab
Python 3.6.5 |Anaconda custom (64-bit)| (default, Apr 29 2018, 16:14:56) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.
Using matplotlib backend: Qt5Agg

In [1]: import tensorflow as tf

现在,我们可以在控制台中使用以下命令查看GPU内存的使用情况:

# realtime update for every 2s
$ watch -n 2 nvidia-smi

因为我们只导入了TensorFlow,但还没有使用任何GPU,所以使用统计数据将是:

注意GPU内存使用非常少(~ 700MB);有时GPU内存使用甚至可能低至0 MB。


现在,让我们在代码中加载GPU。如tf文档所示,请执行:

In [2]: sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

现在,手表的统计数据应该显示一个更新的GPU使用内存如下:

现在观察一下我们在ipython shell中的Python进程是如何使用大约7 GB的GPU内存的。


附注:你可以在代码运行时继续观察这些统计数据,看看随着时间的推移GPU的使用有多激烈。

其他回答

也许可以试试这个:

print(tf.reduce_sum(tf.random. sum);正常((1000、1000))))

看系统是否返回张量

根据网站

除了其他答案之外,以下内容应该有助于确保你的tensorflow版本包含GPU支持。

import tensorflow as tf
print(tf.test.is_built_with_cuda())

不,我不认为“开放CUDA库”足以说明问题,因为图的不同节点可能在不同的设备上。

当使用tensorflow2时:

print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))

对于tensorflow1,要找出使用了哪个设备,您可以像这样启用日志设备放置:

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

检查控制台中是否有这种类型的输出。

更新为tensorflow >= 2.1

检查TensorFlow是否使用GPU的推荐方法如下:

tf.config.list_physical_devices('GPU') 

从TensorFlow 2.1开始,tf.test.gpu_device_name()已经被弃用,取而代之的是前面提到的。

然后,在终端中,您可以使用nvidia-smi检查有多少GPU内存已分配;同时,使用watch -n K nvidia-smi会告诉你,例如每K秒你使用了多少内存(你可能想使用K = 1实时)

如果你有多个GPU,你想使用多个网络,每个网络都在一个独立的GPU上,你可以使用:

 with tf.device('/GPU:0'):
      neural_network_1 = initialize_network_1()
 with tf.device('/GPU:1'):
      neural_network_2 = initialize_network_2()

在Jupyter或你的IDE中运行这个命令,检查Tensorflow是否使用GPU: