web-dev-qa-db-fra.com

Comment configurer iGPU pour xserver et nvidia GPU pour CUDA

J'ai un processeur graphique intégré Intel et un processeur graphique NVIDIA. Je suis sous Ubuntu 18.04.

Comment configurer une configuration à deux processeurs graphiques de sorte que Intel iGPU intégré pilote le moniteur, laissant ainsi le processeur graphique NVIDIA exclusivement réservé au travail CUDA de Machine Learning?

5
stason

J'ai d'abord installé les pilotes NVIDIA et les packages CUDA après ce guide . Excepté, après un redémarrage, /usr/lib/xorg/Xorg est apparu dans la sortie de nvidia-smi. Cela n’était pas bon, car j’avais besoin de disposer de tous les composants NVIDIA GPU RAM pour mon travail.

Après quelques recherches, j'ai trouvé une solution qui résout mon problème:

J'ai créé /etc/X11/xorg.conf avec le contenu suivant:

Section "Device"
    Identifier      "intel"
    Driver          "intel"
    BusId           "PCI:0:2:0"
EndSection

Section "Screen"
    Identifier      "intel"
    Device          "intel"
EndSection

(Si vous essayez de faire la même chose, assurez-vous de vérifier où se trouve votre GPU. Le mien était sur 00:02.0 qui se traduit par PCI:0:2:0)

% lspci  | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Device 3e92
01:00.0 VGA compatible controller: NVIDIA Corporation GP104 (rev a1)

Après le redémarrage, xorg et d’autres programmes n’apparaissent plus dans le résultat de nvidia-smi. Et j'ai pu utiliser pytorch avec CUDA-10.0.

Notez que tous les pilotes NVIDIA sont toujours installés, mais qu’ils n’interfèrent pas.

5
stason

Permettez-moi de partager ma recette qui m'a aidé sur l'ordinateur portable Razer Blade 15 avec l'environnement de bureau Arch Linux et Gnome.

Au départ, j’avais démarré Gnome avec une session Wayland, alors incompatible avec le pilote NVIDIA; j’avais donc naturellement une carte graphique intégrée pour l’affichage et un GPU NVIDIA pour l’apprentissage en profondeur. Mais après la récente mise à jour, la session GDM a commencé à se replier sur Xorg avec le GPU NVIDIA comme GPU principal. Le problème était que:

  • il a réduit la RAM disponible sur le GPU
  • il a embourbé l'ensemble du système lors d'une formation de réseau de neurones
  • il a augmenté la consommation d'énergie (= moins de vie de la batterie)

J'ai exécuté nvidia-smi après le démarrage. Je m'attendais à voir No running processes found, mais j'ai vu une liste de processus Xorg qui utilisaient mon GPU NVIDIA. Cela signifie que Gnome Display Manager a utilisé une session Xorg avec un GPU NVIDIA comme GPU principal.

J'ai examiné /var/log/Xorg.0.log:

(II) xfree86: Adding drm device (/dev/dri/card1)
(II) systemd-logind: got fd for /dev/dri/card1 226:1 fd 11 paused 0
(II) xfree86: Adding drm device (/dev/dri/card0)
(II) systemd-logind: got fd for /dev/dri/card0 226:0 fd 12 paused 0
(**) OutputClass "nvidia" ModulePath extended to "/usr/lib/nvidia/xorg,/usr/lib/xorg/modules,/usr/lib/xorg/modules"
(**) OutputClass "nvidia" setting /dev/dri/card1 as PrimaryGPU

(**) signifie que le paramètre a été lu à partir du fichier de configuration! J'ai découvert que le fichier de configuration était /usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf. J'ai modifié le fichier de configuration pour définir la carte graphique intégrée Intel en tant que GPU principal:

Section "OutputClass"
    Identifier "intel"
    MatchDriver "i915"
    Driver "modesetting"
    Option "PrimaryGPU" "yes"                   # <<<<<< add this string
EndSection

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
#   Option "PrimaryGPU" "yes"                   # <<<<<< comment this string
    ModulePath "/usr/lib/nvidia/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection
1
Maksym Ganenko

J'aimerais ajouter une autre manière d'empêcher actuellement la carte Nvidia de gérer mon écran. Je commence simplement à gnome en sélectionnant Wayland au lieu de Xorg. Étant donné que Nvidia ne prend pas en charge Wayland, après la connexion, nvidia-smi ne montre aucun processus en cours.

Cependant, je peux toujours utiliser Nvidia pour des choses comme Tensorflow.

1
user890178