Comment vérifier quel GPU est installé sur Linux



Vous souhaitez identifier l’unité de traitement graphique (GPU) sur votre ordinateur Linux ? Voici plusieurs méthodes pour déterminer quelle carte graphique est présente, que ce soit en utilisant la ligne de commande ou l’environnement GNOME.

Premiers pas

Cette situation vous est probablement familière : vous vous apprêtez à dépanner l’ordinateur d’un proche ou d’un collègue peu versé dans la technologie. Un pressentiment vous dit que la tâche ne sera pas simple. Malgré tout, vous vous lancez ! Vous identifiez rapidement un problème potentiel de pilote d’affichage. Mais votre lueur d’espoir s’éteint lorsque vous posez la question fatidique : « Quel type de carte graphique avez-vous ? »

Le regard hébété que vous recevez en réponse en dit long. Pour apporter une solution, vous devez connaître les spécificités du matériel. Alors, comment identifier la carte graphique d’un ordinateur sous Linux ?

Imaginons le pire des cas : les pilotes de la carte graphique n’ont jamais été installés. Vous ne pouvez donc même pas les consulter pour obtenir des indices. Mais pas de panique ! Il est tout à fait possible de résoudre ce mystère en utilisant la ligne de commande ou l’interface graphique (GUI).

`lspci` et la base de données des identifiants PCI

L’Interconnexion de Composants Périphériques (PCI) est un protocole couramment utilisé pour communiquer avec des périphériques internes, comme les cartes graphiques. Le Dépôt d’identifiants PCI gère une base de données contenant tous les identifiants connus des périphériques PCI. En connaissant certaines informations sur le périphérique, vous pouvez donc effectuer une recherche dans cette base.

La commande `lspci` permet de lister les périphériques PCI installés sur un ordinateur Linux, ainsi que certaines de leurs caractéristiques.

Ne serait-il pas idéal de pouvoir associer la base de données PCI à la commande `lspci` ? En réalité, c’est exactement ce qui se passe lorsque vous exécutez cette commande. Elle utilise une copie locale de la base de données PCI pour identifier les périphériques qu’elle détecte. Avant de commencer, il est judicieux de mettre à jour cette copie locale.

Pour cela, saisissez la commande `update-pciids` :

sudo update-pciids

La dernière version de la base de données est ainsi téléchargée. Nous pouvons maintenant utiliser la commande `lspci`. Le résultat peut être long, nous allons donc le rediriger vers la commande `less`. L’option `-v` (verbose) demande à `lspci` d’afficher le maximum d’informations. Nous utiliserons `sudo` pour obtenir des informations aussi complètes que possible.

Saisissez la commande suivante :

sudo lspci -v | less

Le résultat s’affiche dans `less`. En appuyant sur la barre oblique (/), vous activez la fonction de recherche de `less`.

Saisissez « VGA » en majuscules, puis appuyez sur Entrée.

`less` recherche la chaîne « VGA » et affiche la première occurrence trouvée. Vous pouvez ensuite faire défiler ou avancer la page pour voir combien de cartes graphiques `lspci` a identifié.

Pour cet article, nos tests ont été menés sur différentes distributions Linux exécutées dans des machines virtuelles VirtualBox. Les machines virtuelles ont, bien entendu, des cartes graphiques virtuelles.

Pour illustrer avec un exemple de résultat concret, voici la sortie obtenue sur un ordinateur hôte (physique) :

26:00.0 VGA compatible controller: NVIDIA Corporation GP108 [GeForce GT 1030] (rev a1) (prog-if 00 [VGA controller])
Subsystem: Gigabyte Technology Co., Ltd GP108 [GeForce GT 1030]
Flags: bus master, fast devsel, latency 0, IRQ 97
Memory at f6000000 (32-bit, non-prefetchable) [size=16M]
Memory at e0000000 (64-bit, prefetchable) [size=256M]
Memory at f0000000 (64-bit, prefetchable) [size=32M]
I/O ports at e000 [size=128]
Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Legacy Endpoint, MSI 00
Capabilities: [100] Virtual Channel
Capabilities: [250] Latency Tolerance Reporting
Capabilities: [128] Power Budgeting >
Capabilities: [420] Advanced Error Reporting
Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 >
Capabilities: [900] Secondary PCI Express >
Kernel driver in use: nouveau
Kernel modules: nouveau

Cette commande nous fournit immédiatement de nombreuses informations pertinentes !

La carte graphique est une NVIDIA Corporation GP108 [GeForce GT 1030]. Après une brève recherche sur un moteur, nous avons trouvé la page de spécifications NVIDIA pour ce produit. La mention « [VGA controller] » à la fin de la première ligne indique qu’il s’agit de la carte graphique « active ». Cette information est utile quand plusieurs cartes sont présentes dans l’ordinateur.

La commande `lshw`

La commande `lshw` permet également de répertorier le matériel installé sur un ordinateur Linux. Elle fournit des informations sur divers types de composants, et pas uniquement sur les périphériques PCI.

Pour afficher les cartes graphiques détectées, nous utiliserons l’option `-C` (classe), suivie du modificateur « display ». L’option `-numeric` force `lshw` à indiquer les identifiants numériques des périphériques, en plus de leurs noms.

Saisissez la commande suivante :

sudo lshw -numeric -C display

Voici le résultat obtenu sur l’ordinateur physique :

 *-display
   description: VGA compatible controller
   product: GP108 [GeForce GT 1030] [10DE:1D01]
   vendor: NVIDIA Corporation [10DE]
   physical id: 0
   bus info: pci@0000:26:00.0
   version: a1
   width: 64 bits
   clock: 33MHz
   capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
   configuration: driver=nouveau latency=0
   resources: irq:97 memory:f6000000-f6ffffff memory:e0000000-efffffff memory:f0000000-f1ffffff ioport:e000(size=128) memory:c0000-dffff

Il est encourageant de constater que les deux commandes ont détecté la même carte !

Les identifiants [10DE:1D01] correspondent au fabricant (10DE) et au modèle (1D01). Pour trouver rapidement la marque et le modèle, vous pouvez rechercher « carte graphique 10de:1d01 » sur un moteur de recherche.

La commande `glxinfo`

La commande `glxinfo` est une autre méthode à votre disposition. Elle fournit des informations sur l’extension OpenGL pour le système X Windows. Vous pouvez ensuite utiliser certaines de ces informations pour identifier le type de carte graphique installé sur votre machine.

La commande `glxinfo` est déjà présente sur Manjaro et Fedora. Cependant, sur Ubuntu, vous devez l’installer. Pour ce faire, saisissez la commande suivante :

sudo apt-get install mesa-utils

Pour rediriger la sortie de `glxinfo` vers `less` et utiliser l’option `-B` (affichage de l’ID), saisissez la commande suivante :

glxinfo -B | less

La ligne « Device » décrit la carte graphique.

Voici la sortie obtenue sur l’ordinateur physique :

name of display: :1
display: :1 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: nouveau (0x10de)
Device: NV138 (0x1d01)
Version: 19.3.2
Accelerated: yes
Video memory: 1987MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 4.3
Max compat profile version: 4.3
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL vendor string: nouveau
OpenGL renderer string: NV138
OpenGL core profile version string: 4.3 (Core Profile) Mesa 19.3.2
OpenGL core profile shading language version string: 4.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.3 (Compatibility Profile) Mesa 19.3.2
OpenGL shading language version string: 4.30
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 19.3.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

Une recherche sur un moteur avec la chaîne « NV138 » permet d’identifier immédiatement la carte graphique NVIDIA.

Identifier la carte graphique via l’interface graphique

Si votre ordinateur est uniquement accessible via une interface en ligne de commande (CLI), vous devrez utiliser l’une des méthodes décrites précédemment. Si, cependant, une interface graphique est disponible, il existe probablement une option pour identifier graphiquement la carte graphique. Vous trouverez certainement cette option dans les outils de paramètres de votre environnement de bureau Linux.

Sous GNOME, ouvrez la fenêtre « Paramètres », puis cliquez sur « Détails » dans la barre latérale. Dans le panneau « À propos », recherchez une entrée « Graphiques ». Cette information indique le type de carte graphique présente dans l’ordinateur, ou plus précisément, la carte graphique actuellement utilisée. Il est possible que votre machine possède plusieurs GPU.

Dans l’onglet « À propos » des paramètres GNOME de l’ordinateur physique, nous obtenons le même identifiant de carte « NV138 » que précédemment. Encore une fois, il suffit d’entrer cette information dans un moteur de recherche pour trouver le type de carte.

Cartes graphiques sur ordinateurs portables

De nombreux ordinateurs portables possèdent deux cartes graphiques : une provenant du fabricant de l’unité centrale de traitement (CPU) et une autre d’un fournisseur de GPU plus connu.

Saisissons la même commande `lspci` que précédemment, mais cette fois sur un ordinateur portable :

sudo lspci -v | less

Comme prévu, nous obtenons une description des cartes graphiques de la machine :

00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. 3rd Gen Core processor Graphics Controller
Flags: bus master, fast devsel, latency 0, IRQ 33
Memory at f7400000 (64-bit, non-prefetchable) [size=4M]
Memory at d0000000 (64-bit, prefetchable) [size=256M]
I/O ports at f000 [size=64]
[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [d0] Power Management version 2
Capabilities: [a4] PCI Advanced Features
Kernel driver in use: i915
Kernel modules: i915

01:00.0 VGA compatible controller: NVIDIA Corporation GF119M [GeForce 610M] (rev a1) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. GF119M [GeForce 610M]
Flags: bus master, fast devsel, latency 0, IRQ 34
Memory at f6000000 (32-bit, non-prefetchable) [size=16M]
Memory at e0000000 (64-bit, prefetchable) [size=128M]
Memory at e8000000 (64-bit, prefetchable) [size=32M]
I/O ports at e000 [size=128]
Expansion ROM at f7000000 [disabled] [size=512K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Endpoint, MSI 00
Capabilities: [b4] Vendor Specific Information: Len=14 >
Capabilities: [100] Virtual Channel
Capabilities: [128] Power Budgeting >
Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 >
Kernel driver in use: nouveau
Kernel modules: nouveau

Cet ordinateur portable possède à la fois un GPU Intel Core et une NVIDIA GeForce 610M. Cependant, les deux cartes comportent la mention « [VGA controller] », qui indique généralement le GPU utilisé.

Il est impossible d’utiliser les deux cartes simultanément. Il est donc conseillé de privilégier en premier lieu la carte du fournisseur de GPU grand public. C’est celle que le fabricant de l’ordinateur portable considère par défaut et qui est mentionnée dans les spécifications de la machine.

L’une des méthodes décrites ici devrait vous permettre d’identifier la carte graphique de votre ordinateur ou ordinateur portable. Une fois le type de carte connu, vous pouvez sélectionner les pilotes graphiques adéquats.