Tensorflow работает с использованием графического процессора 35%, профилировщик показывает странную активность процессора

Я запускаю типичную 5-слойную сверточную сеть на графическом процессоре в тензорном потоке. Когда я работаю на быстром графическом процессоре 1080 TI, я получаю около 35% использования графического процессора. На более медленном M40 я получаю использование 80% и 97% на мобильном графическом процессоре 970 м.

Я реализовал очередь графического процессора tf.StagingArea и подтвердил предупреждающим сообщением, что StagingArea не пуста перед каждым этапом обучения, она подается асинхронно.

Я запустил профилировщик tensorflow, показанный ниже. Примечательно, что основные операции на графическом процессоре выполняются за 15 мс, но между 15 мс и 40 мс есть промежуток, когда профилировщик ничего не регистрирует. В 40 мс происходят три небольшие операции ЦП, связанные с оптимизатором (обновление глобального шага).

Такое поведение последовательно на каждом шагу.

Есть идеи, почему здесь такая задержка?

введите здесь описание изображения


person David Parks    schedule 01.10.2017    source источник


Ответы (1)


Есть способ определить, что происходит на процессоре внутри этого интервала с помощью Intel VTune Amplifier (инструмент платный, но есть бесплатные полнофункциональные академические и пробные версии). Вы можете использовать рецепт из этой статьи, чтобы импортировать данные временной шкалы в Intel VTune Amplifier и анализировать их там. Вам понадобится группировка Frame Domain / Source Function. Разверните строку [Домен без фрейма — вне любого фрейма], и вы получите список горячих точек, происходящих в интересующем вас интервале.

person Alexandr Kurylev    schedule 03.10.2017