web-dev-qa-db-fra.com

TensorFlow: Comment vérifier qu'il fonctionne sur le processeur graphique

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.

7
Toke Faurby

Il y a plusieurs façons de voir le placement op.

  1. 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

  2. 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

  3. Affichez l'utilisation du processeur graphique dans le terminal à l'aide de nvidia-smi.

9
pfredriksen

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

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_ophere (dans this commit ).

0
Albert