[[Vorlage(archiviert)]] {{{#!vorlage Wissen [:Rechte: Rechte für Dateien und Ordner ändern] [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] [:Pakete installieren: Installation von Programmen] }}} [[Inhaltsverzeichnis()]] [wikipedia:Compute_Unified_Device_Architecture: CUDA] ist eine Technik ähnlich wie [wikipedia:OpenCL:], welche es erlaubt, Berechnungen auf Nvidia-Grafikkarten durchzuführen. Je nach Aufgabenstellungen kann so eine deutliche Geschwindigkeitssteigerung erzielt werden. = Voraussetzungen = Damit CUDA genutzt werden kann ist eine [https://www.nvidia.com/object/cuda_gpus.html unterstützte Grafikkarte] {en} mit aktuellem [:Grafikkarten/Nvidia/nvidia: proprietären Nvidia-Treiber] nötig. Notebooks mit Optimus-Technologie können ebenfalls von CUDA profitieren, falls ihre zweite Grafikkarte unterstützt wird. = CUDA SDK DevKit installieren = Um NVIDIA Cuda auf Ubuntu nutzen zu können muss das entsprechende NVIDIA DevKit von den Ubuntu Paketquellen mittels {{{#!vorlage Paketinstallation nvidia-cuda-dev nvidia-cuda-toolkit }}} installiert werden [2][3][4]. == Fremdpaket == Eine andere Möglichkeit besteht darin das entsprechende CUDA Developer Kit Paket direkt von der [https://developer.nvidia.com/cuda-downloads NVIDIA Entwickler Seite]{en} {dl} herunterzuladen und das [:Paketinstallation_DEB:DEB-Paket] zu installieren. [[Vorlage(Fremd, Paket, "Es wird empfohlen die von Ubuntu zur Verfügung gestellte und getestete Pakete und Treiber aus den offiziellen Paketquellen zu verwenden.")]] = GPU Computing Toolkit installieren = Wenn man selbst Programme mit CUDA Unterstützung schreiben möchte, ist es nötig nebst CUDA zusätzlich auch das CUDA Toolkit zu installieren. Dazu wird von [https://developer.nvidia.com/cuda/cuda-downloads Nvidias Entwicklerseite] {en} die Installationsdatei heruntergeladen. Man sollte darauf achten, dass die Version des Toolkits mit dem Installierten Grafikkartentreiber kompatibel ist. Das kann anhand einer [https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html Tabelle] in der Sektion Release Notes überprüft werden. Sollte noch kein Nvidia-Grafiktreiber installiert sein, ist es besser vor der CUDA-Installation über [https://wiki.ubuntuusers.de/Zus%C3%A4tzliche_Treiber/ zusätzliche Treiber] die neuste getestete Version zu installieren. Danach kann mit {{{#!vorlage Befehl sudo sh cuda__linux.run }}} das CUDA Toolkit als Nutzer installiert werden. Während der Installation wird man gefragt, ob der enthaltenen Grafiktreiber installiert werden soll. Hat man das schon vorher gemacht muss diese Option entfernt werden. Soll der Grafiktreiber jedoch installiert werden muss man sich zuvor ausloggen, ohne X Server (im Terminal) wieder einloggen und die Installation erneut starten (nicht empfohlen). Während der Installation wird das Verzeichnis '''/usr/local/cuda-9.0''' als Standard vorgeschlagen, das nach Wunsch geändert werden kann (nicht empfohlen). Es sollte jedoch bedacht werden, um das Toolkit verwenden, müssen die Umgebungsvariablen '''$PATH''' und '''$LD_LIBRARY_PATH''' angepasst werden. Dazu fügt man folgende Zeilen am Ende der ~/.bashrc ein: {{{#!code bash export PATH=$PATH:/usr/local/cuda-/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-/lib64 }}} Um auch die Beispiels-Dateien kompilieren zu können, sind folgende Pakete nötig[6]: {{{#!vorlage Paketinstallation build-essential freeglut3-dev libgl1-mesa-glx libglu1-mesa-dev libx11-dev libxi-dev libxmu-dev }}} Ist die Installation abgeschlossen, kann man in einem Terminal in den CUDA-Beispiele Ordner wechsel und die Installation testen. {{{#!code bash cd ~/NVIDIA_CUDA-_SAMPLES/0_Simple/simpleLayeredTexture make ./simpleLayeredTexture }}} In den Ausgaben finden sich Informationen zur Hardware und Ausführungszeit des Programms. =Ab hier für alte Version des CUDA SDK= Das CUDA Toolkit hat das CUDA-SDK abgelöst und steht auf der Downloadseite von Nvidia nicht mehr zur Verfügung. Sollten man das SDK jedoch (aus irgend einem Grund) installieren ist der folgende Abschnitt wichtig. Leider sind die von Nvidia mitgelieferten Makefiles fehlerhaft. Es muss z.B. die Reihenfolge von `$(RENDERCHECKGLLIB)` und `${OPENGLLIB}` angepasst werden. {{{#!code bash #!/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 {{{#!vorlage Befehl ./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. {{{#!vorlage Befehl cd ~/NVIDIA_GPU_Computing_SDK/C make }}} = Funktionstest = Nach erfolgreichem Kompilieren wird zum Testen in den Unterordner '''release''' gewechselt. {{{#!vorlage Befehl 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. {{{#!vorlage Befehl ./boxFilter }}} ein Bild von [wikipedia_en:Lenna:] anzeigt. Eine Übersicht über die Grafikkarte und CUDA bietet {{{#!vorlage Befehl ./deviceQuery }}} = Links = * [ubuntu_doc:community/Cuda:] * [askubuntu:131506/:How can I get nVidia CUDA or OpenCL working on a laptop with nVidia discrete card/Intel Integrated Graphics?] * [https://developer.nvidia.com/cuda/nvidia-gpu-computing-documentation Nvidia GPU-computing Documentation] {en} Hersteller-Dokumentation * [https://www.nvidia.com/object/what-is-gpu-computing.html What is GPU computing?] {en} * [https://mathema.tician.de/software/pycuda PyCUDA] {en} Projektseite, Phython-Oberfläche zur GPU-Programmierung (ab Ubuntu 12.10 in den Paketquellen) #tag: Grafikkarten, Hardware, unfreie Software, Programmierung