Die große Systemvielfalt und die deutlichen Unterschiede zwischen OpenCL-Anbietern und Treiberversionen machen es unmöglich, einen umfassenden Überblick über die Einrichtung von OpenCL zu geben. Wir können Ihnen nur ein Beispiel nennen, in diesem Fall für NVIDIA Treiber Version 331.89 auf Ubuntu 14.04. Wir hoffen, dass dies Ihnen als erster Eindruck dient und Ihnen hilft, mögliche Probleme Ihres spezifischen Setups zu lösen.
Das Prinzip des OpenCL-Funktionsablaufs ist so:
darktable -> libOpenCL.so -> libnvidia-opencl.so.1 -> Kernel Treiber Modul(s) -> GPU
Darktable lädt dynamischlibOpenCL.so
, eine Systembibliothek, auf die der dynamische Loader des Systems zugreifen muss (ld.so
).
libOpenCL.so
liest die herstellerspezifische Informationsdatei ((/etc/OpenCL/vendors/nvidia.icd
), um die Bibliothek zu finden, die die herstellerspezifische OpenCL-Implementierung enthält.
Die herstellerspezifische OpenCL-Implementierung kommt als Bibliothek libnvidia-opencl.so.1
(was in unserem Fall ein symbolischer Link zu libnvidia-opencl.so.331.89
ist).
libnvidia-opencl.so.1
muss mit den herstellerspezifischen Kernelmodulen sprechen. nvidia
und nvidia_uvm
über Gerätespezifische Dateien /dev/nvidia0
, /dev/nvidiactl
und /dev/nvidia-uvm
.
Beim Systemstart müssen die benötigten Gerätedateien (/dev/nvidia*) erstellt werden. Wenn dies nicht standardmäßig auf Ihrem
System geschieht, ist der einfachste Weg, um sie einzurichten und sicherzustellen, dass alle Module geladen sind, die Installation
des Pakets nvidia-modprobe
(das zum Zeitpunkt dieses Schreibens nur für „topic“ verfügbar ist, aber gut mit „trusty“ und „Mint17“ funktioniert). Sie können es sich hier holen.
Ein Benutzerkonto, das OpenCL von Darktable aus nutzen möchte, muss Lese- und Schreibzugriff auf die speziellen NVIDIA-Gerätedateien haben. Auf einigen Systemen erlauben diese Dateien standardmäßig Lese- und Schreibzugriff auf die Welt, was Berechtigungsprobleme vermeidet, aber in Bezug auf die Systemsicherheit fragwürdig sein könnte. Andere Systeme schränken den Zugriff auf eine Benutzergruppe ein, z. B. „video“. In diesem Fall muss Ihr Benutzerkonto Mitglied dieser Gruppe sein.
Zusammenfassend lässt sich sagen, dass die Pakete, die in diesem speziellen Fall installiert werden mussten, wie folgt lauten:
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 NVIDIA-bezogenen Kernelmodule, wie sie von lsmod
berichtet wird, ist:
nvidia nvidia_uvm
Die Liste der NVIDIA-bezogenen Geräte-Sonderdateien (ls -l /dev/nvidia*
) sollte so lauten:
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
Beachten Sie, dass die Major/Minor-Zahlen (z. B. 250/0 für /dev/nvidia-uvm
in diesem Beispiel) je nach System variieren können.