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

新手上路,请多包涵

我已经在我的 ubuntu 16.04 中使用了第二个答案和 ubuntu 的内置 apt cuda 安装安装 tensorflow。

现在我的问题是如何测试 tensorflow 是否真的在使用 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 ?

原文由 Tamim Addari 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 480
2 个回答

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

使用 tensorflow2 时:

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

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

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

检查您的控制台以获取此类输出。

原文由 Yao Zhang 发布,翻译遵循 CC BY-SA 4.0 许可协议

除了使用 sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 在其他答案以及官方 TensorFlow 文档 中概述之外,您可以尝试为 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”,因为在此过程中没有注册符合该规范的设备


最近TF中出现了几个有用的函数:

您还可以检查会话中的可用设备:

 with tf.Session() as sess:
  devices = sess.list_devices()

devices 会给你类似的东西

[_DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:CPU:0, CPU, -1, 4670268618893924978),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 17179869184, 6127825144471676437),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_GPU:0, XLA_GPU, 17179869184, 16148453971365832732),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:0, TPU, 17179869184, 10003582050679337480),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:1, TPU, 17179869184, 5678397037036584928)

原文由 Salvador Dali 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题