De nos jours, beaucoup d'ordinateurs portables sont livrés avec 2 GPU - un GPU haute performance et un économiseur d'énergie (moins puissant). La plupart des applications, que j'utilise sur mon ordinateur portable, fonctionnent avec mon GPU intégré (économie d'énergie), mais certaines d'entre elles sont toujours configurées pour s'ouvrir avec la carte haute performance. J'essaie de configurer l'application que je construis pour l'exécuter sur le GPU haute performance par défaut, mais je ne trouve aucune information sur le sujet nulle part. J'espère que quelqu'un pourra apporter un peu de lumière là-dessus. Je distribuerai mon application avec un programme d'installation NSIS et je suppose que je devrai ajouter le chemin de mon application à une liste d'applications pour les cartes NVidia / ATI. L'application est programmée en C #. En outre, quelqu'un sait-il comment les choses se passent avec les PC de bureau? Que se passe-t-il si un PC possède 2 GPU et que je dois choisir le plus puissant?
Milcho
NvOptimusEnablement
astuce Optimus , mais j'aurais dû. On dirait que c'est une chose récente (pilote 302.x +) Merci.En général, vous ne pouvez pas.
Le pilote à double GPU cache les deux GPU derrière une seule interface, de sorte que les solutions comme Nathan Reed ne fonctionnent généralement pas dans la plupart des configurations à double GPU haute vitesse / faible consommation.
La sélection du GPU doit être gérée par le pilote d'une manière ou d'une autre. Avec NVIDIA Optimus, vous mettez généralement à jour les profils Optimus pour ajouter l'application à la liste des applications qui utilisent le GPU discret, généralement en cliquant avec le bouton droit sur EXE et en cliquant sur Propriétés. Vous pouvez également utiliser des appels très spécifiques à Optimus. selon la réponse de mh01. Avec les configurations AMD, c'est totalement différent.
Sur d'autres systèmes encore, il existe un commutateur matériel ou un indicateur de système d'exploitation pour décider quel GPU est actif. Encore une fois, l'application n'a aucun contrôle sur le GPU utilisé.
C'est quelque chose que j'espère vraiment "corrigé" dans une future mise à jour de DirectX. Idéalement, les deux GPU devraient être énumérés comme Nathan l'a suggéré, puis il y aurait des indices pour indiquer lequel est destiné à une vitesse élevée ou à faible puissance, de sorte qu'une application peut choisir intelligemment le bon ou même changer d'appareil qu'elle utilise en fonction de tout facteurs (par exemple, laisser un navigateur Web choisir en fonction de la charge WebGL).
la source
Vous devriez pouvoir énumérer les GPU du système et choisir celui à utiliser au démarrage de votre application. Vous n'avez pas mentionné quelle API vous utilisez, mais par exemple dans D3D11, vous utiliseriez IDXGIFactory :: EnumAdapters pour obtenir la liste des GPU et passer celle que vous voulez à D3D11CreateDevice .
DXGI peut vous fournir des informations limitées sur le GPU, telles qu'une chaîne de description, l'ID du fournisseur et l'ID de l'appareil. Je suppose que vous pouvez utiliser ces informations pour savoir quel GPU est le plus performant, mais vous devez créer une sorte de base de données de GPU ou essayer d'utiliser des heuristiques pour deviner. Ou vous pouvez laisser l'utilisateur choisir le GPU à utiliser au démarrage.
la source