OpenCL konfigurieren

Die riesige Vielfalt der Systeme und deutliche Unterschiede zwischen OpenCL-Anbietern und Treiberversionen macht es unmöglich einen umfassenden Überblick darüber zu geben, wie man OpenCL konfiguriert. Wir können dir nur ein Beispiel geben, in diesem Fall für den NVIDIA-Treiber 331.89 für Ubuntu 14.04. Wir hoffen, dass dies als eine grundlegende Anleitung dienen kann und dir helfen wird, spezifische Probleme für dein Setup zu lösen.

Der prinzipielle OpenCL-Funktionsablauf sieht so aus:

darktable > libOpenCL.so > libnvidia-opencl.so.1 > kernel-Treibermodul(e)> GPU

  • darktable lädt libOpenCL.sodynamisch nach– eine Systembibliothek, auf die der dynamische Lader des Betriebssystems (ld.so) Zugriff haben muss.

  • libOpenCL.so liest sich die Lieferanten-spezifische Informationsdatei (/etc/OpenCL/vendors/nvidia.icd) um die Library, welche die Lieferanten-Spezifische OpenCL Anwendung.

  • Die Lieferanten-spezifische OpenCL Anwendung kommt als Library libnvidia-opencl.so.1 (was in unserem Fall ein symbolischer Link ist auf libnvidia-opencl.so.331.89).

  • libnvidia-opencl.so.1 muss mit den Lieferanten-spezifischen Kernel-Modulen nvidia und nvidia_uvm kommunizieren via Device Spezial Dateien /dev/nvidia0, /dev/nvidiactl, und /dev/nvidia-uvm.

Beim Aufstarten des Systems müssen die erforderlichen speziellen Dateien (/dev/nvidia*) kreiert werden. Falls das auf deinem System nicht selber passiert, ist der leichteste Weg, diese aufzusetzen und sicherzustellen, dass alle Module geladen sind, durch die Installation des nvidia-modprobe Paketes.

Ein Benutzer-Konto, das auf OpenCL innerhalb von darktable zugreifen will, muss einen Lese/Schreib Zugriff zu den speziellen Dateien der NIVIDIA Karte haben. Auf gewissen Systemen erlauben diese Dateien einen Lese/Schreib Zugriff als Standard, was Umstände mit der Genehmigung vermeidet, aber eher fraglich in Sachen Sicherheit ist. Andere Systeme beschränken den Zugriff auf eine Nutzer-Gruppe, z.B. “Video”. In diesem -fall muss dein Benutzer-Konto ein Mitglied dieser Gruppe sein.

Zusammenfassend, die Pakete, die in diesem speziellen Fall installiert werden müssen, sind:

nvidia-331 (331.89-0ubuntu1~xedgers14.04.2)
nvidia-331-dev (331.89-0ubuntu1~xedgers14.04.2)
nvidia-331-uvm (331.89-0ubuntu1~xedgers14.04.2)
nvidia-libopencl1-331 (331.89-0ubuntu1~xedgers14.04.2)
nvidia-modprobe (340.24-1)
nvidia-opencl-dev:amd64 (5.5.22-3ubuntu1)
nvidia-opencl-icd-331 (331.89-0ubuntu1~xedgers14.04.2)
nvidia-settings (340.24-0ubuntu1~xedgers14.04.1)
nvidia-settings-304 (340.24-0ubuntu1~xedgers14.04.1)
nvidia-libopencl1-331 (331.89-0ubuntu1~xedgers14.04.2)
nvidia-opencl-dev:amd64 (5.5.22-3ubuntu1)
nvidia-opencl-icd-331 (331.89-0ubuntu1~xedgers14.04.2)
opencl-headers (1.2-2013.10.23-1)

Die Liste der NIVIDIA bezogenen Kernel-Module, wie rapportiert durch Ismod war:

nvidia
nvidia_uvm

Die Liste von NIVIDIA bezogenen speziellen Karten Dateien (ls -l /dev/nvidia*) sollte sich so lesen:

crw-rw-rw- 1 root root 195,  0 Jul 28 21:13 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Jul 28 21:13 /dev/nvidiactl
crw-rw-rw- 1 root root 250,  0 Jul 28 21:13 /dev/nvidia-uvm

Beachte, dass die großen/kleinen Nummern (z.B. 250/0 for /dev/nvidia-uvm in diesem Beispiel) können unterschiedlich sein, abhängig von deinem System.

Translations