如何判断tensorflow是否从python shell里面使用gpu加速?

我已经在我的ubuntu 16.04安装了tensorflow使用第二个答案在这里与Ubuntu的内置apt cuda安装。

现在我的问题是如何testingtensorflow是否真的使用GPU? 我有一个gtx 960m gpu。 当我import 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?

不,我不认为“打开CUDA库”是不够的,因为graphics的不同节点可能在不同的设备上。

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

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

除了使用sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) ,在其他答案以及TF官方文档中概述,你可以尝试分配一个计算到GPU,看看你是否有一个错误。

 import tensorflow as tf with tf.device('/gpu:0'): a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b') c = tf.matmul(a, b) with tf.Session() as sess: print (sess.run(c)) 

这里

  • “/ cpu:0”:你的机器的CPU。
  • “/ gpu:0”:你机器的GPU,如果你有的话。

如果你有一个GPU,可以使用它,你会看到结果。 否则,你会看到一个长堆栈跟踪错误。 最后你会有这样的事情:

无法将设备分配给“MatMul”节点:无法满足显式设备规范“/ device:GPU:0”,因为在此过程中没有注册符合该规范的设备

这将确认在训练时使用GPU的张量还?

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

产量

 I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties: name: GeForce GT 730 major: 3 minor: 5 memoryClockRate (GHz) 0.9015 pciBusID 0000:01:00.0 Total memory: 1.98GiB Free memory: 1.72GiB I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0: YI tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0) Device mapping: /job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0 I tensorflow/core/common_runtime/direct_session.cc:255] Device mapping: /job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0 

我更喜欢使用nvidia-smi来监视GPU的使用情况。 如果在开始编程时它显着上升,则说明您的tensorflow正在使用GPU。

在Jupyter中运行以下内容,

 import tensorflow as tf sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 

如果你已经正确地设置了你的环境,你会在你运行“jupyter notebook”的terminal上得到以下输出

 2017-10-05 14:51:46.335323: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Quadro K620, pci bus id: 0000:02:00.0) Device mapping: /job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0 2017-10-05 14:51:46.337418: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\direct_session.cc:265] Device mapping: /job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0 

你可以在这里看到我使用的是Nvidia Quodro K620的TensorFlow。