Na początek może o konfiguracji, na jakiej przeprowadziłem instalację (pomijam kwestie sprzętowe):
- Ubuntu 9.04 AMD64 (oczywiście może być i386)
- gcc / g++ 4.3.3 (instalacja z paczek Ubuntu)
- CUDA developer driver x86_64 190.42 (Pobierz)
- CUDA Toolkit 2.3 (Pobierz)
- CUDA SDK 2.3 (Pobierz)
- glutg3-dev (instalacja z paczek Ubuntu, w moim przypadku była to wersja 3.7-25)
- libxi-dev (instalacja z paczek Ubuntu, w moim przypadku była to wersja 2:1.2.0)
- libxmu-dev (instalacja z paczek Ubuntu, w moim przypadku była to wersja 2:1.0.4-1)
Przy powyższej konfiguracji software udało się skompilować i uruchomić przykłady z paczki SDK. Możliwe, że drobne odstępstwa od tych konkretnych wersji podanych powyżej, są dozwolone i wszystko powinno działać. Osobiście testowałem instalację na Kubunut 9.10 AMD64 i Debianie Etch i Lenny, AMD64 oraz i386 i za każdym razem udawało się wszystko zainstalować.
A więc do dzieła...
1. Instalacja drivera
Instalacji drivera dokonujemy z trybu konsoli, przy wyłączonym serwerze X. Aby wyłączyć managera okien, najprostszym sposobem jest wydanie polecenia:
$ sudo /etc/init.d/gdm stop
lub w przypadku managera okien KDM:
$ sudo /etc/init.d/kdm stop
Po zatrzymaniu managera i zalogowaniu, uruchamiamy instalatora sterownika:
$sudo sh NVIDIA-Linux-x86_64-190.42-pkg2.run
Cała instalacja polega na wyborze "dalej, dalej", czyli przejściu prze domyślne opcje. Ważne jest by mieć zainstalowane w systemie odpowiednie paczki (z tzw. kernel headers), by poprawnie został skompilowany moduł sterownika. Tylko w Debianie musiałem dodatkowo instalować te pakiety.
Po poprawnym zainstalowaniu i restarcie systemu, powinniśmy mieć załadowany nasz sterownik. Możemy zatem przystąpić do instalacji samej biblioteki CUDA i narzędzi.
2. Instalacja bibliotek
Tym razem wszystkie polecenia możemy wywoływać w konsoli, przy włączonym trybie graficznym. Instalację narzędzi CUDA, możemy przeprowadzić w katalogu domowym użytkownika, bez sudo:
sh cudatoolkit_2.3_linux_64_ubuntu9.04.run
Instalator zapyta o ścieżkę docelową, w moim przypadku była to:
/home/adam
Docelowo instalator do podanej ścieżki doklei /cuda, zatem całość powinna się zainstalować w /home/adam/cuda.
Aby narzędzia CUDA były dostępne dla naszego użytkownika musimy wyedytować zmienną PATH:
$ vim ~/.bashrc
W powyższym pliku na samym końcu dodajemy linijkę
export PATH=$PATH:/home/adam/cuda/bin
i zapisujemy plik. Dzięki czemu zapiszemy sobie na stałe ścieżkę przeszukiwania i narzędzia cuda będą dostępne. Aby linker widział biblioteki CUDA, należy dodać odpowiednią ścieżkę w:
$ sudo vim /etc/ld.so.conf
W pliku tym dopisujemy na końcu linijkę:
/home/adam/cuda/lib64
/home/adam/cuda/lib
Wystarczy teraz wydać polecenie:
$ sudo ldconfig
To w zasadzie wszystko. Możemy sprawdzić jaką wersję kompilatora mamy zainstalowaną:
$ nvcc --version
3. Instalacja CUDA SDK i kompilacja przykładów
Żeby rzeczywiście przetestować naszą instalację i rozpocząć zabawę z CUDA, najlepiej zainstalować pakiet SDK i skompilować zawarte w nim przykłady. Uruchamiamy instalację:
$ sh cudasdk_2.3_linux.run
Instalator powinien wykryć gdzie mamy zainstalowaną bibliotekę CUDA. Jeśli nie podajemy mu odpowiednią ścieżkę:
/home/adam/cuda
Po zainstalowaniu powinno być wszystko OK, ale w moim przypadku nie było. Jeśli nie kompilują się przykłady z SDK, należy najpierw sprawdzić, czy ścieżka do biblioteki została poprawnie ustawiona. Niestey u mnie tak nie było. W pliku:
$ vim ~/NVIDIA_GPU_Computing_SDK/C/common/common.mk
w linii 41, należy odpowiednio zmodyfikować zmienną CUDA_INSTALL_PATH:
CUDA_INSTALL_PATH=/home/adam/cuda
Nie wiedzieć czemu w moim przypadku instalator nie wyedytował automatycznie tej zmiennej.
Jeśli do tego momentu wszystko się udało, to znaczy, że można skompilować przykłady z SDK. Z katalogu ~/NVIDIA_GPU_Computing_SDK/C wydajemy polecenie:
~/NVIDIA_GPU_Computing_SDK/C $ make
Rozpocznie się kompilacja, która może chwilę potrwać. Po skompilowaniu, przykłady można znaleźć w katalogu ~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release. Polecam na początek uruchomić test:
$ ~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/deviceQuery
W moim przypadku, na konsolę dostaję taką oto informację diagnostyczną:
CUDA Device Query (Runtime API) version (CUDART static linking)
There is 1 device supporting CUDA
Device 0: "GeForce GTX 260"
CUDA Driver Version: 2.30
CUDA Runtime Version: 2.30
CUDA Capability Major revision number: 1
CUDA Capability Minor revision number: 3
Total amount of global memory: 938803200 bytes
Number of multiprocessors: 27
Number of cores: 216
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 16384 bytes
Total number of registers available per block: 16384
Warp size: 32
Maximum number of threads per block: 512
Maximum sizes of each dimension of a block: 512 x 512 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Maximum memory pitch: 262144 bytes
Texture alignment: 256 bytes
Clock rate: 1.35 GHz
Concurrent copy and execution: Yes
Run time limit on kernels: Yes
Integrated: No
Support host page-locked memory mapping: Yes
Compute mode: Default (multiple host threads can use this device simultaneously)
Test PASSED
Press ENTER to exit...
No i teraz, kto zgadnie jaką mam kartę ;) To tyle jeśli chodzi o instalację, prawdziwa zabawa zaczyna się dopiero teraz!