darktable page lede image
darktable page lede image

OpenCL auf Ihrem System einrichten

10.2.4. OpenCL auf Ihrem System einrichten

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.