【问题标题】:TensorFlow: How to verify that it is running on GPUTensorFlow:如何验证它是否在 GPU 上运行
【发布时间】:2017-07-20 12:43:37
【问题描述】:

我正在寻找一种简单的方法来验证我的 TF 图形是否确实在 GPU 上运行。

PS。验证是否使用了 cuDNN 库也很好。

【问题讨论】:

标签: tensorflow gpu cudnn


【解决方案1】:

有几种方法可以查看操作位置。

  1. 将 RunOptions 和 RunMetadata 添加到会话调用中,并在 Tensorboard 中查看操作和计算的位置。在此处查看代码:https://www.tensorflow.org/get_started/graph_viz

  2. 在会话 ConfigProto 中指定 log_device_placement 选项。这会记录到控制台操作所在的设备。 https://www.tensorflow.org/api_docs/python/tf/ConfigProto

  3. 使用 nvidia-smi 在终端查看 GPU 使用情况。

【讨论】:

  • 请注意,记录元数据非常耗费资源,只能用于调试。
【解决方案2】:

在 Python 中导入 TF 时

import tensorflow as tf

您将获得这些指示 CUDA 库使用情况的日志

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

此外,当您在 Config Proto 中构建图表并使用 log_device_placement 运行会话时,您将获得这些日志(表明它找到了 GPU 设备):

I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:910] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties: 
name: GeForce GTX 1060 6GB
major: 6 minor: 1 memoryClockRate (GHz) 1.759
pciBusID 0000:01:00.0
Total memory: 5.93GiB
Free memory: 4.94GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1060 6GB, pci bus id: 0000:01:00.0)

【讨论】:

  • 我得到与上述相同的输出。但是模型用于训练的数量与 CPU 相同。不确定,我做错了什么。使用 DNNRegressor Estimator,相同的代码无需任何修改就在 CPU 和 GPU 上运行,因为我了解到,如果 GPU 可用,Estimtors 默认选择 GPU 执行。有什么办法吗??
  • 你能看到 GPU 的使用情况吗?做“观看nvidia-smi”。查看内存使用情况和 GPU 波动性。
  • 这里详细解释了我的问题。 stackoverflow.com/questions/46648484/…
【解决方案3】:

有一个相关的TensorFlow upstream issue。基本上它说 Python API 还没有公开这些信息。

但 C++ API 可以。例如。有tensorflow::KernelsRegisteredForOp()。我围绕它编写了一个小的 Python 包装器,然后实现了 supported_devices_for_op here(在 this commit 中)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 2019-01-14
    • 2018-04-10
    • 2017-12-03
    • 2018-12-10
    • 2018-04-12
    相关资源
    最近更新 更多