Я начал изучать гетерогенное параллельное программирование с использованием CUDA (будет использоваться рабочий стол, если это имеет значение), и у меня есть вопрос, на который я пока не нашел ответа. Можно ли использовать видеокарту для gpgpu во время игры в 3D? Если да, то насколько большими будут затраты на производительность? И как их измерить? Запуск моего приложения с игрой и без нее в фоновом режиме не кажется надежным решением.
Насколько я знаю, видеокарта занята рендерингом сцен и прочим, но я не знаю, как именно это работает. Устройство заблокировано игровым приложением от использования для gpgpu, пока пользователь не выйдет из игры? Или он просто получает асинхронные вызовы для выполнения таких задач:
- устройство бесплатно;
- игровое приложение запрашивает у устройства рендеринг сцены;
- устройство заблокировано игрой, выполните задание, после чего оно снова бесплатно;
- мое приложение просит устройство сделать что-то gpgpu;
- устройство заблокировано моим приложением, выполните задание, после чего оно снова бесплатно,
- и так далее...
В качестве другого решения: можно ли использовать отдельную видеокарту только для этой цели (может быть, мне нужно предотвратить ее использование игровым приложением)?