Obecnie wiele laptopów jest wyposażonych w 2 układy GPU - jeden o wysokiej wydajności i energooszczędny (mniej wydajny). Większość aplikacji, z których korzystam na laptopie, działa ze zintegrowanym (energooszczędnym) układem GPU, ale niektóre z nich są gotowe do uruchomienia z kartą o wysokiej wydajności. Próbuję skonfigurować aplikację, którą buduję, aby domyślnie działała na wysokiej wydajności GPU, ale nigdzie nie mogę znaleźć żadnych informacji na ten temat. Mam nadzieję, że ktoś może rzucić na to trochę światła. Będę dystrybuował moją aplikację za pomocą instalatora NSIS i myślę, że będę musiał dodać ścieżkę mojej aplikacji do listy aplikacji dla kart NVidia / ATI. Aplikacja jest programowana w języku C #. Ponadto, czy ktoś wie, jak wygląda sytuacja z komputerami stacjonarnymi? Co się stanie, jeśli komputer ma 2 procesory graficzne i muszę wybrać mocniejszy?
Milcho
NvOptimusEnablement
sztuczki Optimusa , ale powinienem. Wygląda na to, że to nowość (sterownik 302.x +) Dziękuję.Ogólnie nie możesz.
Sterownik z dwoma GPU ukrywa dwa procesory graficzne za jednym interfejsem, więc rozwiązania takie jak Nathan Reed zwykle nie działają w większości popularnych konfiguracji z dwoma GPU o dużej prędkości / niskiej mocy.
Wybór GPU musi być w jakiś sposób obsługiwany przez kierowcę. Za pomocą NVIDIA Optimus zazwyczaj aktualizujesz profile Optimus, aby dodać aplikację do listy aplikacji korzystających z oddzielnego procesora graficznego, zwykle poprzez kliknięcie EXE i kliknięcie Właściwości. Możesz także użyć niektórych bardzo specyficznych połączeń do Optimusa. jak na odpowiedź mh01. W przypadku konfiguracji AMD sytuacja wygląda zupełnie inaczej.
W jeszcze innych systemach istnieje przełącznik sprzętowy lub flaga systemu operacyjnego, aby zdecydować, który GPU jest aktywny. Ponownie aplikacja nie ma kontroli nad tym, która karta graficzna jest używana.
To jest coś, co mam nadzieję, że zostanie „naprawione” w przyszłej aktualizacji DirectX. Idealnie byłoby, gdyby oba GPU były wyliczone, jak sugerował Nathan, a następnie pojawiłyby się wskazówki wskazujące, który z nich jest przeznaczony do szybkiej lub niskiej mocy, dzięki czemu aplikacja może inteligentnie wybrać właściwy, a nawet przełączyć urządzenie, którego używa, w oparciu o cokolwiek czynniki (powiedzmy, pozwalając przeglądarce wybrać w zależności od obciążenia WebGL).
źródło
Powinieneś być w stanie wyliczyć procesory graficzne w systemie i wybrać, który z nich ma zostać użyty podczas uruchamiania aplikacji. Nie wspomniałeś, którego interfejsu API używasz, ale na przykład w D3D11 użyłbyś IDXGIFactory :: EnumAdapters, aby uzyskać listę GPU i przekazać ten, który chcesz D3D11CreateDevice .
DXGI może dostarczyć ci ograniczonych informacji o GPU, takich jak ciąg opisu, identyfikator dostawcy i identyfikator urządzenia. Podejrzewam, że możesz użyć tych informacji, aby stwierdzić, który procesor graficzny ma wysoką wydajność, ale musiałbyś zbudować jakąś bazę danych GPU lub spróbować użyć heurystyk do odgadnięcia. Lub możesz pozwolić użytkownikowi wybrać, którego procesora graficznego użyć podczas uruchamiania.
źródło