czwartek, 12 stycznia 2017

Instalacja NVIDIA CUDA Toolkit 8.0 na Ubuntu 16.04

Karty graficzne firmy NVIDIA i ich architektura obliczeniowa CUDA bije rekordy szybkości i wydajności. W 2016 roku została wydana kolejna wersja pakietu dla programistów, w której znowu znalazło się wiele interesujących dodatków. Pierwszą rzeczą którą należy zrobić aby móc z nich korzystać, to oczywiście instalacja lub aktualizacja obecnetgo pakietu do najnowszej wersji 8.0.


Do NVIDIA CUDA Toolkit 8.0 w odróżnieniu od wcześniejszych wersji zostały dodane dedykowane paczki instalacyjne dla systemów wykorzystujących pakiety RPM czy DEB. Dzięki temu instalacja staje się wręcz trywialna dla większości użytkowników linuksa.

Do samego pisania i kompilacji programów wykorzystujących GPU nie potrzebujemy dedykowanej karty graficznej. Dopiero gdy będziemy chcieli je uruchomić na naszym komputerze niezbędne jest urządzenie wspierające technologię CUDA.

Na stronie https://developer.nvidia.com/cuda-toolkit możemy pobrać paczkę przeznaczoną dla naszego systemu operacyjnego. Do wyboru mamy systemy Windows, MAC oraz oczywiście GNU/Linux. Jeśli naszego linuksa nie ma na liście wspieranych systemów operacyjnych to mamy do dyspozycji uniwersalny instalator w postaci pliku uruchomieniowego .run, który manualnie przeprowadzi nas przez cały proces instalacji.

Po pobraniu niemałej (1.9GB dla pakietu .deb) ilości danych wystarczy wydać tylko trzy komendy aby mieć na pokładzie naszego komputera zainstalowane środowisko CUDA:

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

Docelowy katalog instalacji to /usr/local/cuda-8.0, utworzony zostanie równiez link /usr/local/cuda na ten katalog. Prawdopodobnie samo zainstalowanie nie ustawi nam ścieżek środowiskowych i uruchomienie kompilatora nvcc --version się nie powiedzie. Dlatego do pliku ładowanego przy starcie systemu (np. ~/.bashrc) należy dodać dwie dodatkowe linie:

export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64

Teraz już możemy sprawdzić czy posiadamy najnowszą wersję wywołując w terminalu polecenie nvcc --version:
Poza samym kompilatorem, zestawem bibliotek, źródłami przykładowych programów mamy do dyspozycji od razu pokaźny zestaw narzędzi deweloperskich, ze środowiskiem NSIGHT* na czele.

Kilka słów o nvcc
nvcc jest kompilatorem programów przeznaczonych na karty graficzne wspierające architekturę CUDA. Dla początkujących być może brzmi to strasznie, jednak tak naprawdę nvcc jest rozszerzeniem znanego chyba wszystkim (programistom C lub C++) kompilatora gcc. Mamy zatem do dyspozycji wszystko co dobre (i złe) w gcc oraz możliwość kompilacji programów (kerneli) na procesor graficzny.

Skoro mamy już wszystko czego nam potrzeba, to na koniec spróbujmy skompilować i uruchomić jakiś przykładowy program korzystający z GPU, w katalogu /usr/local/cuda-8.0/samples mamy ich bardzo bogaty zestaw.  Pamiętajmy, że nie powinniśmy uruchamiać tych programów bezpośrednio jako root, dlatego przed przystąpieniem do kompilacji należy zmienić właściciela i grupę na zwykłego użytkownika:

sudo chgrp nazwaGrupy /usr/local/cuda/samples -R
sudo chown nazwaGrupy /usr/local/cuda/samples -R

teraz wystarczy tylko wywołać polecenie make w katalogu wybranego przykładu. Ja na początek wybrałem program pokazujący jaką mamy kartę graficzną i jakie daje nam ona możliwości obliczeniowe:

cd /usr/local/cuda/samples/1_Utilities/deviceQuery
make

po skompilowaniu, wystarczy uruchomić program poleceniem:
./deviceQuery

w moim przypadku efekt jest następujący:

-----
*NSIGHT to w rzeczywistości dobrze znany ECLIPSE doposażony w różne dodatki usprawniające pracę z architekturą CUDA, np. profiler

Brak komentarzy:

Prześlij komentarz