Профилирование python -потока-1,14 - PullRequest
2 голосов
/ 27 февраля 2020

Я профилирую свое обучение тензорному потоку и обнаружил, что некоторые операции выполнялись на CPU вместо GPU.

При форсировании устройства с помощью with graph.device("/gpu:0") операция вырезания вызвала ошибку, говорящую

Не удалось удовлетворить явную спецификацию устройства '/ device: GPU: 0', поскольку не доступно поддерживаемое ядро ​​для устройств с графическим процессором.

Я "решил" его, принудив устройство с помощью with graph.device("/device:XLA_GPU:0") для указанной операции нарезки c. Однако при профилировании процесса я получаю (слишком) много переводов (MemcpyHtoD и MemcpyDtoH). Кроме того, даже все узлы графика назначены на GPU (или XLA_GPU для операции среза), похоже, что некоторые переменные располагаются на CPU (см. Adam/VariableV2 на изображении ниже происходит сразу после MemcpyHtoD и сопровождается MemcpyDtoH)!

enter image description here

У меня проблемы с исследованием и пониманием того, как тензор потока обрабатывает данные, операции и устройство, на котором они выполняются.

  • Почему тензор потока не может выполнять некоторые очень простые c операции (например, нарезку) на графическом процессоре?
  • Почему передачи, необходимые между хостом и устройством для Adam/VariableV2?
  • Требуется ли передача данных между GPU и XLA_GPU?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...