Более медленное время вывода при использовании нескольких параллельных процессов на одном и том же графическом процессоре в tenorflow C ++ - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь выполнить несколько параллельных выводов на одном и том же графическом процессоре.Для этого я загружал график несколько раз в разных процессах, потому что я нахожусь в системе реального времени, и я не могу пакетировать ввод.Среднее время вывода только для одного работника составляет около 0,02 секунды, в то время как для нескольких работников - более 0,03, пропорционально росту числа процессов.Я установил частоту памяти GPU для каждого процесса на 0,02 и разрешил рост до false, что-либо выше этого предела не улучшило бы скорость вывода.

Теоретически, если графический процессор сможет распараллеливаться, процесс должен быть во много раз быстрее, чем количество рабочих, или, по крайней мере, близко.К сожалению, время вывода медленнее, пока я увеличиваю количество работников.Я получаю общее увеличение скорости от разделения набора данных в 1,5-2 раза быстрее, но среднее время вывода все еще медленнее.

Нет никаких аппаратных ограничений или узких мест ни у GPU, ни уПроцессор, как видно на следующем изображении https://imgur.com/a/H8cmrfc

Эталон можно увидеть на: https://imgur.com/a/K5zHK0Z

Теперь я думаю, что, возможно, CUDA не разрешает распараллеливание или что-то не такв моем коде.Кто-нибудь имеет представление о том, в чем может быть проблема?

Os Платформа: Linux 16.04 Tensorflow C ++ установлена ​​из исходного кода Tensorflow версия 1.12 CUDA / cudnn версия 9.2 / 7.1 GPU Nvidia GeForce GTX 1080 Ti

...