Для того, чтобы гарантировать, что тензор потока 2 использует gpu, я хотел бы положиться на Logging_device_placement ([официальная документация] [1]). Я не понимаю его поведение, хотя. Я использую консоль spyder 4.0.1 i python из виртуальной среды: (установка pip python 3.7.0 и тензор-gpu 2.1.0)
Это код, который я запускаю
import tensorflow as tf
tf.debugging.set_log_device_placement(True)
print("\n\nNum GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))
with tf.device('/GPU:0'):
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)
print(c)
При первом запуске кода я получаю ожидаемый результат
Num GPUs Available: 1
Executing op MatMul in device /job:localhost/replica:0/task:0/device:GPU:0
tf.Tensor(
[[22. 28.]
[49. 64.]], shape=(2, 2), dtype=float32)
Во второй раз, когда я запускаю его, больше нет журнала (Выполнение op MatMul на устройстве / задании: localhost / Реплика: 0 / задача: 0 / устройство: GPU: 0 отсутствует)
Num GPUs Available: 1
tf.Tensor(
[[22. 28.]
[49. 64.]], shape=(2, 2), dtype=float32)
Есть идеи, чтобы выводить устройство журнала для каждого отдельного вызова?
Конфигурация: IDE: Spyder 4.0.1 Python 3.7.0 Tensorflow-gpu 2.0.1
Ссылки: [1]: https://www.tensorflow.org/guide/gpu