Instalacja oprogramowania CUDA w Ubuntu
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
- ↑ CUDA Installation Guide Linux (www.nvidia.com)
- ↑ PPA für Grafiktreiber (launchpad.net)
- ↑ Installing TensorFlow on Ubuntu - TensorFlow GPU support (www.tensorflow.org)
- ↑ NVIDIA Nsight (www.nvidia.com)