piątek, 6 listopada 2009

CUDA 2.3 na Ubuntu 9.10 cz. 1

Kolejne podejście do używania CUDA na Ubuntu. Po kłopotach jakie miałem ze sterownikami NVIDIA na Ubuntu 8.04 postanowiłem przenieść się na najnowsze wydanie 9.10 (flash nie reaguje na kliknięcia, komputer nie wykrywa, że podłączyłem słuchawki - nie ukrywam, że to niemiłe rozczarowanie). Przy okazji zrobiłem upgrade z XP na Windows7.
Najnowsze sterowniki (w wersji 190) zainstalowałem z pomocą tego poradnika z Ubuntu Geek. W skrócie:
sudo add-apt-repository ppa:nvidia-vdpau/ppa
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CEC06767
sudo apt-get update
sudo apt-get install nvidia-190-modaliases nvidia-glx-190 nvidia-settings-190

Należy je jeszcze aktywować w System -> Administracja -> Sterowniki.

Teraz potrzebne będą Cuda Toolkit 2.3 - nie ma wersji dla Ubuntu 9.10, więc wybrałem wersję dla 9.04. Instalacja według instrukcji przebiega bezproblemowo. Potem zainstalowałem CUDA SDK również w wersji 2.3 dla Ubuntu 9.10.

Kolejnym krokiem było dodanie ścieżek cuda toolkit do zmiennych środowiskowych. W pliku ~/.bashrc dodałem:
if [ -d "/usr/local/cuda" ] ; then
PATH="/usr/local/cuda:$PATH"
fi

if [ -d "/usr/local/cuda/lib64" ] ; then
LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
fi

if [ -d "/usr/local/cuda/bin" ] ; then
PATH="/usr/local/cuda/bin:$PATH"
fi
Pierwszy if sprawdza czy istnieje /usr/local/cuda, a jeśli tak to dodaje tę ścieżkę do zmiennej systemowej PATH. Kolejny if dodaje ścieżkę do bibliotek odpowiednich dla 64-bitowego systemu. Następnie dodawany jest katalog z plikami wykonawczymi aby móc korzystać z polecenia nvcc bez wpisywania całej ścieżki.
Nie jestem pewien czy w umieściłem ten skrypt w dobrym pliku - jeśli dobrze pamiętam to jest on wywoływany przy każdym włączeniu konsoli. Dobrze by było by dodawało się ono tylko raz przy starcie systemu i tak już zostawało. Po kilku uruchomieniach PATH wygląda tak:
daniel@daniel-laptop:~$ printenv PATH
/usr/local/cuda/bin:/usr/local/cuda:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Do tej pory wszystko przebiegało gładko i prawdziwe problemy dopiero się zaczną.