Heutzutage werden viele Laptops mit 2 GPUs geliefert - einem Hochleistungs-und einem Stromspar-Notebook (weniger leistungsstark). Die meisten Anwendungen, die ich auf meinem Laptop verwende, laufen mit meiner integrierten (energiesparenden) GPU, aber einige von ihnen können mit der Hochleistungskarte geöffnet werden. Ich versuche, die App, die ich aufbaue, so zu konfigurieren, dass sie standardmäßig auf der Hochleistungs-GPU ausgeführt wird, aber ich kann nirgendwo Informationen zu diesem Thema finden. Ich hoffe, dass jemand ein bisschen Licht ins Dunkel bringen kann. Ich werde meine Anwendung mit einem NSIS-Installationsprogramm verteilen und ich denke, dass ich den Pfad meiner Anwendung zu einer Liste von Anwendungen für NVidia / ATI-Karten hinzufügen muss. Die Anwendung ist in C # programmiert. Weiß auch jemand, wie die Dinge mit Desktop-PCs stehen? Was passiert, wenn ein PC 2 GPUs hat und ich die leistungsstärkere wählen muss?
Milcho
NvOptimusEnablement
Trick nicht, hätte ihn aber haben sollen. Klingt so, als wäre es eine neue Sache (Treiber 302.x +). Vielen Dank.Im Allgemeinen können Sie nicht.
Der Dual-GPU-Treiber verbirgt die beiden GPUs hinter einer einzigen Schnittstelle, sodass Lösungen wie die von Nathan Reed in den meisten gängigen Dual-GPU-Setups mit hoher Geschwindigkeit und geringem Stromverbrauch normalerweise nicht funktionieren.
Die GPU-Auswahl muss in irgendeiner Weise vom Treiber vorgenommen werden. Mit NVIDIA Optimus aktualisieren Sie normalerweise die Optimus-Profile, um die Anwendung zur Liste der Anwendungen hinzuzufügen, die die diskrete GPU verwenden. Klicken Sie dazu in der Regel mit der rechten Maustaste auf die EXE-Datei und klicken Sie auf Eigenschaften. Sie können auch einige Optimus-spezifische Aufrufe verwenden. gemäß der Antwort von mh01. Bei AMD-Setups ist dies völlig anders.
Auf noch anderen Systemen gibt es einen Hardware-Schalter oder ein Betriebssystem-Flag, um zu entscheiden, welche GPU aktiv ist. Auch hier hat die Anwendung keine Kontrolle darüber, welche GPU verwendet wird.
Dies ist etwas, von dem ich wirklich hoffe, dass es in einem zukünftigen DirectX-Update "behoben" wird. Im Idealfall werden beide GPUs wie von Nathan vorgeschlagen aufgelistet, und dann werden Hinweise angezeigt, welche davon für hohe oder niedrige Leistung gedacht sind, sodass eine Anwendung auf intelligente Weise die richtige auswählen oder sogar das verwendete Gerät wechseln kann Faktoren (z. B. die Auswahl eines Webbrowsers in Abhängigkeit von der WebGL-Belastung).
quelle
Sie sollten in der Lage sein, die GPUs im System aufzulisten und auszuwählen, welche beim Start Ihrer Anwendung verwendet werden sollen. Sie haben nicht erwähnt, welche API Sie verwenden, aber in D3D11 würden Sie beispielsweise IDXGIFactory :: EnumAdapters verwenden , um die Liste der GPUs abzurufen und die gewünschte an D3D11CreateDevice zu übergeben .
Mit DXGI können Sie einige eingeschränkte Informationen zur GPU erhalten, z. B. eine Beschreibungszeichenfolge, eine Hersteller-ID und eine Geräte-ID. Ich nehme an, Sie können diese Informationen verwenden, um festzustellen, welche GPU die Hochleistungs-GPU ist, aber Sie müssen eine Art Datenbank mit GPUs erstellen oder versuchen, Heuristiken zu verwenden, um dies zu erraten. Oder Sie können den Benutzer auswählen lassen, welche GPU beim Start verwendet werden soll.
quelle