Я запускаю типичную 5-слойную сверточную сеть на графическом процессоре в тензорном потоке. Когда я работаю на быстром графическом процессоре 1080 TI, я получаю около 35% использования графического процессора. На более медленном M40 я получаю использование 80% и 97% на мобильном графическом процессоре 970 м.
Я реализовал очередь графического процессора tf.StagingArea и подтвердил предупреждающим сообщением, что StagingArea не пуста перед каждым этапом обучения, она подается асинхронно.
Я запустил профилировщик tensorflow, показанный ниже. Примечательно, что основные операции на графическом процессоре выполняются за 15 мс, но между 15 мс и 40 мс есть промежуток, когда профилировщик ничего не регистрирует. В 40 мс происходят три небольшие операции ЦП, связанные с оптимизатором (обновление глобального шага).
Такое поведение последовательно на каждом шагу.
Есть идеи, почему здесь такая задержка?