web-dev-qa-db-fra.com

Impossible d'installer CUDA après la rétrogradation du pilote nvidia sur Ubuntu 16.04

Récemment, CUDA a été mis à niveau vers la version 9.2 et le pilote nvidia vers nvidia-396 avec une mise à jour automatique régulière sur mon ordinateur portable compatible Ubuntu 16.04 Optimus, avec la carte vidéo Intel activée par défaut et l'accès à NVidia via bumblebee. Peu de temps après, j'ai essayé de lancer une application CUDA (en utilisant optirun <command>), et j'ai constaté que cela ne fonctionnait pas.

La première chose que j'ai faite a été de remplacer toutes les entrées de "nvidia-390" (si je me souviens bien, il s'agissait de 390) dans /etc/bumblebee/bumblebee.conf à "nvidia-396" - cela m'a déjà aidé plus d'une fois.

Ne fonctionne toujours pas (Cannot access secondary GPU - error: Could not load GPU driver). dmesg, et il y a une raison:

[  314.733284] NVRM: The NVIDIA GeForce GT 520M GPU installed in this system is
               NVRM:  supported through the NVIDIA 390.xx Legacy drivers. Please
               NVRM:  visit http://www.nvidia.com/object/unix.html for more
               NVRM:  information.  The 396.26 NVIDIA driver will ignore
               NVRM:  this GPU.  Continuing probe...

Oui, mon ordinateur portable est assez vieux, mais avec SSD et 12 Go RAM je ne ressens toujours pas le besoin de le remplacer. OK, on ​​dirait que je dois vivre avec nvidia-390:

Sudo apt install nvidia-390

On m'a dit qu'un grand nombre de paquets dépendants seraient désinstallés, y compris, semble-t-il, tous les éléments de CUDA 9.2. Zut. Je suis donc probablement coincé avec CUDA 9.0. Donc, après avoir tout désinstallé (et archivé dans synaptic, aucun paquet de nvidia-396 ou de cuda-9.2 n'est plus disponible), j'ai essayé de le récupérer:

Sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_AMD64.deb
Sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
Sudo apt-get update
Sudo apt-get install cuda

selon https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_Arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=debnetwork

Trois commandes, mais la dernière ... Houston, nous avons un problème!

$ Sudo apt install cuda
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package cuda

J'ai essayé la solution à partir d'une réponse à cette question . Installation de CUDA 8 sur Ubuntu 16: impossible de localiser le paquet cuda , c'est-à-dire:

dpkg -l | grep '^rc' | awk '{print $2}' | Sudo xargs dpkg --purge

Il a effectivement nettoyé beaucoup de choses, y compris certaines des paquets liés à cuda-9.2. Cependant, le problème est toujours là: je ne peux plus installer CUDA, peu importe si j'essaie la version 9.0 ou une autre version.

Des idées?

1
pazhosch

C'est un nouveau problème:

  • le fichier deb fourni par NVIDIA contient le pilote 396.26 requis par CUDA 9.2.88.
  • la version installée par Ubuntu est 396.24.
  • le système de paquets ubuntu définit des dépendances de sorte qu'un paquet nvidia, même une version plus récente, ne peut pas écraser celui installé par ubuntu.
  • SI vous pouvez mettre la main sur une pré-version du package de pilotes ubuntu 396.26 ALORS

    1. vous pouvez installer la pré-version d'ubuntu (vous devrez peut-être jouer avec synaptic pour être correctement installé)
    2. vous pouvez faire les trois premières étapes dans les instructions de debnetwork comme indiqué
    3. Au lieu de Sudo apt-get install cuda aller dans synaptic, recherchez cuda en minuscule (il existe!), Marquez-le pour qu'il soit installé et mettez à jour ses dépendances.
    4. Tous les fichiers nécessaires seront alors ajoutés, à l'exception du lien cuda sur lequel vous aurez cliqué qui sera brisé (car il n'a pas pu installer sa propre version de 396.26).
    5. Ce n'est pas grave: c'est un métapaquet, il n'est pas nécessaire de l'installer, en quelque sorte. Marquez pour l'enlèvement. Lorsque vous cliquez sur Appliquer, Synaptic peut laisser des traces sur les restes du paquet mort, ce qui semble mauvais mais a pour effet secondaire de retirer son cadavre. Réessayez et si c’était le seul paquet cassé, l’installation fonctionnerait.
    6. En fonction de ce que vous avez installé dans quel ordre, vous pouvez jouer à un jeu de logique similaire pour vous débarrasser des paquets cassés, mais c'est faisable. Je suggère fortement de ne pas redémarrer tant que vous ne les avez pas en ordre. Je suis sûr que vous verrez bientôt la sortie officielle. Si seulement vous pouviez trouver une copie préliminaire, ce serait bien ...
      https://launchpad.net/~bstudent/+archive/ubuntu/nvidia-graphics-drivers-396.26-copy-of-staging-ppa-20180522
1
B Student

Voici une solution de contournement plus ancienne de NVIDIA et de CUDA en tant que solution pour la reconnaissance complète des cartes Optimus.

Vous devez d'abord désinstaller les pilotes nvidia installés, redémarrer sans pilotes nvidia. Ensuite, procéder comme ici est décrit dans le lien suivant. C'est humble, mais cela fonctionne comme solution pour votre ancien chipset.

Comment puis-je installer le pilote Nvidia GT 520 et Cuda 5.0 dans Ubuntu13.04?

0
dschinn1001

Au bout d’un moment, j’ai pu contourner ce problème. Qu'est-ce que j'ai fait exactement:

  • Nettoyé tout ce qui contient cuda dans Synaptic.
  • Forçage de la version du package cuda-drivers vers 390.xx dans Synaptic.
  • Est-ce que apt update puis dpkg --configure -a pour résoudre les dépendances brisées, puis apt update à nouveau.

  • Ensuite, Sudo apt install cuda fonctionnait, mais me proposait quand même d'installer cuda 9.2 et de passer à nvidia-396, malgré le verrouillage du pilote. Mais Sudo apt install cuda-9-1 ne m'a pas compilé et m'a permis d'installer CUDA 9.1 avec nvidia-390 (j'ai constaté que le pilote 9.1 fonctionne également avec nvidia-390, c'est pourquoi pas la 9.0).

Après cela (et après un redémarrage), toutes mes applications CUDA fonctionnent avec optirun jusqu'à maintenant. :)

Le seul ennui mineur que j'ai rencontré plus tard est que apt dist-upgrade m'a toujours proposé de mettre à niveau nvidia-390 (mais que apt upgrade ne l'utilisait pas). Résolu ce problème avec apt-mark hold nvidia-390, et le paquet apparaît maintenant comme "verrouillé" dans Synaptic. De plus, même si j'essaye de lancer apt install cuda manuellement, il y a maintenant une erreur:

The following packages have unmet dependencies:
 cuda : Depends: cuda-9-2 (>= 9.2.148) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

mais il n'y a pas de paquets cassés en fait, il semble donc que je ne sois plus en mesure d'installer accidentellement la mauvaise version de CUDA.

0
pazhosch