Come installare CUDA Toolkit 7/8/9 su Debian 8 (Jessie) o 9 (Stretch)?


26

Come installare Cuda Toolkit 7.0 o 8 su Debian 8?

So che Debian 8 viene fornito con l'opzione per scaricare e installare CUDA Toolkit 6.0 usando apt-get install nvidia-cuda-toolkit, ma come si fa per CUDA toolkit versione 7.0 o 8?

Ho provato a installare utilizzando i programmi di installazione di Ubuntu, come descritto di seguito:

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

Tuttavia non funzionava e veniva restituito il seguente messaggio:

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.

@nullgeppetto: prova a seguire le istruzioni nella mia risposta di seguito :-)
einpoklum - reinstalla Monica il

Risposte:


30

Le seguenti istruzioni sono valide per CUDA 7.0, 7.5 e diverse versioni precedenti (e probabilmente successive). Per quanto riguarda le distribuzioni Debian, sono valide per Jessie, Stretch e probabilmente altre versioni. Assumono un'architettura amd64 (x86_64), ma puoi facilmente adattarli per x86 (x86_32).

Prerequisiti per l'installazione

  • g ++ : è necessario utilizzare la versione GCC più recente supportata dalla versione di CUDA. Per CUDA 7.x questa sarebbe la versione 4.9.3, ultima della linea 4.x; per CUDA 8.0, sono supportate le versioni GCC 5.x. Se la tua distribuzione utilizza GCC 5.x per impostazione predefinita, usalo, altrimenti dovrebbe farlo GCC 5.4.0. Le versioni precedenti sono utilizzabili ma non le consiglierei, anche solo per il miglior supporto delle funzionalità C ++ moderne per il codice lato host.
  • gcc - viene fornito con g ++. Penso anche che CMake potrebbe inavvertitamente fare in modo che nvcc invochi gcc anziché g ++ in alcuni casi con un -xinterruttore (ma non ne sono sicuro).
  • libGLU - Librerie OpenGL di Mesa (+ file di sviluppo?)
  • libXi - Librerie di estensione Xinput di X Window System (+ file di sviluppo?)
  • libXmu - libreria "varie utility" del sistema X Window (+ file di sviluppo?)
  • Kernel Linux : intestazioni per la versione del kernel in esecuzione.

Se vuoi un elenco di pacchetti specifici, dipende esattamente da quale distribuzione, ma prova quanto segue (per 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

E potresti aggiungere alcune -dbgversioni di quei pacchetti per i simboli di debug.

Sono abbastanza sicuro che questo copre tutto - ma potrei aver perso qualcosa che avevo appena installato. Inoltre, CUDA può lavorare con clang , almeno sperimentalmente, ma non l'ho provato.

Installazione del driver del kernel CUDA

  1. Vai alla pagina dei download CUDA di NVIDIA .
  2. Scegli Linux> x86_64> Ubuntu , quindi la versione più recente disponibile (al momento della scrittura: Ubuntu 15.04).
  3. Scegli l' opzione del file .run .
  4. Scarica il file .run (attualmente questo ). Assicurati di non inserirlo /tmp.
  5. Rendere il file eseguibile file .run: chmod a+x cuda_7.5.18_linux.run.
  6. Diventa root.
  7. Esegui il file .run: fai finta di accettare la loro stupida licenza di termoretraibile; di '"si" all'installazione del solo driver del kernel NVIDIA e di "no" a tutto il resto.

L'installazione dovrebbe indicare che prevede di aver installato il driver del kernel NVIDIA, ma che è necessario riavviare prima di continuare / ripetere l'installazione del toolkit. Così...

  1. Apparentemente riuscito, riavvia.

Installa CUDA stesso

  1. Sii root.
  2. Individua ed esegui cuda_7.5.18_linux.run
  3. Questa volta, dì No all'installazione del driver, ma Sì all'installazione di tutto il resto e accetta i percorsi predefiniti (o modificali, qualunque cosa funzioni per te).

È probabile che ora il programma di installazione non riesca . Questa è una buona cosa supponendo che sia il tipo di errore che ci aspettiamo: dovrebbe dirti che la tua versione del compilatore non è supportata - CUDA 7.0 o 7.5 supporta fino a gcc 4.9 e hai una versione 5.x di default. Ora, se ricevi un messaggio sulle librerie mancanti , ciò significa che le mie istruzioni sopra relative ai prerequisiti in qualche modo sono fallite, e dovresti commentare qui in modo che io possa risolverle. Supponendo che tu abbia ottenuto il "buon fallimento", procedi a:

  1. Richiama nuovamente il file .run, questa volta con l'opzione --override.
  2. Fai le stesse scelte del passaggio 11.

CUDA ora dovrebbe essere installato, per impostazione predefinita in /usr/local/cuda(che è un link simbolico). Ma non abbiamo finito!

Indicare al compilatore NVIDIA NVIDIA di utilizzare la versione g ++ corretta

Il compilatore CUDA di NVIDIA chiama effettivamente g ++ come parte del processo di collegamento e / o per compilare file C ++ effettivi anziché .cu. Credo. Ad ogni modo, per impostazione predefinita esegue qualsiasi cosa si trovi sul tuo percorso g++; ma se ne metti un altrog++ sotto /usr/local/cuda/bin, lo userà per primo! Così...

  1. Esegui symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++(e per buona misura, forse anche symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc.

Questo è tutto.

Provando l'installazione

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

La compilazione dovrebbe concludersi correttamente e quando lo fai

  1. ./vectorAdd

dovresti ottenere il seguente output:

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

Gli appunti

  • Non è necessario installare NVIDIA GDK (GPU Development Kit), ma non fa male e potrebbe essere utile per alcuni. Installalo nella directory principale del tuo sistema; è abbastanza sicuro e c'è un programma di disinstallazione in seguito: /usr/bin/uninstall_gdk.pl. In CUDA 8 è già integrato in CUDA stesso IIANM.
  • Non installare pacchetti aggiuntivi con nomi come nvidia -... o cuda ...; potrebbero non ferire ma sicuramente non aiuteranno.
  • Prima di fare una qualsiasi di queste cose, potresti voler assicurarti che la tua GPU sia riconosciuta, usando lspci | grep -i nvidia.

... beh, quasi tutto questo: non puoi installare il driver del kernel se non sei root, ovviamente. Ma puoi creare (non eseguire) il codice CUDA senza di esso.
einpoklum - ripristina Monica il

Ho appena provato questo. il programma di installazione cuda si rifiuta solo di installare. Si salva con un avviso che è necessario utilizzare il file .deb.

@WernerVanBelle: puoi pubblicarlo come domanda separata? O almeno citare l'avvertimento se è troppo corto? Inoltre, IIRC ha qualche opzione "force" da riga di comando, ci hai provato?
einpoklum - ripristina Monica il

Tutto ciò, ad eccezione dell'installazione del driver, può essere eseguito anche come utente non root nella directory home, ma sarebbe sufficiente per creare il codice CUDA, non per eseguirlo . Per questo è necessario un driver nVIDIA appropriato nel proprio kernel e solo un utente root può farlo accadere. Ci scusiamo per il mio commento precedente che suggeriva il contrario. Inoltre, per compilare come utente non root, potresti dover creare la tua versione di gcc / g ++ se la tua distribuzione ha solo una versione più recente (per CUDA 7.x avresti bisogno di gcc 4.9.3).
einpoklum - ripristina Monica il

@celavek: se pensi che questa risposta non copra abbastanza bene Debian 9, spiega perché prima di apportare una modifica suggerita.
einpoklum - ripristina Monica il

6

Penso che dovresti farlo usando i backport, sto effettivamente installando senza problemi nvidia-cuda-toolkit7.5 su Debian Jessie.

Aggiungi backport, non gratuito, al tuo /etc/apt/sources.list. Per me (su jessie) ho appena messo questo in fondo al mio file:

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

salvato, apt-get update e infine:

apt-get install -t jessie-backports nvidia-cuda-toolkit

1

Dopo aver aggiunto contrib e repository non liberi a sources.list ed eseguito apt-get update, CUDA Toolkit è in Synaptic sotto nvidia-cuda-toolkit.


1

Con Debian 9 "stretch" con una GPU più vecchia (GT 720) sono necessari passaggi aggiuntivi. Vedo qualcuno sopra (@celavek) che ha avuto questo, quindi riempirò ciò che ha funzionato per me. La risposta accettata copre quasi tutto il necessario. Riconoscere questo è un esempio piuttosto di nicchia, ma speriamo che ci possano essere alcune cose utili qui che salveranno alcune ricerche su Google.

Per CUDA 8.0 al passaggio 1, fai clic su "Rilasci legacy" e seleziona "CUDA Toolkit 8.0 GA 2". Quindi Linux, x86_64, Ubuntu, 16.04, runfile (locale).

Non ho accettato il driver in pacchetto e invece ho usato i miei driver 384.130 precedentemente installati per la mia GPU. Maggiori informazioni qui: Debian Wiki . Il tuo chilometraggio può variare, non posso parlare per carte diverse da una GT 720. Questo è stato il percorso che ho scelto, non ho rimpianti (ancora).

Quando l'installazione non riesce a causa dell'incapacità di InstallUtils.pm locale nel passaggio 12, sarà necessario decomprimere il file cuda_8.0.61_375.26_linux.run ma eseguendolo con il flag --tar mxvf. Quindi (come root) copia InstallUtils.pm in / 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

Ora il comando passo 12 dovrebbe avere esito positivo.

Debian 9.0 viene fornito con g ++ versione 6+, questo non funziona. La compilazione di vectorAdd nel passaggio 15 non riuscirà. Ho seguito questo white paper: Installazione di più versioni di GCC per installare la versione 5.5.0. Per 5.5.0 è necessario questo file

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

e decomprimere il tarball con questo:

tar -xJf gcc-5.5.0.tar.xz

Ho dovuto aggiornare alcune cose (librerie e aggiungere compilation a 32 bit) affinché questo funzioni per me:

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

Ora puoi configurare, creare e installare il compilatore.

Ricorda di configurare con il flag --prefix = / usr / local / gcc / 5.5.0

Ora puoi compilare l'esempio vectorAdd nel passaggio 15 con questo:

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

O questo:

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

Non è necessario modificare il Makefile, gestisce correttamente la sostituzione del compilatore.

Ora dovresti avere un'installazione di CUDA 8.0 funzionante su stretch.


0

Prova a utilizzare Network Installer per Ubuntu da questa pagina:

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

I programmi di installazione per Ubuntu 14. * dovrebbero essere abbastanza compatibili.


1
Avrei dovuto menzionare che il programma di installazione di Ubuntu non funzionava - ho aggiornato il post per riflettere questo.
Greg,

@Greg, hai capito come installare Cuda su Debian alla fine?
nullgeppetto,

@nullgeppetto Ho finito per rinunciare all'idea di Debian perché ho trovato troppi problemi di compatibilità che non sono riuscito a superare.
Greg,

@Greg, hmmm, questo è quello di cui avevo paura .. Quindi, hai scelto * Ubuntu o qualcos'altro? Personalmente, sto ancora aspettando il mio GTX 960, quindi lo proverò su Debian ... Ti farò sapere se vuoi.
nullgeppetto,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.