Je cherche un moyen simple de vérifier que mes graphes TF
fonctionnent réellement sur le GPU.
PS. Il serait également intéressant de vérifier que la bibliothèque cuDNN
est utilisée.
Il y a plusieurs façons de voir le placement op.
Ajoutez RunOptions et RunMetadata à l'appel de session et affichez l'emplacement des op et des calculs dans Tensorboard. Voir le code ici: https://www.tensorflow.org/get_started/graph_viz
Spécifiez l'option log_device_placement dans une session ConfigProto. Cela enregistre la console sur le périphérique sur lequel les opérations sont placées. https://www.tensorflow.org/api_docs/python/tf/ConfigProto
Affichez l'utilisation du processeur graphique dans le terminal à l'aide de nvidia-smi.
Lorsque vous importez TF en Python
import tensorflow as tf
Vous obtiendrez ces journaux qui indiquent l'utilisation des bibliothèques 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
De même, lorsque vous créez un graphique et exécutez une session avec log_device_placement dans Config Proto, vous obtenez les journaux suivants (indiquant qu’il a trouvé un périphérique 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)
Il existe un problème connexe TensorFlow en amont . En gros, cela signifie que l'API Python n'expose pas encore de telles informations.
L'API C++ cependant le fait. Par exemple. il y a tensorflow::KernelsRegisteredForOp()
. J'ai écrit un petit wrapper Python autour de cela, puis j'ai implémenté supported_devices_for_op
here (dans this commit ).