web-dev-qa-db-ja.com

TensorFlow:GPUで実行されていることを確認する方法

私のTFグラフが実際にGPUで実行されていることを確認する簡単な方法を探しています。

PS。 cuDNNライブラリが使用されていることを確認するのもよいでしょう。

7
Toke Faurby

Op配置を表示するにはいくつかの方法があります。

  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の使用状況を表示します。

9
pfredriksen

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)
5
Harsha Pokkalla

関連する TensorFlowアップストリームの問題 があります。基本的に、Python APIはそのような情報をまだ公開していません。

ただし、C++ APIにはあります。例えば。 tensorflow::KernelsRegisteredForOp()があります。私は小さなPythonラッパーを書いて、それから実装しましたsupported_devices_for_opこここのコミット )。

0
Albert