373 votes

Comment savoir si tensorflow est à l’aide de l’accélération gpu d’à l’intérieur de la coquille de python ?

J'ai installé tensorflow dans mon ubuntu 16.04 à l'aide de la deuxième réponse ici avec ubuntu builtin apt cuda de l'installation.

Maintenant, ma question est comment puis-je tester si tensorflow est vraiment à l'aide de gpu? J'ai une gtx 960m gpu. Quand j' import tensorflow c'est la sortie

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

Est-ce de sortie suffisant de vérifier si tensorflow est à l'aide de gpu ?

353voto

Yao Zhang Points 2512

Non, je ne pense pas que « ouvrir la bibliothèque CUDA » est suffisant de dire, parce que les différents nœuds du graphe peuvent être sur différents appareils.

Pour savoir quel périphérique est utilisé, vous pouvez activer l’emplacement d’appareil journal comme ceci :

Vérifiez votre console pour ce type de sortie.

293voto

Salvador Dali Points 11667

En dehors de l'aide sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) ce qui est décrit dans d'autres réponses, aussi bien que dans l'officiel TensorFlow de la documentation, vous pouvez essayer d'attribuer un calcul pour le gpu et de voir si vous avez une erreur.

import tensorflow as tf
with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)

with tf.Session() as sess:
    print (sess.run(c))

Ici

  • "/cpu:0": Le PROCESSEUR de votre machine.
  • "/gpu:0": Le GPU de votre machine, si vous en avez un.

Si vous avez un gpu et peut l'utiliser, vous verrez le résultat. Sinon, vous verrez une erreur avec une longue stacktrace. En fin de compte, vous aurez quelque chose comme ceci:

Impossible d'assigner un dispositif de nœud 'MatMul': ne Peut pas satisfaire explicite spécification du périphérique '/appareil:GPU:0", car aucune des dispositifs de couplage qui cahier des charges sont enregistrés dans ce processus


Récemment, quelques fonctions utiles est apparu en TF:

Vous pouvez également rechercher les périphériques disponibles dans la session:

with tf.Session() as sess:
  devices = sess.list_devices()

devices va vous renvoyer quelque chose comme

[_DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:CPU:0, CPU, -1, 4670268618893924978),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 17179869184, 6127825144471676437),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_GPU:0, XLA_GPU, 17179869184, 16148453971365832732),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:0, TPU, 17179869184, 10003582050679337480),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:1, TPU, 17179869184, 5678397037036584928)

196voto

Sheraz Points 561

Morceau de code suivant devrait vous donner tous les appareils disponibles pour tensorflow.

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

Exemple De Sortie

[nom de: "/cpu:0" device_type: "CPU" memory_limit: 268435456 localité { } incarnation: 4402277519343584096,

nom: "/gpu:0" device_type: "GPU" memory_limit: 6772842168 localité { bus_id: 1 } incarnation: 7471795903849088328 physical_device_desc: "l'appareil: 0, nom: GeForce GTX 1070, bus pci id: 0000:05:00.0" ]

105voto

Ishan Bhatt Points 817

Je pense qu’il y a un moyen plus facile d’y parvenir.

Il imprime généralement comme

Cela semble plus facile pour moi, plutôt que ces journaux détaillés.

30voto

himanshurobo Points 359

Cela confirmera que tensorflow à l’aide de GPU tout en formation aussi ?

Code

Sortie

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X