Comment installer CUDA Toolkit 7/8/9 sur Debian 8 (Jessie) ou 9 (Stretch)?

26

Comment installer Cuda Toolkit 7.0 ou 8 sur Debian 8?

Je sais que Debian 8 est livré avec la possibilité de télécharger et d'installer CUDA Toolkit 6.0 à l' aide de apt-get install nvidia-cuda-toolkit, mais comment procédez-vous pour CUDA toolkit version 7.0 ou 8?

J'ai essayé d'installer à l'aide des programmes d'installation d'Ubuntu, comme décrit ci-dessous:

sudo wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0-28_amd64.deb

dpkg -i cuda-repo-ubuntu1404_7.0-28_amd64.deb

sudo apt-get update

sudo apt-get install -y cuda

Cependant, cela n'a pas fonctionné et le message suivant a été renvoyé:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 cuda : Depends: cuda-7-0 (= 7.0-28) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Greg
la source
@nullgeppetto: Veuillez essayer de suivre les instructions dans ma réponse ci-dessous :-)
einpoklum - réintégrer Monica

Réponses:

30

Les instructions suivantes sont valables pour CUDA 7.0, 7.5 et plusieurs versions précédentes (et probablement ultérieures). En ce qui concerne les distributions Debian, elles sont valables pour Jessie et Stretch et probablement d'autres versions. Ils supposent une architecture amd64 (x86_64), mais vous pouvez facilement les adapter pour x86 (x86_32).

Conditions préalables à l'installation

  • g ++ - Vous devez utiliser la dernière version de GCC prise en charge par votre version de CUDA. Pour CUDA 7.x, ce serait la version 4.9.3, dernière de la ligne 4.x; pour CUDA 8.0, les versions GCC 5.x sont prises en charge. Si votre distribution utilise GCC 5.x par défaut, utilisez-le, sinon GCC 5.4.0 devrait le faire. Les versions antérieures sont utilisables mais je ne les recommanderais pas, ne serait-ce que pour la meilleure prise en charge de la fonctionnalité C ++ moderne pour le code côté hôte.
  • gcc - est livré avec g ++. Je pense même que CMake pourrait par défaut avoir nvcc invoquer gcc plutôt que g ++ dans certains cas avec un -xcommutateur (mais pas sûr à ce sujet).
  • libGLU - Bibliothèques Mesa OpenGL (+ fichiers de développement?)
  • libXi - Bibliothèques d'extensions Xinput System Xput (+ fichiers de développement?)
  • libXmu - Bibliothèque "utilitaires divers" du système X Window (+ fichiers de développement?)
  • Noyau Linux - en-têtes de la version du noyau que vous utilisez.

Si vous voulez une liste de packages spécifiques, cela dépend exactement de la distribution, mais essayez ce qui suit (pour CUDA 7.x):

sudo apt-get install gcc g++ gcc-4.9 g++-4.9 libxi libxi6 libxi-dev libglu1-mesa libglu1-mesa-dev libxmu6 libxmu6-dev linux-headers-amd64 linux-source

Et vous pourriez ajouter quelques -dbgversions de ces packages pour le débogage des symboles.

Je suis presque sûr que cela couvre tout - mais j'ai peut-être raté quelque chose que je venais d'installer. De plus, CUDA peut fonctionner avec Clang , au moins expérimentalement, mais je n'ai pas essayé cela.

Installation du pilote du noyau CUDA

  1. Accédez à la page de téléchargement de CUDA de NVIDIA .
  2. Choisissez Linux> x86_64> Ubuntu , puis quelle que soit la dernière version dont ils disposent (au moment de la rédaction: Ubuntu 15.04).
  3. Choisissez l' option de fichier .run .
  4. Téléchargez le fichier .run (actuellement celui-ci ). Assurez-vous de ne pas le mettre /tmp.
  5. Faire le fichier exécutable .run: chmod a+x cuda_7.5.18_linux.run.
  6. Devenez root.
  7. Exécutez le fichier .run: faites semblant d'accepter leur stupide licence de film rétractable; dites "oui" à l'installation du pilote du noyau NVIDIA uniquement, et dites "non" à tout le reste.

L'installation doit vous indiquer qu'elle s'attend à avoir installé le pilote du noyau NVIDIA, mais que vous devez redémarrer avant de poursuivre / réessayer l'installation de la boîte à outils. Alors...

  1. Après avoir apparemment réussi, redémarrez.

Installer CUDA lui-même

  1. Soyez root.
  2. Localiser et exécuter cuda_7.5.18_linux.run
  3. Cette fois-ci, dites Non à l'installation du pilote, mais Oui à l'installation de tout le reste, et acceptez les chemins par défaut (ou modifiez-les, selon ce qui vous convient).

Le programme d'installation est susceptible d' échouer maintenant . C'est une bonne chose en supposant que c'est le genre d'échec auquel nous nous attendons: cela devrait vous dire que votre version du compilateur n'est pas prise en charge - CUDA 7.0 ou 7.5 prend en charge jusqu'à gcc 4.9 et vous avez une version 5.x par défaut. Maintenant, si vous recevez un message sur les bibliothèques manquantes , cela signifie que mes instructions ci-dessus concernant les prérequis ont échoué, et vous devriez commenter ici afin que je puisse les corriger. En supposant que vous avez obtenu le «bon échec», passez à:

  1. Appelez à nouveau le fichier .run, cette fois avec l'option --override.
  2. Faites les mêmes choix qu'à l'étape 11.

CUDA devrait maintenant être installé, par défaut sous /usr/local/cuda(c'est un lien symbolique). Mais nous n'avons pas fini!

Demander au compilateur nvcc de NVIDIA d'utiliser la bonne version g ++

Le compilateur CUDA de NVIDIA appelle en fait g ++ dans le cadre du processus de liaison et / ou pour compiler les fichiers C ++ réels plutôt que .cu. Je pense. Quoi qu'il en soit, il exécute par défaut tout ce qui se trouve sur votre chemin en tant que g++; mais si vous placez un autreg++ sous /usr/local/cuda/bin, il l'utilisera en premier! Alors...

  1. Exécuter symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++(et pour faire bonne mesure, peut-être aussi symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc.

C'est ça.

Essayer l'installation

  1. cd /root/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd
  2. make

La construction doit se terminer avec succès, et quand vous le faites

  1. ./vectorAdd

vous devriez obtenir la sortie suivante:

root@mymachine:~/NVIDIA_CUDA-7.5_Samples/0_Simple/vectorAdd# ./vectorAdd
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

Remarques

  • Vous n'avez pas besoin d'installer le NVIDIA GDK (Kit de développement GPU), mais cela ne fait pas de mal et cela pourrait être utile pour certains. Installez-le dans le répertoire racine de votre système; il est assez sûr et il y a un désinstalleur après: /usr/bin/uninstall_gdk.pl. Dans CUDA 8, il est déjà intégré à CUDA lui-même IIANM.
  • N'installez pas de packages supplémentaires avec des noms comme nvidia -... ou cuda ...; ils pourraient ne pas faire de mal mais ils ne vont certainement pas aider.
  • Avant de faire l'une de ces choses, vous voudrez peut-être vous assurer que votre GPU est reconnu, en utilisant lspci | grep -i nvidia.
einpoklum - réintégrer Monica
la source
... eh bien, presque tout cela: vous ne pouvez pas installer le pilote du noyau si vous n'êtes pas root, bien sûr. Mais vous pouvez construire (pas exécuter) du code CUDA sans lui.
einpoklum - réintègre Monica le
Je viens d'essayer ça. le programme d'installation de cuda refuse simplement d'installer. Il sort avec un avertissement que vous devez utiliser le fichier .deb.
@WernerVanBelle: Pouvez-vous publier cela comme une question distincte? Ou au moins citer l'avertissement s'il est trop court? De plus, l'IIRC a une option de ligne de commande "forcer", avez-vous essayé cela?
einpoklum - réintègre Monica le
Tout cela - à l'exception de l'installation du pilote - peut également être effectué en tant qu'utilisateur non root dans votre répertoire personnel, mais cela ne suffirait qu'à construire du code CUDA, pas à l' exécuter . Vous avez besoin d'un pilote nVIDIA approprié dans votre noyau pour cela, et seul un utilisateur root peut y arriver. Désolé pour mon commentaire précédent qui suggérait le contraire. De plus, pour créer en tant qu'utilisateur non root, vous devrez peut-être créer votre propre version de gcc / g ++ si votre distribution n'a qu'une version plus récente (pour CUDA 7.x, vous aurez besoin de gcc 4.9.3).
einpoklum - réintègre Monica le
@celavek: si vous pensez que cette réponse ne couvre pas assez bien Debian 9, veuillez expliquer pourquoi avant de faire une suggestion de modification.
einpoklum - réintègre Monica
6

Je pense que vous devriez le faire en utilisant les rétroportages, nvidia-cuda-toolkitj'installe en fait facilement 7.5 sur Debian Jessie.

Ajoutez des rétroportages, non gratuits, à votre /etc/apt/sources.list. Pour moi (sur jessie) je viens de mettre ça au bas de mon dossier:

# jessie-backports
deb http://httpredir.debian.org/debian jessie-backports main contrib non-free

enregistré, mise à jour apt-get, et enfin:

apt-get install -t jessie-backports nvidia-cuda-toolkit
Poso
la source
1

Après avoir ajouté contrib et des repos non libres à sources.list et exécuté la mise à jour apt-get, CUDA Toolkit est dans Synaptic sous nvidia-cuda-toolkit.

Image par défaut
la source
1

Avec Debian 9 "stretch" avec un ancien GPU (GT 720), des étapes supplémentaires sont nécessaires. Je vois que quelqu'un au-dessus (@celavek) avait cela, alors je vais remplir ce qui a fonctionné pour moi. La réponse acceptée couvre presque tout ce dont vous avez besoin. Reconnaître cela est un joli exemple de niche, mais j'espère qu'il peut y avoir des choses utiles ici qui permettront aux gens d'économiser quelques recherches sur Google.

Pour CUDA 8.0 à l'étape 1, cliquez sur "Legacy Releases" et sélectionnez "CUDA Toolkit 8.0 GA 2". Puis Linux, x86_64, Ubuntu, 16.04, runfile (local).

Je n'ai pas accepté le pilote fourni et j'ai plutôt utilisé mes pilotes 384.130 précédemment installés pour mon GPU. Plus d'informations ici: Debian Wiki . Votre kilométrage peut varier, je ne peux pas parler de cartes autres qu'une GT 720. C'est la voie que j'ai choisie, je n'ai (encore) aucun regret.

Lorsque l'installation échoue en raison d'une incapacité à InstallUtils.pm local à l'étape 12, vous devrez décompresser le fichier cuda_8.0.61_375.26_linux.run mais en l'exécutant avec l'indicateur --tar mxvf. Ensuite (en tant que root) copiez InstallUtils.pm dans / usr / lib / x86_64-linux-gnu / pearl-base:

./cuda_8.0.61_375.26_linux.run --tar mxvf
sudo cp InstallUtils.pm /usr/lib/x86_64-linux-gnu/perl-base

La commande de l'étape 12 devrait maintenant réussir.

Votre Debian 9.0 est livrée avec g ++ version 6+, cela ne fonctionnera pas. La compilation de vectorAdd à l'étape 15 échouera. J'ai suivi ce livre blanc: Installation de plusieurs versions de GCC pour installer la version 5.5.0. Pour 5.5.0, vous voudrez ce fichier

wget http://mirrors.concertpass.com/gcc/releases/gcc-5.5.0/gcc-5.5.0.tar.xz

et décompressez l'archive avec ceci:

tar -xJf gcc-5.5.0.tar.xz

J'avais besoin de mettre à jour certaines choses (bibliothèques et ajouter une compilation 32 bits) pour que cela fonctionne pour moi:

sudo apt-get install libgmp3-dev libmpfr-dev libmpc-dev
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential gcc-multilib rpm libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386

Vous pouvez maintenant configurer, créer et installer le compilateur.

Rappelez - vous de configurer avec le prefix = / usr / local / gcc / 5.5.0 drapeau

Vous pouvez maintenant compiler l'exemple vectorAdd à l'étape 15 avec ceci:

make HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++

Ou ca:

export HOST_COMPILER=/usr/local/gcc/5.5.0/bin/g++
make

Il n'est pas nécessaire de modifier le Makefile, il gère correctement le remplacement du compilateur.

Vous devriez maintenant avoir une installation CUDA 8.0 fonctionnelle sur Stretch.

Ingo
la source
0

Essayez d'utiliser les programmes d'installation réseau pour Ubuntu à partir de cette page:

https://developer.nvidia.com/cuda-downloads#linux

Les programmes d'installation pour Ubuntu 14. * devraient être suffisamment compatibles.

Tomasz Klim
la source
1
J'aurais dû mentionner que le programme d'installation d'ubuntu ne fonctionnait pas - a mis à jour le message pour refléter cela.
Greg
@Greg, avez-vous compris comment installer éventuellement Cuda sur Debian?
nullgeppetto
@nullgeppetto J'ai fini par abandonner l'idée de Debian car j'ai trouvé trop de problèmes de compatibilité que je n'ai pas pu surmonter.
Greg
@Greg, hmmm, c'est ce dont j'avais peur .. Alors, tu es allé pour * ubuntu ou autre chose? Personnellement, j'attends toujours mon gtx 960, donc je vais essayer Debian ... Je vous ferai savoir si vous le souhaitez.
nullgeppetto