nVidia Optimus : la vidéo hybride

La technologie Optimus est développée par le fabricant de cartes graphiques nVidia, elle est à destination des ordinateurs portables et mini-PC. Elle a pour but de trouver le juste équilibre entre autonomie de la batterie et performances graphiques.

Avant-Propos

Est-ce que votre ordinateur est équipé d'Optimus ? Question importante, car si ce n'est pas le cas il n'est a priori pas utile de lire cette page.

Tout d'abord, il faut savoir que cela ne concerne que les ordinateurs portables et mini-PC.
Si votre portable est équipé d'un processeur Intel Core iX ainsi que d'une carte graphique nVidia, alors vous êtes très certainement concerné. Attention, les Core i7 QM ne sont généralement pas concernés.

De plus, les portables pré-Optimus (Asus ULx0Vt notamment) sont également concernés.

De manière générale, pour savoir facilement si vous êtes concerné, ouvrez un terminal et entrez cette commande:

lspci -vnn | grep '\''[030[02]\]'

S'il y a deux résultats, un portant la mention Intel, l'autre la mention nVidia, alors vous êtes concernés. S'il n'y a qu'un seul résultat, ce n'est a priori pas le cas. Cependant, certains modèles disposent d'une option dans le BIOS permettant de désactiver l'une des deux puces graphiques ne laissant plus que l'autre apparaître. À vous de voir si cette situation vous convient, sachant qu'alors tout se déroule comme sur un système non-hybride.

Dans tous les autres cas, ou en cas de doute, postez le résultat dans ce topic, une réponse vous sera apportée peu de temps après.

Présentation

Explications générales

Partant du constat que l'autonomie est un point crucial pour les ordinateurs portables, Intel inclut une carte graphique basse consommation dans quasiment tous ses processeurs mobiles depuis Janvier 2010, permettant ainsi de se passer d'une carte graphique dédiée plus performante mais également plus énergivore, du moins tant qu'il ne s'agit que de bureautique ou de films classiques (les Blu-Ray sont plus ou moins bien supportés).

Cette puce graphique intégrée a beaucoup progressé avec les processeurs récent mais reste en-deçà de ce que peuvent fournir des cartes dédiées en termes de performances. Dès que l'on veut utiliser des logiciels requérant des capacités 3D tels les jeux vidéo, le montage vidéo ou édition numérique lourde, la modélisation 3D, etc …, on se retrouve très vite limité par celle-ci.

Aussi, nVidia (suivi par ATI/AMD depuis) a réfléchi à un système permettant d'avoir les avantages des deux mondes : une grande autonomie ET des performances graphiques relativement élevées.

Dans la pratique, ce système est censé fonctionner de la manière suivante : en utilisation bureautique/légère, la carte graphique dédiée nVidia est éteinte électriquement, sa consommation est ainsi nulle et on se retrouve dans la situation classique ou la puce graphique intégrée s'occupe de tout. Si un programme demandant des performances 3D vient à être lancé, alors la carte nVidia s'allume et fait tourner le programme en question. Elle s'éteint lorsque celui-ci s'arrête. Ce fonctionnement est globalement transparent pour l'utilisateur. Les versions récentes des pilotes nVidia ont été largement améliorées notamment avec Resolute et permettent une gestion simple des 2 types de circuit graphique.

Quelle carte est actuellement active sur mon PC ?

Une solution est d'utiliser l'outil glxinfo :

  glxinfo | grep "OpenGL renderer"

Si une carte nVidia est installée, vous pouvez aussi utiliser l'utilitaire :

  nvidia-smi

La réponse vous montre les cartes installées et les applications qui les utilisent.

Quel pilote/driver est actuellement active sur mon PC ?

Une solution est d'utiliser l'outil lshw et filtrer les resultats qui nous interesse :

  lshw -c video | grep -v ressources: | grep -v horloge: | grep -v bits: | grep -v bus: | grep -v riel: 
  

Gestion

Utilitaire

Dans la pratique, les versions récentes des pilotes nVidia permettent de gérer facilement l'utilisation de ces cartes. L'installation des pilotes se fait automatiquement à l'installation d'Ubuntu (pour Resolute en tous cas) et installe aussi un utilitaire graphique nVidia X Server Settings. En lançant cette application, vous pouvez voir les informations sur votre carte, soit laisser la configuration par défaut "On-Demand" -c'est le système qui choisit quel circuit graphique utiliser-, soit régler sur "Performance" et alors c'est la carte nVidia qui est utilisée en permanence, au dépend de l'autonomie.

Le système est compatible avec Wayland, le système d'affichage par défaut d'Ubuntu qui a pris le relais de X-Org.

Pour les versions anciennes, il peut rester les deux problèmes suivants, mais pour lesquels les solutions présentées ci-après existent :

  • la carte graphique nVidia (GPU) n'est pas utilisable par défaut, seul la carte intégrée Intel est exploitable, offrant des performances décevantes au regard de celles de la plupart des GPU.
  • pour autant, elle reste alimentée en permanence (et consommant plus que ce que devrait consommer cet état passif), diminuant l'autonomie tout en restant inutilisable.

Utilisation "à la volée"

En faisant un clic-droit sur l'icône de l'application dans le Dock ou dans l'écran des application, apparaît un menu contextuel dans lequel vous pouvez sélectionner "Démarrer en utilisant la carte graphique dédiée" ou "…Discrete graphic card" (non traduit dans le Dock).

Commandes complémentaires : PRIME Render Offload

La version 450 du pilote fournit directement un outil appelé PRIME Render Offload qui permet de gerer Optimus. À partir d'une configuration neuve (aucun fichier xorg modifié, etc…) installer les derniers pilotes nvidia (>=450) via le gestionnaire de pilotes propriétaires ou sous Ubuntu 20.04 depuis le dépôt suivant:

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo apt dist-upgrade
$ sudo apt install nvidia-driver-450
$ shutdown -r now

Vous pourrez ensuite forcer l'utilisation du GPU Nvidia en précédant la commande à exécuter de

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia COMMANDE_A_EXECUTER

La variable d'environnement "_ _NV_PRIME_RENDER_OFFLOAD=1" est destinée à à Vulkan ou EGL.
La variable d'environnement "_ _GLX_VENDOR_LIBRARY_NAME=nvidia" est destinée à GLX.

Pour tester si cela fonctionne, essayer la commande ci-dessous qui devrait vous renvoyer la marque et le modèle de votre carte graphique :

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | egrep "(OpenGL vendor|OpenGL renderer|OpenGL version)"
  OpenGL vendor string: NVIDIA Corporation
  OpenGL renderer string: GeForce GTX 1660 Ti/PCIe/SSE2
  OpenGL version string: 4.6.0 NVIDIA 450.66

Sans les commandes Prime Render, on obtiendrait le processeur graphique intégré comme réponse

$ glxinfo | egrep "(OpenGL vendor|OpenGL renderer|OpenGL version)"
$ OpenGL vendor string: X.Org
$ OpenGL renderer string: AMD RENOIR (DRM 3.38.0, 5.8.8-050808-generic, LLVM 10.0.0)
$ OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.0.8

Si votre carte nVidia n'est pas utilisée automatiquement, il faut lancer la commande plus haut, avec le nom de l'application de votre choix, par exemple :

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia supertuxkart

Il est possible d'installer un applet propre à mate, il s'agit de mate-optimus.

Si cela ne fonctionne pas, vous pourrez trouver plus d'informations ici :

Points Divers

Voici quelques points qu'il convient de signaler :

  • Certains ordinateurs proposent dans leur BIOS de désactiver le mode hybride et de n'utiliser que la carte graphique nVidia et/ou Intel. Le cas échéant, l'utilisation d'un des projets présenté ci-dessus n'est pas nécessaire. Dans le cas où seule la carte Intel est active, tout est automatique, dans le cas où seule la carte nVidia est active, il suffit de procéder à l'installation du pilote nvidia comme on le ferait pour tout autre machine.

Voir aussi


// Contributeurs : archangegabriel ; arverne73//