Възможно ли е да използвате gpu карта за gpgpu, докато играете игра?

Започнах да уча хетерогенно паралелно програмиране с помощта на CUDA (ще се използва десктоп, в случай че има значение) и имам въпрос, на който все още не мога да намеря отговор. Може ли gpu картата да се използва за gpgpu, докато играете 3D игра? Ако да, колко големи биха били разходите за изпълнение? И как да ги измерим? Изпълнението на приложението ми със и без игра във фонов режим не изглежда като надеждно решение.

AFAIK, gpu картата е заета с рендиране на сцени и други неща, но не знам как точно работи. Устройството заключено ли е от приложението за игра, за да не се използва за gpgpu, докато потребителят излезе от играта? Или просто получава асинхронни повиквания, за да изпълнява задачи като:

  • устройството е безплатно;
  • приложението за игра иска от устройството да изобрази сцена;
  • устройството е заключено от играта, свършете работата, след което отново е безплатно;
  • приложението ми иска от устройството да направи някои gpgpu;
  • устройството е заключено от моето приложение, свърши работата, след това отново е безплатно,
  • и така нататък...

Като друго решение: възможно ли е да използвам отделна gpu карта само за тази цел (може би трябва да предотвратя използването й от приложението за игра)?


person Nikolay Bobovnikov    schedule 22.01.2015    source източник
comment
Това е интересен въпрос, но тъй като не става дума за конкретен програмен проблем (т.е. код, който пишете в момента), той е извън темата за Stack Overflow - може би трябва вместо това да опитате да попитате на GameDev ?   -  person GoBusto    schedule 22.01.2015
comment
Ако графичният процесор беше заключен при рендиране на OpenGL приложение, тогава нямаше да можете да стартирате две OpenGL приложения едновременно, което определено не е така. Можете също да стартирате OpenGL и OpenCL заедно; CL има начини за комуникация с GL. Последните версии на GL имат и изчислителни шейдъри.   -  person Colonel Thirty Two    schedule 22.01.2015
comment
Можехте да опитате това за времето, което сте прекарали, за да напишете този въпрос. Изпълнението на GPGPU ядра на GPU, към който е свързан мониторът, обикновено прави работния плот донякъде бавен. Степента на забавяне зависи от времето за изпълнение на ядрото. Ефектът вероятно ще бъде доста драстичен в игрите. Можете да използвате отделен GPU. Уверете се, че не активирате SLI/Crossfire.   -  person void_ptr    schedule 22.01.2015


Отговори (1)


Може ли gpu картата да се използва за gpgpu, докато играете 3D игра?

да (Опитай.)

Ако да, колко големи биха били разходите за изпълнение?

На този въпрос не може да се отговори без много подробности, като например колко памет и изчисления изисква приложението cuda, какъв вид GPU, каква игра и т.н.

И как да ги измерим?

Не би трябвало да е трудно да се измери някакво общо въздействие. Размерът на паметта може да се наблюдава с инструмент като GPU-Z или nvidia-smi. Може би можете да наблюдавате честотата на кадрите във вашата игра, за да оцените въздействието върху производителността там. И можете да сравните вашето компютърно приложение със и без игра.

Устройството заключено ли е от приложението за игра, за да не се използва за gpgpu, докато потребителят излезе от играта?

Не, но графичният процесор трябва да превключва контекстно между игрови задачи и изчислителни задачи. Така, например, вашата игра ще спре да работи, докато CUDA ядрата се изпълняват. Поради това, ако искате да стартирате игра едновременно с изчислително приложение, трябва да сте сигурни, че ще поддържате изчислителните си ядра много кратки. Между извикванията на ядрото двигателът на играта ще „наваксва“.

person Robert Crovella    schedule 29.01.2015