webentwicklung-frage-antwort-db.com.de

TensorFlow: So überprüfen Sie, ob es auf der GPU läuft

Ich suche nach einem einfachen Weg, um zu überprüfen, ob meine TF-Diagramme tatsächlich auf der GPU laufen. 

PS. Es wäre auch schön zu überprüfen, ob die Bibliothek cuDNN verwendet wird.

7
Toke Faurby

Es gibt verschiedene Möglichkeiten, die Op-Platzierung anzuzeigen.

  1. Fügen Sie dem Sitzungsaufruf RunOptions und RunMetadata hinzu und zeigen Sie die Platzierung von Operationen und Berechnungen in Tensorboard an. Code finden Sie hier: https://www.tensorflow.org/get_started/graph_viz

  2. Geben Sie die Option log_device_placement in einer ConfigProto-Sitzung an. Dadurch wird an der Konsole protokolliert, auf welchem ​​Gerät die Vorgänge abgelegt werden. https://www.tensorflow.org/api_docs/python/tf/ConfigProto

  3. Anzeigen der GPU-Nutzung im Terminal mithilfe von nvidia-smi.

9
pfredriksen

Wenn Sie TF in Python importieren 

import tensorflow as tf

Sie erhalten diese Protokolle, die die Verwendung von CUDA-Bibliotheken anzeigen

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

Wenn Sie in Config Proto ein Diagramm erstellen und eine Sitzung mit log_device_placement ausführen, erhalten Sie diese Protokolle (zeigt, dass ein GPU-Gerät gefunden wurde):

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

Es gibt ein verwandtes TensorFlow-Upstream-Problem . Grundsätzlich heißt es, dass die Python-API solche Informationen noch nicht verfügbar macht.

Die C++ - API tut dies jedoch. Z.B. da ist tensorflow::KernelsRegisteredForOp(). Ich habe einen kleinen Python-Wrapper darüber geschrieben und dann supported_devices_for_ophere (in this commit ) implementiert.

0
Albert