Jak zainstalować CUDA Toolkit 7/8/9 na Debian 8 (Jessie) lub 9 (Stretch)?

26

Jak zainstalować Cuda Toolkit 7.0 lub 8 na Debian 8?

Wiem, że Debian 8 zawiera opcję pobrania i zainstalowania CUDA Toolkit 6.0 przy użyciu apt-get install nvidia-cuda-toolkit, ale jak to zrobić dla CUDA Toolkit w wersji 7.0 lub 8?

Próbowałem zainstalować przy użyciu instalatorów Ubuntu, jak opisano poniżej:

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

Jednak to nie zadziałało i zwrócono następujący komunikat:

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
źródło
@nullgeppetto: Spróbuj wykonać instrukcje podane w mojej odpowiedzi poniżej :-)
einpoklum - przywróć Monikę

Odpowiedzi:

30

Poniższe instrukcje dotyczą CUDA 7.0, 7.5 oraz kilku poprzednich (i prawdopodobnie późniejszych) wersji. Jeśli chodzi o dystrybucje Debiana, są one ważne dla Jessie i Stretch i prawdopodobnie innych wersji. Zakładają architekturę amd64 (x86_64), ale można je łatwo dostosować do x86 (x86_32).

Wymagania wstępne instalacji

  • g ++ - Powinieneś użyć najnowszej wersji GCC obsługiwanej przez twoją wersję CUDA. W przypadku CUDA 7.x byłaby to wersja 4.9.3, ostatnia z linii 4.x; dla CUDA 8.0 obsługiwane są wersje GCC 5.x. Jeśli twoja dystrybucja domyślnie korzysta z GCC 5.x, użyj tego, w przeciwnym razie GCC 5.4.0 powinien zrobić. Wcześniejsze wersje są użyteczne, ale nie poleciłbym ich, choćby ze względu na lepszą obsługę nowoczesnych funkcji C ++ dla kodu po stronie hosta.
  • gcc - pochodzi z g ++. Myślę nawet, że CMake może domyślnie wywoływać, że nvcc wywołuje gcc zamiast g ++ w niektórych przypadkach z -xprzełącznikiem (ale nie jestem tego pewien).
  • libGLU - biblioteki OpenGL Mesa (+ pliki programistyczne?)
  • libXi - biblioteki rozszerzeń Xinput w systemie X Window System (+ pliki programistyczne?)
  • libXmu - biblioteka „różnych narzędzi” systemu X Window System (+ pliki programistyczne?)
  • Jądro Linux - nagłówki dla uruchomionej wersji jądra.

Jeśli chcesz uzyskać listę konkretnych pakietów, która zależy od konkretnej dystrybucji, ale wypróbuj następujące rozwiązania (w przypadku 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

I możesz dodać niektóre -dbgwersje tych pakietów do debugowania symboli.

Jestem całkiem pewien, że to wszystko to covery - ale mogę coś przeoczyć Właśnie już zainstalowany. Ponadto CUDA może pracować z clang , przynajmniej eksperymentalnie, ale nie próbowałem tego.

Instalowanie sterownika jądra CUDA

  1. Przejdź do strony pobierania NVIDIA CUDA .
  2. Wybierz Linux> x86_64> Ubuntu , a następnie jakąkolwiek najnowszą wersję mają (w momencie pisania: Ubuntu 15.04).
  3. Wybierz opcję pliku .run .
  4. Pobierz plik .run (obecnie ten ). Pamiętaj, aby go nie wkładać /tmp.
  5. Dodać do pliku wykonywalnego .run: chmod a+x cuda_7.5.18_linux.run.
  6. Zostań rootem.
  7. Uruchom plik .run: Udawaj, że akceptujesz ich głupią licencję na kurczenie; powiedz „tak”, aby zainstalować tylko sterownik jądra NVIDIA, i powiedz „nie” we wszystkim innym.

Instalacja powinna poinformować Cię, że spodziewa się, że zainstalujesz sterownik jądra NVIDIA, ale powinieneś zrestartować komputer przed kontynuowaniem / ponowną instalacją zestawu narzędzi. Więc...

  1. Po najwyraźniej powodzeniu uruchom ponownie.

Instalowanie samej CUDA

  1. Zrootuj się.
  2. Zlokalizuj i uruchom cuda_7.5.18_linux.run
  3. Tym razem powiedz Nie, aby zainstalować sterownik, ale Tak, aby zainstalować wszystko inne i zaakceptuj domyślne ścieżki (lub zmień je, cokolwiek działa dla Ciebie).

Instalator prawdopodobnie teraz zawiedzie . To dobrze, zakładając, że tego rodzaju awarii się spodziewamy: Powinien powiedzieć, że twoja wersja kompilatora nie jest obsługiwana - CUDA 7.0 lub 7.5 obsługuje do gcc 4.9 i domyślnie masz wersję 5.x. Teraz, jeśli pojawi się komunikat o brakujących bibliotekach , oznacza to, że moje powyższe instrukcje dotyczące wymagań wstępnych jakoś nie powiodły się, i powinieneś skomentować tutaj, abym mógł je naprawić. Zakładając, że masz „dobrą porażkę”, przejdź do:

  1. Ponownie wywołaj plik .run, tym razem z opcją --override.
  2. Dokonaj tych samych wyborów, co w kroku 11.

CUDA powinna być teraz domyślnie zainstalowana pod /usr/local/cuda(to jest dowiązanie symboliczne). Ale jeszcze nie skończyliśmy!

Nakazanie kompilatorowi NVIDIA nvcc, aby używał właściwej wersji g ++

Kompilator CUDA firmy NVIDIA faktycznie wywołuje g ++ jako część procesu łączenia i / lub do kompilacji rzeczywistych plików C ++ zamiast plików .cu. Myślę. W każdym razie domyślnie działa to, co jest na twojej drodze jako g++; ale jeśli umieścisz innąg++ pod /usr/local/cuda/bin, wykorzysta to najpierw! Więc...

  1. Wykonaj symlink /usr/bin/g++-4.9 /usr/local/cuda/bin/g++(i na wszelki wypadek może też symlink /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc.

to jest to!

Próbowanie instalacji

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

Kompilacja powinna zakończyć się pomyślnie, a kiedy to zrobisz

  1. ./vectorAdd

powinieneś otrzymać następujące dane wyjściowe:

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

Notatki

  • Nie musisz instalować NVIDIA GDK (GPU Development Kit), ale to nie boli i może być przydatne dla niektórych. Zainstaluj go w katalogu głównym systemu; to całkiem bezpieczne i nie ma deinstalatora potem: /usr/bin/uninstall_gdk.pl. W CUDA 8 jest już zintegrowany z samym CUDA IIANM.
  • Nie instaluj dodatkowych pakietów o nazwach takich jak nvidia -... lub cuda ...; mogą nie skrzywdzić, ale na pewno nie pomogą.
  • Przed wykonaniem którejkolwiek z tych czynności możesz upewnić się, że Twój procesor graficzny jest w ogóle rozpoznawany za pomocą lspci | grep -i nvidia.
einpoklum - przywróć Monikę
źródło
... cóż, prawie wszystko: oczywiście nie możesz zainstalować sterownika jądra, jeśli nie jesteś rootem. Ale bez niego możesz zbudować (nie uruchamiać) kod CUDA.
einpoklum
Właśnie tego spróbowałem. instalator cuda po prostu odmawia instalacji. Jest wysyłany z ostrzeżeniem, że należy użyć pliku .deb.
@WernerVanBelle: Czy możesz to opublikować jako osobne pytanie? A przynajmniej zacytować ostrzeżenie, jeśli jest za krótkie? Ponadto IIRC ma opcję wiersza polecenia „wymuś”, czy próbowałeś tego?
einpoklum
Wszystko to - oprócz instalacji sterownika - można również wykonać jako użytkownik inny niż root w katalogu domowym, ale wystarczyłoby to tylko do zbudowania kodu CUDA, a nie do jego uruchomienia . W tym celu potrzebujesz odpowiedniego sterownika nVIDIA w swoim jądrze i tylko root może to zrobić. Przepraszam za mój wcześniejszy komentarz, który sugerował inaczej. Ponadto, aby budować jako użytkownik inny niż root, może być konieczne zbudowanie własnej wersji gcc / g ++, jeśli twoja dystrybucja ma tylko nowszą wersję (dla CUDA 7.x potrzebujesz gcc 4.9.3).
einpoklum
@celavek: jeśli uważasz, że ta odpowiedź nie obejmuje wystarczająco Debiana 9, wyjaśnij dlaczego przed dokonaniem sugerowanej edycji.
einpoklum
6

Myślę, że powinieneś to zrobić przy użyciu backportów, właściwie płynnie instaluję nvidia-cuda-toolkit7.5 na Debianie Jessie.

Dodaj backporty, nie darmowe, do swojego /etc/apt/sources.list. Dla mnie (na jessie) po prostu umieszczam to na dole mojego pliku:

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

zapisano, apt-get update, a na koniec:

apt-get install -t jessie-backports nvidia-cuda-toolkit
Poso
źródło
1

Po dodaniu contrib i niewolnych repozytoriów do source.list i uruchomieniu aktualizacji apt-get, CUDA Toolkit jest w Synaptic pod nvidia-cuda-toolkit.

Domyślne zdjęcie
źródło
1

W przypadku „stretch” Debiana 9 ze starszym układem GPU (GT 720) konieczne są dodatkowe kroki. Widzę, że ktoś powyżej (@celavek) miał to, więc uzupełnię to, co dla mnie zadziałało. Przyjęta odpowiedź obejmuje prawie wszystko, co potrzebne. Uznanie, że jest to dość niszowy przykład, ale mam nadzieję, że mogą tu być użyteczne rzeczy, które zaoszczędzą ludziom kilku wyszukiwań w Google.

W przypadku CUDA 8.0 w kroku 1 kliknij „Starsze wersje” i wybierz „CUDA Toolkit 8.0 GA 2”. Następnie Linux, x86_64, Ubuntu, 16.04, plik wykonywalny (lokalny).

Nie zaakceptowałem spakowanego sterownika i zamiast tego użyłem wcześniej zainstalowanych sterowników 384.130 dla mojego GPU. Więcej informacji na ten temat tutaj: Debian Wiki . Twój przebieg może się różnić, nie mogę mówić o kartach innych niż GT 720. To była ścieżka, którą wybrałem, nie żałuję (jeszcze).

Kiedy instalacja nie powiedzie się z powodu niemożności lokalnego InstallUtils.pm w kroku 12, będziesz musiał rozpakować plik cuda_8.0.61_375.26_linux.run, ale uruchamiając go z flagą --tar mxvf. Następnie (jako root) skopiuj InstallUtils.pm do / 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

Teraz polecenie kroku 12 powinno się powieść.

Twój Debian 9.0 jest wyposażony w g ++ w wersji 6+, to się nie uda. Kompilacja wektoraAdd w kroku 15 zakończy się niepowodzeniem. Postępowałem zgodnie z tym oficjalnym dokumentem: Instalowanie wielu wersji GCC, aby zainstalować wersję 5.5.0. Dla wersji 5.5.0 będziesz potrzebować tego pliku

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

i rozpakuj archiwum za pomocą tego:

tar -xJf gcc-5.5.0.tar.xz

Musiałem zaktualizować niektóre rzeczy (biblioteki i dodać kompilację 32-bitową), aby to działało dla mnie:

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

Teraz możesz skonfigurować, stworzyć i zainstalować kompilator.

Pamiętaj, aby skonfigurować z flagą --prefix = / usr / local / gcc / 5.5.0

Teraz możesz skompilować wektor Dodaj przykład w kroku 15 w ten sposób:

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

Albo to:

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

Nie ma potrzeby modyfikowania pliku Makefile, poprawnie obsługuje on zastąpienie kompilatora.

Powinieneś teraz mieć działającą instalację CUDA 8.0 na odcinku.

Ingo
źródło
0

Spróbuj użyć Instalatorów sieciowych dla Ubuntu z tej strony:

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

Instalatory Ubuntu 14. * powinny być wystarczająco kompatybilne.

Tomasz Klim
źródło
1
Powinienem wspomnieć, że instalator ubuntu nie działał - zaktualizowałem post, aby to odzwierciedlić.
Greg
@Greg, czy wymyśliłeś, jak ostatecznie zainstalować Cudę na Debianie?
nullgeppetto
@nullgeppetto Skończyło się na tym, że porzuciłem ideę Debiana, ponieważ znalazłem zbyt wiele problemów ze zgodnością, których nie byłem w stanie rozwiązać.
Greg
@Greg, hmmm, tego się obawiałem ... Więc poszedłeś na * ubuntu czy coś innego? Osobiście nadal czekam na mój GTX 960, więc wypróbuję Debiana ... Dam ci znać, jeśli chcesz.
nullgeppetto