Instalacja oprogramowania CUDA w Ubuntu

Z Thomas-Krenn-Wiki
Przejdź do nawigacji Przejdź do wyszukiwania
Uwaga: Prosimy zwrócić uwagę, że ten artykuł / kategoria nie jest już aktualizowana, gdyż odnosi się do starszych komponentów oprogramowania / sprzętu.
Ta strona jest nadal dostępna jedynie w celach informacyjnych.

Instalacja bibliotek CUDA w systemach z Linuksem jest możliwa na wiele różnych sposobów. NVIDIA oferuje pakiety instalacyjne na swojej stronie internetowej[1], ale dystrybucje zawierają również własne pakiety. W zależności od tego, do czego ma być stosowana CUDA, preferowany jest jeden lub drugi rodzaj instalacji. CUDA jest często wymagana dla "Machine Learning Frameworks" lub innego oprogramowania. Zazwyczaj wymagana jest konkretna wersja biblioteki CUDA. Musi ona być kompatybilna ze sterownikami karty graficznej i oprogramowaniem systemowym. Dlatego niekiedy konieczne jest mieszanie typów instalacji. Poniższy artykuł pokazuje, jak skonfigurować środowisko CUDA w systemie Ubuntu 18.04 LTS.

Typy instalacji

Dostępne są następujące opcje instalacji środowiska CUDA:

  • Skrypt instalacyjny ("runfile") firmy NVIDIA
  • Zależne od dystrybucji pakiety instalacyjne firmy NVIDIA (lokalnie)
  • Zależne od dystrybucji pakiety instalacyjne firmy NVIDIA (przez sieć)
  • Instalacja poprzez zarządzanie pakietami w wybranej dystrybucji

Poniżej opisany jest proces instalacji oprogramowania CUDA na przykładzie Ubuntu 18.04. Instalacja powinna być wykonana w taki sposób, aby możliwe było późniejsze skonfigurowanie Tensorflow-Framework. Dwie karty GeForce GTX 1070 są używane jako GPU.

NVIDIA nie oferuje jeszcze dla Ubuntu 18.04 skryptów instalacyjnych ani pakietów instalacyjnych. Również instalacja poprzez zarządzanie pakietami w Ubuntu nie prowadzi do celu, ponieważ obecny Tensorflow wymaga CUDA'y 9.0, a w Ubuntu 18.04 jest już zainstalowana CUDA 9.1. W związku z tym zdecydowaliśmy się na instalację sterownika poprzez dystrybucję i instalację frameworka ze strony firmy NVIDIA.

Instalacja sterowników NVIDIA

W przypadku oprogramowania CUDA muszą być zawsze zainstalowane sterowniki dla GPU, sterowniki open source (noveau) dla kart NVIDIA nie działają. Aktualne informacje na temat sterowników graficznych NVIDIA dla Ubuntu można znaleźć na stronie informacyjnej PPA.[2]

Zazwyczaj sensowne jest zainstalowanie odpowiedniego Long Live Branch, w przypadku Ubuntu 18.04 (Bionic) jest to wersja 9.0.

Aby mieć pewność, że nie ma żadnych starych sterowników są one całkowicie usuwane:

sudo apt purge nvidia*

Następnie dodawane jest repozytorium z własnościwymi sterownikami:

sudo add-apt-repository ppa:graphics-drivers
sudo apt update
sudo apt install nvidia-390

Istnieje również możliwość automatycznej instalacji sterowników, tzn. nie instalowania sterowników takich jak nvidia-390, ale pozostawienia systemowi operacyjnemu decyzji: ubuntu-drivers autoinstall. W praktyce jednak może to prowadzić do problemów ze zgodnością z CUDA, gdyż wtedy instalowane są zazwyczaj najnowsze sterowniki. Zalecamy bardziej ostrożny wybór sterowników.

Po restarcie systemu, wcześniej używane sterowniki open source (noveau) nie powinny być już ładowane, a nowe sterowniki powinny być już dostępne:

cudatest@ubuntu-18-04:~$ lsmod | grep noveau
cudatest@ubuntu-18-04:~$ lsmod | grep nvidia
nvidia_uvm            757760  0
nvidia_drm             40960  2
nvidia_modeset       1110016  4 nvidia_drm
nvidia              14340096  203 nvidia_modeset,nvidia_uvm
drm_kms_helper        172032  1 nvidia_drm
drm                   401408  5 nvidia_drm,drm_kms_helper
ipmi_msghandler        53248  2 nvidia,ipmi_devintf

Następnie należy upewnić się, że wersja sterownika zostanie zachowana podczas przyszłych aktualizacji Ubuntu:

sudo apt-mark hold nvidia-390

Jeśli instalacja się powiodła, można użyć narzędzia nvidia-smi (należącego do Nvidia-Utilities) do wyświetlania szczegółowych informacji o zainstalowanych kartach:

cudatest@ubuntu-18-04:~$ nvidia-smi
Fri Jul 27 09:58:23 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.48                 Driver Version: 390.48                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1070    Off  | 00000000:17:00.0 Off |                  N/A |
| 27%   38C    P8     6W / 151W |      2MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 1070    Off  | 00000000:65:00.0  On |                  N/A |
| 29%   43C    P8    11W / 151W |    124MiB /  8116MiB |     13%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    1      1119      G   /usr/lib/xorg/Xorg                           107MiB |
|    1      2013      G   ...nux-gnu/webkit2gtk-4.0/WebKitWebProcess    13MiB |
+-----------------------------------------------------------------------------+

Instalacja CUDA 9.0

Do zainstalowania samej CUDA ważne jest, aby wiedzieć, jaka wersja jest wymagana. Niektóre programy i frameworks z obsługą CUDA nie działają w obecnej wersji, lecz wymagają starszych wersji. Jeśli nie jest potrzebny framework lub jest się pewnym, że CUDA 9.1 ze źródeł pakietów pasuje do potrzeb, to można po prostu użyć

apt install nvidia-cuda-toolkit

aby zainstalować tą wersję. Ma to tę zaletę, że żadne oprogramowanie nie musi być zarządzane poza systemem operacyjnym. W Ubuntu 18.04 zainstalowana zostanie wersja 9.1 pakietu narzędzi. Na przykład, popularny Machine-Learning-Framework Tensorflow wymaga obecnie wersji CUDA 9.0.[3]

Jeśli okaże się, że zainstalowany już zestaw narzędzi CUDA Toolkit nie jest kompatybilny z używanym oprogramowaniem, najlepiej usunąć go całkowicie:

apt autoremove nvidia-cuda-toolkit --purge

Następnie można zainstalować odpowiedni toolkit ze strony internetowej firmy NVIDIA. W tym celu należy koniecznie pobrać runfile dla wersji CUDA 9.0 i Ubuntu 17.04. Próba reinstalacji sterowników GPU przez lokalny pakiet deb powoduje błędy w wersji 18.04 i może spowodować, że system nie będzie się już uruchamiał. Ponadto pakiet sieciowy zainstalowałby również aktualną wersję 9.2 zamiast CUDA 9.0, która nie jest kompatybilna z Tensorflow.

wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run

Plik runfile zawiera skrypt shella, który jest wykonywalny i uruchamiany. NVIDIA wymaga w instrukcjach instalacji, aby system przed wykonaniem pracował na poziomie pracy 3 (runlevel). Nie jest to konieczne, jeśli sterowniki GPU nie są instalowane z pliku runfile.

chmod 744 cuda_9.0.176_384.81_linux-run</code> <code>sh cuda_9.0.176_384.81_linux-run --override

Opcja --override definiuje, że CUDA powinna być instalowana nawet jeśli pewne warunki, takie jak kompilator itp. nie spełniają specyfikacji. Jest to konieczne, gdyż pakiet został stworzony dla Ubuntu 17.04.

W pierwszym kroku skrypt pyta o akceptację warunków licencji i czy należy zainstalować najnowsze sterowniki. W przypadku pozostawienia zarządzania sterownikami pod kontrolą systemu operacyjnego, jak opisano powyżej, należy odpowiedzieć na to pytanie w sposób negatywny. Na wszystkie inne pytania można odpowiedzieć twierdząco lub zaakceptować sugerowane wartości domyślne.

Kolejną zależnością jest wersja kompilatora gcc. Dla CUDA 9.0 konieczny jest kompilator gcc 6, dla którego istnieją oficjalne pakiety i który można szybko zainstalować za pomocą następującej komendy:

apt-get install gcc-6 g++-6 g++-6-multilib gfortran-6

Konfiguracja ścieżek i łączy symbolicznych

Następnie należy uzupełnić ścieżki do bibliotek, poprzez dodanie następujących wierszy w pliku .bashrc:

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Jeśli zainstalowanych jest kilka wariantów GCC, to należy jeszcze określić, który kompilator powinien zostać użyty przez oprogramowanie CUDA. Wystarczy do tego link symboliczny (symlink):

sudo ln -s /usr/bin/gcc-6 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-6 /usr/local/cuda/bin/g++

Testy funkcjonalności

Runfile firmy NVIDIA instaluje obszerny zbiór przykładów w katalogu głównym użytkownika, które umożliwiają weryfikację funkcjonalności pakietu narzędzi CUDA:

~/NVIDIA_:CUDA-9.0_Samples

make w katalogu przykładowego programu tworzy odpowiednie pliki wykonywalne w katalogu:

~/NVIDIA_CUDA-9.0_Samples/bin/x86_64/linux/release

Pakiet instalacyjny firmy NVIDIA zawiera również NSight, kompletne środowisko programistyczne oparte na technologii Eclipse[4], które może być również używane do uruchamiania i modyfikowania przykładowych programów oraz do tworzenia własnych aplikacji.

Odnośniki

Powiązane artykuły

Instalacja sterownika NVIDIA 430.09 dla GeForce RTX 2080 w Ubuntu 18.04