За замечание drpng по Tensorflow: использование очереди FIFO для кода, работающего на графических процессорах Я не ожидал бы, что FIFOQueue будет планировать на GPU, и действительно обернуть ваш код в файл .py (для просмотра TFвывод в журнал) и размещение устройства регистрации подтверждают, что даже первый (успешный) график запускается на ЦП.
В одной ячейке выполняется:
%%writefile go.py
import tensorflow as tf
config = tf.ConfigProto()
#config.allow_soft_placement=True
config.gpu_options.allow_growth = True
config.log_device_placement=True
def go():
Q = tf.FIFOQueue(3, tf.float16)
enq_many = Q.enqueue_many([[0.1, 0.2, 0.3],])
with tf.device('/device:GPU:0'):
with tf.Session(config=config) as sess:
sess.run(enq_many)
print(Q.size().eval())
go()
go()
И в другой ячейке выполните вышеупомянутое как:
!python3 go.py
и наблюдайте за размещением.
Раскомментируйте назначение allow_soft_placement
, чтобы аварийное завершение исчезло.
(Я не знаю, почему первое выполнение удается даже влицо не-мягкого размещения при запросе FIFOQueue планировать на GPU явно, как в «первом разе» вашего кода)