Как я могу уменьшить очень длительную задержку инициализации CUDA?
Инициализация CUDA во вновь созданном процессе может занять довольно много времени - полсекунды или более на многих современных машинах серверного уровня. Как объясняет@RobertCrovella, инициализация CUDA обычно включает создание модели унифицированной памяти, которая включает в себя гармонизацию карт памяти устройства и хоста. Это может занять довольно много времени для машин с большим объемом памяти; и могут быть другие факторы, способствующие этой длительной задержке.
Этот эффект становится довольно раздражающим, когда вы хотите запустить последовательность процессов, использующих CUDA, которые не используют сложные отображения виртуальной памяти: каждый из них должен ждать своего долгого ожидания - несмотря на то, что "по сути", они могут просто повторно использовать ли инициализации CUDA в последний раз (возможно, с небольшим количеством кода очистки).
Теперь, очевидно, если вы как-то переписали код для всех этих процессов для выполнения в одном процессе - это сэкономит вам эти долгие затраты на инициализацию. Но разве нет более простого подхода? Как насчет:
- Передача одинаковой информации о состоянии / контекста CUDA между процессами?
- Сказать CUDA полностью игнорировать память хоста?
- Делать гармонизацию унифицированной памяти более ленивой, чем сейчас, чтобы это происходило только в той степени, в которой это действительно необходимо?
- Запуск CUDA с отключенной объединенной памятью?
- Держать какой-нибудь процесс демона на стороне и привязать его к уже инициализированному состоянию CUDA?
1 ответ
То, о чем вы спрашиваете, уже существует. Он называется MPS (MULTI-PROCESS SERVICE) и в основном поддерживает постоянную работу одного контекста GPU с помощью процесса демона, который эмулирует API драйвера. Исходное целевое приложение - MPI, но оно делает то, что вы задумали.
Узнайте больше здесь:
https://docs.nvidia.com/deploy/pdf/CUDA_Multi_Process_Service_Overview.pdf
http://on-demand.gputechconf.com/gtc/2015/presentation/S5584-Priyanka-Sah.pdf