Ubuntu 12.04 Precise Pangolin
CUDA ist eine Technik ähnlich wie OpenCL, welche es erlaubt, Berechnungen auf Nvidia-Grafikkarten durchzuführen. Je nach Aufgabenstellungen kann so eine deutliche Geschwindigkeitssteigerung erzielt werden.
Damit CUDA genutzt werden kann ist eine unterstützte Grafikkarte mit aktuellem proprietären Nvidia-Treiber nötig. Notebooks mit Optimus-Technologie können ebenfalls von CUDA profitieren, falls ihre zweite Grafikkarte unterstützt wird. Bumblebee, die Software, welche die Optimus-Grafiklösung auch unter Linux ermöglicht, ist dabei nicht zwingend für CUDA. Es muss aber auch in diesem Fall ein aktueller Grafikkartentreiber von Nvidia installiert sein.
Um NVIDIA Cuda auf Ubuntu nutzen zu können muss das entsprechende NVIDIA DevKit von den Ubuntu Paketquellen mittels
nvidia-cuda-dev
nvidia-cuda-toolkit
mit apturl
Paketliste zum Kopieren:
sudo apt-get install nvidia-cuda-dev nvidia-cuda-toolkit
sudo aptitude install nvidia-cuda-dev nvidia-cuda-toolkit
Eine andere Möglichkeit besteht darin das entsprechende CUDA Developer Kit Paket direkt von der NVIDIA Entwickler Seite herunterzuladen und das DEB-Paket zu installieren.
Fremdpakete können das System gefährden.
Anmerkung: Es wird empfohlen die von Ubuntu zur Verfügung gestellte und getestete Pakete und Treiber aus den offiziellen Paketquellen zu verwenden.
Wenn man selbst Programme mit CUDA Unterstützung schreiben möchte, ist es nötig nebst CUDA zusätzlich auch das SDK zu installieren. Dazu wird wieder von Nvidias Entwicklerseite die Installationsdatei heruntergeladen, ausführbar gemacht und danach mit
./gpucomputingsdk_*
als Nutzer installiert. Während der Installation wird das Verzeichnis ~/NVIDIA_GPU_Computing_SDK als Standard vorgeschlagen, das nach Wunsch geändert werden kann. Um auch die Beispiels-Dateien kompilieren zu können, sind folgende Pakete nötig[6]:
build-essential
freeglut3-dev
libgl1-mesa-glx
libglu1-mesa-dev
libx11-dev
libxi-dev
libxmu-dev
mit apturl
Paketliste zum Kopieren:
sudo apt-get install build-essential freeglut3-dev libgl1-mesa-glx libglu1-mesa-dev libx11-dev libxi-dev libxmu-dev
sudo aptitude install build-essential freeglut3-dev libgl1-mesa-glx libglu1-mesa-dev libx11-dev libxi-dev libxmu-dev
Leider sind die von Nvidia mitgelieferten Makefiles fehlerhaft. Es muss z.B. die Reihenfolge von $(RENDERCHECKGLLIB)
und ${OPENGLLIB}
angepasst werden. Glücklicherweise gibt es einen Blogeintrag mit einem passenden Skript.
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash if [ ! -f cudpp_license.txt ] ; then echo "Dieses Skript muss im SDK-Hauptordner ausgeführt werden!" exit fi echo "Nvidia Makefiles werden korrigiert..." sed -i- 's/\${OPENGLLIB} \$(PARAMGLLIB) \$(RENDERCHECKGLLIB)/$(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB)/' $(find . -type f -print0 | xargs -0 grep -l '${OPENGLLIB} $(PARAMGLLIB) $(RENDERCHECKGLLIB)') sed -i- 's/\$(CXX) \$(INC) \$(LIB) -o \(.*\)$/$(CXX) \$(INC) -o \1 $(LIB)/' $(find . -type f -print0 | xargs -0 grep -l '$(CXX) $(INC) $(LIB)') if ! grep USERENDERCHECKGL CUDALibraries/src/randomFog/Makefile ; then sed -i- '/USEGLUT := 1/ a \USERENDERCHECKGL := 1' CUDALibraries/src/randomFog/Makefile fi |
Dieses Skript wird in die Datei ~/NVIDIA_GPU_Computing_SDK/makefiles-korrigieren.sh abgespeichert, ausführbar gemacht und mit
./makefiles-korrigieren.sh
ausgeführt. Nach erfolgreichem Korrigieren der Makefiles wird in den Unterordner C gewechselt und der Kompiliervorgang[7] gestartet. Dieser kann einige Zeit in Anspruch nehmen.
cd ~/NVIDIA_GPU_Computing_SDK/C make
Nach erfolgreichem Kompilieren wird zum Testen in den Unterordner release gewechselt.
cd ~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release
Die Installation von Treibern, CUDA und SDK und das Kompilieren der Beispieldateien waren erfolgreich, wenn z.B.
./boxFilter
ein Bild von Lenna anzeigt. Besitzer von Optimus-Notebooks und installiertem Bumblebee starten die Programme mit
optirun ./boxFilter
Eine Übersicht über die Grafikkarte und CUDA bietet
./deviceQuery
Nvidia GPU-computing Documentation Hersteller-Dokumentation
PyCUDA Projektseite, Phython-Oberfläche zur GPU-Programmierung (ab Ubuntu 12.10 in den Paketquellen)
Diese Revision wurde am 23. Juli 2015 18:15 von Justin-Time erstellt.