Je suis l’heureux acquéreur #oupas d’un pc portable avec technologie Optimus de Nvidia (voir Asus U36JC). Après quelques jours de recherches et de tests je vais essayer de vous faire un résumé complet sur le pourquoi de comment ça fonctionne.

Présentation et marketing

Petite introduction sur Optimus pour vous mettre dans l’ambiance. Cette technologie permet de profiter de deux cartes graphique au sein d’un pc portable, plus précisément d’une carte vidéo Nvidia et du chipset graphique intégré au processeur Intel (= IGP). Cette technologie, d’après la plaquette marketing, remplacerait une techno plus ancienne appelée « switchable graphics » très peu connue. Optimus permet de rallier autonomie et performance sur notebook. En effet, quand vous êtes en vadrouille, sans courant, et que vous faites de la bureautique, vous utilisez l’IGP Intel. Mais quand vous avez besoin de jouer à Crysis ou bosser avec 3DS max, vous pouvez basculer sur la carte Nvidia qui est plus performante. J’ai une Nvidia 310M elle est déjà deux fois plus rapide que l’IGP pour le travail 3D. J’ai remarqué bizarrement que Optimus n’était pas utilisé sur les machines avec des cartes Nvidia de gros gabarit. Cela briderait-il les performances ? j’en suis presque sûr …

La partie matériel

Concrètement comment fait-on pour basculer d’une carte à l’autre au niveau matos? comment est-ce câblé ? vous allez me répondre comme ça :

Les sorties vidéos de l’IGP et de la carte Nvidia sont câblées sur l’entrée du moniteur et les sorties VGA et DisplayPort ou HDMI. Pour pouvoir basculer de l’un à l’autre on utilise des petits switchs (Mux sur le shéma) avec 2 entrées et une sortie qui font basculer la sortie vidéo sur l’IGP ou la carte Nvidia. Cette solution N’EST PAS celle choisie pour la technologie Optimus mais celle utilisée par « switchable graphics ». Nvidia explique que cette solution n’est pas viable pour plusieurs raisons. La première est que le temps de bascule est super long car il faut basculer les sorties puis dire au système de changer de driver d’affichage donc un temps de 5 à 10 secondes de bascule. Deuxième raison, le système n’est pas automatique, l’utilisateur doit sélectionner la carte voulue avant de lancer le jeux (perso, je préfère cette façon de faire, au moins on est maître de notre matos #geekpowa). Et la dernière qui n’est pas des moindres, le design de la carte mère se complique puisque l’on doit avoir un double câblage pour chaque sortie vidéo, sans compter les fils de commandes pour les switchs. Cela entraîne un coût supplémentaire pour les constructeurs.

Mais alors comment est fait Optimus ?

Avec Optimus, il n’y a pas de liaison entre la carte Nvidia et l’écran ou les sorties vidéos. L’image de sortie transite via le bus PCI-Express, puis elle est transmise à l’IGP Intel qui se charge uniquement de l’affichage. Au niveau hardware, la carte Nvidia est uniquement connectée au PCI-Express et rien d’autre.

Cela permet de ne pas avoir à faire de câblage supplémentaire pour la carte Nvidia, cela facilite donc l’intégration de ce composant pour les constructeurs. Nvidia vend ainsi des GPU Nvidia sur la plateforme Intel Core iX, des machines qui n’en ont pas forcement besoin. Les PC équipés de Optimus se voient badgés d’un super logo et d’une carte graphique plus performante que l’IGP Intel, le consommateur (moi) tombe dans le piège et se dit pourquoi pas ?

La partie logiciel

Mais alors comment le GPU Nvidia est-il utilisé ? Optimus fonctionne via des drivers un peu spéciaux qui sont différents de ceux que vous pouvez installer d’habitude quand vous utilisez une carte graphique classique, que ce soit sur un portable ou un fixe. Dans le cas classique, le driver est chargé par l’OS qui envoie les traitements à faire puis le GPU fait le traitement et renvoie tout le rendu sur l’écran. Pour Optimus il n’y a plus l’intervention d’une seule carte, donc d’un driver, mais deux cartes, donc deux drivers, celui de Intel et celui de Nvidia. Quand vous êtes en utilisation bureautique vous n’avez pas besoin d’une carte puissante donc l’IGP peut s’en charger tout seul, ici grâce à Optimus la carte Nvidia est complètement éteinte. Maintenant vous lancez un jeux vidéo, l’IGP Intel est toujours actif et continu à gérer l’écran mais c’est là qu’intervient Optimus. Il réveille la carte Nvidia et c’est elle qui va gérer le rendu du jeux video. C’est là que ça devient drôle, le driver bidouillé Optimus va détecter via une liste d’application prédéfinie par Nvidia (que l’on peut modifier) le jeux que vous venez de lancer. Ensuite, avec une super bidouille de l’API Microsoft DirectX, le jeux va tourner sur la carte Nvidia et les images de sortie seront copiées/collées via le bus pci-express dans le framebuffer de l’IGP Intel qui se chargera uniquement de les afficher. Optimus s’appuie entièrement sur DirectX et la couche Windows pour gérer l’execution des programmes 3D car il faut gérer une « session » DirectX dans chaque GPU. L’utilisation de la carte Nvidia sur un OS Linux ou BSD est donc pour l’instant impossible car Nvidia ne fournit pas de driver Optimus. Et plus grave, cela est dû au fait que l’environnement Xorg ne permet pas de charger deux drivers différents en même temps. La solution possible serait d’utiliser Wayland à la place de Xorg, c’est le cas de la version 11.04 de Ubuntu(en beta). Il faudrait alors développer un driver se basant sur OpenGL gérant IGP et le GPU Nvidia.

Sur la partie gauche du schéma, c’est le cas où le GPU est complètement éteint, le gain en autonomie est donc important. L’autre phase active le GPU Nvidia qui va traiter la 3D d’une application, mais l’IGP Intel reste actif pour permettre l’affichage sur l’écran.

Performance et fiabilité

Pour ce qui est des performances graphiques dans un environnement jeux vidéo j’ai essayé d’utiliser 3DMark Vantage, pourquoi je vous dis essayer car il m’a été impossible de réaliser une passe de test complet avec l’IGP Intel. Dans tous les cas, j’ai 3DMark qui plantait même après avoir mis à jour les drivers. J’avais l’erreur « Device Removed » à chaque fois, en somme crash du driver. En utilisant la carte Nvidia, j’ai réussi à faire une passe et j’ai eu un résultat de 822 points, ce qui est dans la moyenne pour une 310M. Le site NotebookCheck.com donne des résultats similaires pour la carte Nvidia, et pour l’IGP Intel HD Graphics, il indique un score de 200 points en moyenne, donc lorsque la carte Nvidia est activée, le calcul 3D sera en moyenne quatre fois plus rapide. Comme je le supposais plus haut vu l’écart peu important entre mes résultats et ceux fournit par NotebookCheck, il est impossible de savoir si la latence induite par la recopie via le bus PCI-Express impacte les performances. Pour le prouver, il faudrait prendre une machine avec une carte plus puissante puis faire des tests dans des conditions identiques pour comparer avec une autre machine sans Optimus ayant la même carte.

Versions des drivers pendant mes tests :

  • version intel 8.15.10.2202 puis MAJ en 8.15.10.2342 depuis Intel Download Center
  • version nvidia 8.17.12.5964 pilote 259.64 puis MAJ en 8.17.12.7061 pilote 270.61 depuis Nvidia

Après certains tests impossibles à réaliser, je me suis rendu compte qu’Optimus posait problème. Mais cela ne s’arrête pas là, et j’ai eu quelques surprises avec des petits utilitaires que j’ai pour habitude d’utiliser pour faire du monitoring. Ma panoplie est constituée de CPU-Z, OCCT, GPU-Z, NvidiaInspector et des gadgets GPUObserver et IntelCoreSeries. Je n’ai pas démonté toutes ces applications, mais elles utilisent toutes l’API du driver Nvidia pour aller récupérer différentes informations tel que la température, les fréquences, les tensions, l’occupation mémoire et la vitesse de ventilation. Avec Optimus, quand la carte Nvidia est inutilisée, elle est complètement éteinte, donc comment faire pour récupérer la température ? Je pensais que l’API du driver allait le gérer et renvoyer une température bidon style 0°C ou alors renvoyer une exception particulière. Mais pas du tout, l’API est toute pourrie et quand on lui demande quelque chose elle le fait, concrètement quand un gadget ou une application de monitoring demande la température, l’api réveille la carte Nvidia, récupère la temp et éteint le GPU. Cette opération est répétée toutes les 5 secondes environ en fonction des softs et gadget. J’ai mis un certain temps avant de comprendre car il faillait trouver le moyen de connaitre l’état réel du GPU Nvidia. Pour cela, j’ai trouvé les outils presse de Nvidia(j’ai bien galéré pour les trouver). GPUObserver est donc inutilisable car cela réveille le GPU pour rien, donc vous perdez en autonomie. Pour GPU-Z, il plante lamentablement si la carte Nvidia est éteinte. Pour OCCT, il y a un bug d’affichage: l’animation ne s’affiche pas, et reste figée, j’ai l’impression que l’histoire de copie de framebuffer merde.

Nvidia explique que son driver choisit, lorsqu’une application est lancée, si la carte Nvidia est activée, grâce à une liste, celle-ci étant mis à jour via internet de façon automatique. Cela marche plutôt bien pour tout ce qui est jeux vidéos et applications 3D mais on peut toujours éditer les profils depuis le panel Nvidia. Certains profils sont un peu inutile, par défaut Flash Player déclenche la carte Nvidia ainsi que la lecture de vidéo HD alors que le chipset Intel en est parfaitement capable.

Il y a aussi un manque de sécurité car quand une application tourne sur la carte Nvidia, si on désactive celle-ci via le gestionnaire de périphériques, il n’y a pas de message d’erreur. L’application plante lamentablement.

Autonomie

Je vais enfin pouvoir parler des quelques points positifs de la technologie Optimus. Le gain en autonomie est juste impressionnant, il est presque doublé quand la carte Nvidia est inactive (state OFF), j’atteins 7 heures en utilisation bureautique. La transparence d’utilisation de la carte Nvidia est plutôt bien gérée et c’est instantané. La carte Nvidia est vraiment complètement éteinte quand elle n’est pas utilisée. J’ai remarqué un truc fun à ne pas faire, ne pas désactiver ou désinstaller la carte Nvidia depuis le gestionnaire de périphérique Windows car sinon la carte repasse sous gestion BIOS et celui-ci la réactive et la laisse dans un état indéterminé (mon autonomie est divisée par 2).

Astuces

  • Pour savoir si la carte Nvidia est utilisée par une application vous pouvez activer une icône spéciale dans la zone de notification. Pour cela ouvrir le control panel Nvidia puis dans le menu déroulant « Bureau » cocher « Afficher l’icône d’activité du processeur graphique (…) ».
  • Quand vous voulez lancer une application de monitoring ou d’information système qui plante quand la carte Nvidia est off, il suffit de lancer une application qui va la réveiller, un jeux vidéo par exemple puis ensuite de lancer le logiciel en question.
  • Quand vous cliquez droit sur une application, vous pouvez choisir dans le menu contextuel quelle carte va être utilisée. (Option à activer dans « Bureau »)
  • Désactiver complètement la carte Nvidia sous Linux.

Conclusion

Après plusieurs jours de tests, lectures et recherches de documentations, ainsi que quelques échanges peu intéressant avec @NvidiaOptimus. Je déconseille fortement les pc badgés optimus car la carte Nvidia est actuellement INUTILISABLE sous linux ou BSD sauf quelques exceptions qui disposent en plus de la technologie Switchable Graphics. J’ai lu au passage le test de Pc Inpact qui donne une bonne note. Je ne sais pas s’ils ont pris en compte le non support total sous linux et tous les petits problèmes de bord. Cela place Optimus au rang de technologie en beta test, pourtant présente depuis presque 2 ans sur le marché. Au final, c’est nous les gentils clients qui sommes beta-testeurs. Si vous cherchez à acheter un pc portable avec une carte graphique potable je vous recommande de prendre une Radeon puisque AMD a ouvert ses spécifications technique à la communauté.


3 commentaires

Calcifer · 4 mai 2011 à 16 h 05 min

Tu m’en aura donné du fil à retordre pour corriger ton article :P

Article très intéressant, merci pour les informations ;)

Randall Flagg · 12 août 2011 à 12 h 15 min

salut hugo, j’avais pas vu ton site et cet article est vraiment bien foutu, et très informatif :)
GG!

    HugoPoi · 13 août 2011 à 23 h 25 min

    Merci, j’espère continuer comme ça ;)

Répondre à Randall Flagg Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *