Wie installiere ich CUDA Toolkit 7/8/9 auf Debian 8 (Jessie) oder 9 (Stretch)?

26

Wie installiere ich Cuda Toolkit 7.0 oder 8 auf Debian 8?

Ich weiß , dass Debian 8 mit der Option kommt auf CUDA Toolkit 6.0 herunterzuladen und zu installieren verwenden apt-get install nvidia-cuda-toolkit, aber wie wollen Sie tun dies für CUDA Toolkit Version 7.0 oder 8?

Ich habe versucht, mit den Ubuntu-Installationsprogrammen zu installieren, wie unten beschrieben:

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

Es funktionierte jedoch nicht und die folgende Nachricht wurde zurückgegeben:

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
quelle
@nullgeppetto: Bitte folge den Anweisungen in meiner Antwort unten :-)
einpoklum - stelle Monica

Antworten:

30

Die folgenden Anweisungen gelten für CUDA 7.0, 7.5 und mehrere frühere (und wahrscheinlich spätere) Versionen. Was Debian-Distributionen betrifft, gelten sie für Jessie und Stretch und wahrscheinlich auch für andere Versionen. Sie setzen eine amd64 (x86_64) -Architektur voraus, aber Sie können sie problemlos für x86 (x86_32) anpassen.

Installationsvoraussetzungen

  • g ++ - Sie sollten die neueste GCC-Version verwenden, die von Ihrer CUDA-Version unterstützt wird. Für CUDA 7.x wäre dies die Version 4.9.3, die letzte der 4.x-Zeile. Für CUDA 8.0 werden GCC 5.x-Versionen unterstützt. Wenn Ihre Distribution standardmäßig GCC 5.x verwendet, verwenden Sie dies, andernfalls sollte GCC 5.4.0 dies tun. Frühere Versionen sind verwendbar, aber ich würde sie nicht empfehlen, schon aus Gründen der besseren Unterstützung der modernen C ++ - Funktionen für host-seitigen Code.
  • gcc - kommt mit g ++. Ich denke sogar, dass CMake möglicherweise standardmäßig nvcc anstelle von g ++ mit einem -xSchalter aufruft (aber nicht sicher).
  • libGLU - Mesa OpenGL-Bibliotheken (+ Entwicklungsdateien?)
  • libXi - X Window System Xinput-Erweiterungsbibliotheken (+ Entwicklungsdateien?)
  • libXmu - X Window System Bibliothek "Verschiedene Dienstprogramme" (+ Entwicklungsdateien?)
  • Linux-Kernel - Header für die Kernel-Version, die Sie ausführen.

Wenn Sie eine Liste bestimmter Pakete wünschen, hängt dies von der genauen Verteilung ab. Versuchen Sie jedoch Folgendes (für 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

Und Sie können einige -dbgVersionen dieser Pakete zum Debuggen von Symbolen hinzufügen .

Ich bin mir ziemlich sicher, dass dies alles abdeckt - aber vielleicht habe ich etwas verpasst, das ich gerade installiert hatte. Auch CUDA kann mit Klirren arbeiten , zumindest experimentell, aber ich habe nicht versucht , dass.

Installieren des CUDA-Kerneltreibers

  1. Gehen Sie zur CUDA-Downloadseite von NVIDIA .
  2. Wählen Sie Linux> x86_64> Ubuntu und dann die jeweils neueste Version (zum Zeitpunkt des Schreibens: Ubuntu 15.04).
  3. Wählen Sie die Option .run file .
  4. Laden Sie die .run-Datei herunter (derzeit diese ). Stellen Sie sicher , dass Sie es nicht hineinstecken /tmp.
  5. Sprechen Sie die .run Datei ausführbar: chmod a+x cuda_7.5.18_linux.run.
  6. Werden Sie root.
  7. Führen Sie die .run-Datei aus: Geben Sie vor, ihre alberne Shrink-Wrap-Lizenz zu akzeptieren. Sagen Sie "Ja", um nur den NVIDIA-Kerneltreiber zu installieren, und sagen Sie "Nein" zu allem anderen.

Die Installation sollte Ihnen mitteilen, dass der NVIDIA-Kernel-Treiber installiert sein muss, Sie sollten jedoch einen Neustart durchführen, bevor Sie die Toolkit-Installation fortsetzen / wiederholen. So...

  1. Nachdem dies anscheinend gelungen ist, starten Sie neu.

CUDA selbst installieren

  1. Sei root.
  2. Suchen und ausführen cuda_7.5.18_linux.run
  3. Sagen Sie diesmal Nein, um den Treiber zu installieren, aber Ja, um alles andere zu installieren, und akzeptieren Sie die Standardpfade (oder ändern Sie sie, je nachdem, was für Sie funktioniert).

Das Installationsprogramm schlägt wahrscheinlich fehl . Das ist eine gute Sache, vorausgesetzt, es ist die Art von Fehler, die wir erwarten: Es sollte Ihnen mitteilen, dass Ihre Compiler-Version nicht unterstützt wird - CUDA 7.0 oder 7.5 unterstützt bis zu gcc 4.9 und Sie haben standardmäßig eine 5.x-Version. Wenn Sie nun eine Meldung über fehlende Bibliotheken erhalten , bedeutet dies, dass meine obigen Anweisungen zu den Voraussetzungen irgendwie fehlgeschlagen sind. Sie sollten hier einen Kommentar abgeben, damit ich sie beheben kann. Angenommen, Sie haben den "guten Fehler" erhalten, fahren Sie fort mit:

  1. Rufen Sie die RUN-Datei erneut auf, diesmal mit der Option --override.
  2. Treffen Sie die gleichen Entscheidungen wie in Schritt 11.

CUDA sollte nun standardmäßig unter /usr/local/cuda(das ist ein Symlink) installiert sein . Aber wir sind noch nicht fertig!

Anweisen des NVIDIA nvcc-Compilers zur Verwendung der richtigen g ++ - Version

Der CUDA-Compiler von NVIDIA ruft g ++ tatsächlich als Teil des Verknüpfungsprozesses auf und / oder um tatsächliche C ++ - und nicht .cu-Dateien zu kompilieren. Ich glaube. Wie auch immer, standardmäßig wird ausgeführt, was sich auf Ihrem Weg befindet g++. aber wenn Sie einen andereng++ darunter platzieren /usr/local/cuda/bin, wird dieser zuerst verwendet! So...

  1. Ausführen symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++(und vielleicht auch symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc.

Das ist es.

Installation ausprobieren

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

Der Build sollte erfolgreich abgeschlossen werden, und wenn Sie dies tun

  1. ./vectorAdd

Sie sollten die folgende Ausgabe erhalten:

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

Anmerkungen

  • Sie müssen das NVIDIA GDK (GPU Development Kit) nicht installieren, aber es tut nicht weh und kann für einige nützlich sein. Installieren Sie es im Stammverzeichnis Ihres Systems. es ist ziemlich sicher , und es gibt ein Deinstallationsprogramm danach: /usr/bin/uninstall_gdk.pl. In CUDA 8 ist es bereits in CUDA IIANM integriert.
  • Installieren Sie keine zusätzlichen Pakete mit Namen wie nvidia -... oder cuda ...; Sie mögen nicht weh tun, aber sie werden bestimmt nicht helfen.
  • Bevor Sie eine dieser Aktionen ausführen, sollten Sie sicherstellen, dass Ihre GPU überhaupt erkannt wird lspci | grep -i nvidia.
einpoklum - Monica wieder einsetzen
quelle
... nun, fast alles: Sie können den Kerneltreiber natürlich nicht installieren, wenn Sie nicht root sind. Sie können jedoch CUDA-Code ohne diesen Code erstellen (nicht ausführen).
einpoklum - wieder Monica
Habe es einfach versucht. der cuda installer lehnt die installation nur ab. Es gibt eine Warnung aus, dass Sie die .deb-Datei verwenden sollten.
@WernerVanBelle: Kannst du das als separate Frage posten? Oder zumindest die Warnung zitieren, wenn sie zu kurz ist? Außerdem hat IIRC eine "Force" -Befehlszeilenoption. Haben Sie das versucht?
einpoklum - wieder Monica
All dies - mit Ausnahme der Treiberinstallation - kann auch als Nicht-Root-Benutzer in Ihrem Home-Verzeichnis ausgeführt werden. Dies würde jedoch nur ausreichen, um CUDA-Code zu erstellen und nicht, um ihn auszuführen . Dazu benötigen Sie einen geeigneten nVIDIA-Treiber in Ihrem Kernel, und nur ein Root-Benutzer kann dies durchführen. Entschuldigung für meinen früheren Kommentar, der etwas anderes vorschlug. Um als Benutzer ohne Rootberechtigung zu arbeiten, müssen Sie möglicherweise eine eigene Version von gcc / g ++ erstellen, wenn Ihre Distribution nur eine neuere Version enthält (für CUDA 7.x benötigen Sie gcc 4.9.3).
einpoklum - wieder Monica
@celavek: Wenn Sie der Meinung sind, dass diese Antwort Debian 9 nicht gut genug abdeckt, erklären Sie bitte, warum, bevor Sie eine vorgeschlagene Bearbeitung vornehmen.
einpoklum - wieder Monica
6

Ich denke, Sie sollten es mit Backports machen, ich installiere nvidia-cuda-toolkit7.5 tatsächlich reibungslos auf Debian Jessie.

Fügen Sie Backports hinzu, die nicht kostenlos sind /etc/apt/sources.list. Für mich (auf Jessie) habe ich das einfach ganz unten in meine Datei geschrieben:

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

gespeichert, apt-get Update und schließlich:

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

Nach dem Hinzufügen von contrib und non-free repos zu sources.list und dem Ausführen von apt-get update befindet sich CUDA Toolkit in Synaptic unter nvidia-cuda-toolkit.

Standardbild
quelle
1

Mit Debian 9 "strecken" mit einer älteren GPU (GT 720) sind zusätzliche Schritte erforderlich. Ich sehe, dass jemand oben (@celavek) dies hatte, also werde ich ausfüllen, was für mich funktioniert hat. Die akzeptierte Antwort deckt fast alles ab, was benötigt wird. Dies zu erkennen ist ein hübsches Nischenbeispiel, aber hoffentlich gibt es hier einige nützliche Dinge, die den Leuten ein paar Google-Suchen ersparen.

Klicken Sie für CUDA 8.0 in Schritt 1 auf "Legacy Releases" und wählen Sie "CUDA Toolkit 8.0 GA 2" aus. Dann Linux, x86_64, Ubuntu, 16.04, Runfile (lokal).

Ich habe den mitgelieferten Treiber nicht akzeptiert und stattdessen meine zuvor installierten 384.130-Treiber für meine GPU verwendet. Mehr Infos dazu hier: Debian Wiki . Ihr Kilometerstand kann variieren, ich kann nicht für andere Karten als eine GT 720 sprechen. Dies war der von mir gewählte Weg, den ich (noch) nicht bereut habe.

Wenn die Installation fehlschlägt, weil in Schritt 12 nicht die lokale Datei InstallUtils.pm installiert werden kann, müssen Sie die Datei cuda_8.0.61_375.26_linux.run entpacken, sie jedoch mit dem Flag --tar mxvf ausführen. Dann kopiere (als root) InstallUtils.pm nach / 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

Nun sollte der Befehl von Schritt 12 erfolgreich sein.

Ihr Debian 9.0 kommt mit g ++, Version 6+, das geht nicht. Die Kompilierung von vectorAdd in Schritt 15 schlägt fehl. Ich folgte diesem Whitepaper: Installieren mehrerer Versionen von GCC , um Version 5.5.0 zu installieren. Für 5.5.0 benötigen Sie diese Datei

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

und packe den tarball so aus:

tar -xJf gcc-5.5.0.tar.xz

Ich musste einige Dinge aktualisieren (Bibliotheken und 32-Bit-Kompilierung hinzufügen), damit dies für mich funktioniert:

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

Jetzt können Sie den Compiler konfigurieren, erstellen und installieren.

Denken Sie daran, configure mit dem prefix = / usr / local / gcc / 5.5.0 Flagge

Jetzt können Sie das vectorAdd-Beispiel in Schritt 15 folgendermaßen kompilieren:

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

Oder dieses:

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

Es ist nicht erforderlich, das Makefile zu ändern, es behandelt die Compiler-Überschreibung korrekt.

Sie sollten jetzt eine funktionierende CUDA 8.0-Installation auf stretch haben.

Ingo
quelle
0

Versuchen Sie auf dieser Seite, Network Installer für Ubuntu zu verwenden:

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

Installer für Ubuntu 14. * sollten ausreichend kompatibel sein.

Tomasz Klim
quelle
1
Ich hätte erwähnen sollen, dass das Ubuntu-Installationsprogramm nicht funktioniert hat - den Beitrag aktualisiert, um dies widerzuspiegeln.
Greg
@ Greg, hast du herausgefunden, wie man Cuda schließlich auf Debian installiert?
nullgeppetto
@nullgeppetto Am Ende gab ich die Idee von Debian auf, da ich zu viele Kompatibilitätsprobleme fand, die ich nicht überwinden konnte.
Greg
@ Greg, hmmm, davor hatte ich Angst. Hast du dich für * ubuntu oder etwas anderes entschieden? Persönlich warte ich immer noch auf mein GTX 960, also werde ich es mit Debian versuchen ... Ich werde es Sie wissen lassen, wenn Sie wollen.
nullgeppetto