web-dev-qa-db-fra.com

Carte NVIDIA pour CUDA et carte intégrée Intel pour l'affichage sur Ubuntu 16.04 (Dell xps 9560)

J'utilise Ubuntu 16.04, sur un ordinateur portable Dell XPS 9560 hautement compatible avec Linux. Cet ordinateur portable fournit deux cartes graphiques:

  • NVIDIA GeForce GTX 1050
  • Intel HD Graphics 630

Je voulais utiliser la carte NVIDIA uniquement pour CUDA, car elle ne dispose que de 4 Go de RAM et de la carte Intel pour l'interface utilisateur graphique.

Problèmes:

  • Si cela fonctionne, la carte nvidia n'est plus visible. Donc, si j'appelle nvidia-smi, la carte vidéo est désactivée.
  • Si cela ne fonctionne pas, je reçois un écran noir.
4
Marcus

La solution est basée sur ce post: https://Gist.github.com/tomwwright/f88e2ddb344cf99f299935e1312da88

Informations de mon système:

  • Dell XPS 9560
  • J'ai déjà installé les pilotes d'affichage CUDA 9.2 et Nvidia 396.37
  • Le noyau Ubuntu est 4.15.0-24-generic
  • J'utilise Gd3

Étape 1

Modifiez votre fichier en modifiant ce fichier:

Sudo vim /etc/default/grub

Et changer:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

par:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_rev_override=1"

Enfin, mettez à jour grub en utilisant cette commande:

Sudo update-grub

Si vous le souhaitez, vous pouvez utiliser l'outil grub-customizer en ajoutant le texte surligné en bleu:

enter image description here

Redémarrez votre ordinateur très important !!

Étape 2

Créez un service qui sélectionnera le processeur graphique Intel lorsque l'ordinateur sera éteint. Pour ce faire, créez un nouveau fichier:

Sudo vim /etc/init.d/intel-gpu

Avec ce prétendent:

#!/bin/bash
# /etc/init.d/intel-gpu

### BEGIN INIT INFO
# Provides:          intel-gpu
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Selects the intel GPU over the NVIDIA
### END INIT INFO

case "$1" in 
    start)
        ;;
    stop)
        /usr/bin/prime-select intel
        ;;
    *)
        echo "Usage: /etc/init.d/intel-gpu start|stop"
        exit 1
        ;;
esac

exit 0

Ajouter des droits exécutables:

Sudo chmod +x /etc/init.d/intel-gpu

Et enregistrez le nouveau service:

Sudo update-rc.d intel-gpu defaults

Étape 3

Maintenant, nous nous sommes assurés que, lors du démarrage de l'ordinateur, lightdm, gdm3, etc. utiliserait le processeur graphique Intel, car ce dernier a été activé pour la dernière fois que nous avons éteint l'ordinateur. Nous devons maintenant activer le GPU NVIDIA lorsque nous nous connectons à notre compte. Cependant, nous avons besoin d'un accès root pour cela et nous ne voulons pas Inviter une fenêtre demandant un mot de passe à chaque fois que nous nous connectons. Pour résoudre ce problème, nous allons créer un alias de commande dans le fichier de configuration de Sudo.

Tout d’abord, ouvrez le fichier de configuration Sudo à l’aide de la commande suivante:

Sudo visudo

Puis ajoutez ce contenu à la fin du fichier:

User_Alias ADMINS = <your_user>
Cmnd_Alias PRIME_SELECT = /usr/bin/prime-select
ADMINS ALL = NOPASSWD: PRIME_SELECT

où est votre nom d'utilisateur.

Cela nous permet d’appeler prime-select sans avoir à introduire de mot de passe.

Étape 4

Ajoutez un script de démarrage automatique pour remplacer la carte graphique par NVIDIA une fois que lighdm a déjà commencé à utiliser le processeur graphique d'Intel. A cette fin, ajoutez cette commande pour créer un nouveau fichier comme celui-ci:

vim ~/.config/autostart/nvidia-gpu.desktop

Et ajoutez ceci:

[Desktop Entry]
Name=NVIDIA GPU
Exec=Sudo prime-select nvidia
Type=Application
Terminal=false

Redémarrez votre ordinateur

Vous pouvez maintenant utiliser toute la mémoire de votre GPU NVIDIA. Vous pouvez le vérifier en appelant la commande nvidia-smi :

enter image description here

3
Marcus

Pour éviter les problèmes de connexion et, dans certains cas, il est recommandé d'éviter l'étape 4. Il est également utile d'augmenter la durée de vie de la batterie de votre ordinateur portable si vous n'activez la carte NVIDIA que lorsque cela est nécessaire. Cependant, ce n’est pas très pratique car vous devez ouvrir un terminal et écrire Sudo prime-select nvidia à chaque fois. Pour surmonter ce "problème", j'ai fait une extension de gnome 3 qui fait ça.

Pour que cela fonctionne, il suffit d'aller dans ce dossier:

cd ~/.local/share/gnome-Shell/extensions/

Et puis clonez ce dépôt:

git clone https://github.com/marcvivet/enable_cuda
mv enable_cuda [email protected]

Appuyez ensuite sur Alt + F2, entrez 'r' (pour redémarrer le bureau) ou redémarrez.

Une fois que vous avez terminé, allez dans l'outil gnome 3 Tweak et activez l'extension.

Le résultat devrait être et l'icône grise NVIDIA lorsqu'elle est désactivée:

enter image description here

Et vert lorsque vous cliquez sur l'icône pour activer CUDA.

enter image description here

Cette extension est très très simple et je ne vérifie pas l’état actuel de la carte NVIDIA. Donc, si vous utilisez cette icône, n'utilisez pas le terminal ...

0
Marcus