How to tell if tensorflow is using gpu acceleration from inside python shell?

How to tell if tensorflow is using gpu acceleration from inside python shell?

No, I dont think open CUDA library is enough to tell, because different nodes of the graph may be on different devices.

When using tensorflow2:

print(Num GPUs Available: , len(tf.config.list_physical_devices(GPU)))

For tensorflow1, to find out which device is used, you can enable log device placement like this:

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Check your console for this type of output.

src=https://i.stack.imgur.com/RtRiB.png/

Apart from using sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) which is outlined in other answers as well as in the official TensorFlow documentation, you can try to assign a computation to the gpu and see whether you have an error.

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))

Here

  • /cpu:0: The CPU of your machine.
  • /gpu:0: The GPU of your machine, if you have one.

If you have a gpu and can use it, you will see the result. Otherwise you will see an error with a long stacktrace. In the end you will have something like this:

Cannot assign a device to node MatMul: Could not satisfy explicit
device specification /device:GPU:0 because no devices matching that
specification are registered in this process


Recently a few helpful functions appeared in TF:

You can also check for available devices in the session:

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

devices will return you something like

[_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)

How to tell if tensorflow is using gpu acceleration from inside python shell?

Following piece of code should give you all devices available to tensorflow.

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

Sample Output

[name: /cpu:0
device_type: CPU
memory_limit: 268435456
locality {
}
incarnation: 4402277519343584096,

name: /gpu:0
device_type: GPU
memory_limit: 6772842168
locality {
bus_id: 1
}
incarnation: 7471795903849088328
physical_device_desc: device: 0, name: GeForce GTX 1070, pci bus id: 0000:05:00.0
]

Leave a Reply

Your email address will not be published. Required fields are marked *