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.so
dynamisch 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 auflibnvidia-opencl.so.331.89
). -
libnvidia-opencl.so.1
muss mit den Lieferanten-spezifischen Kernel-Modulennvidia
undnvidia_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.