Aktivierung von OpenCL in darktable
Das Brauchen von OpenCL in darktable erfordert es, dass dein Computer mit einer geeigneten Grafikkarte mit den erforderlichen Libraries ausgerüstet ist. Die meisten modernen Grafikkarten von NIVIDIA und AMD kommen mit vollem Support für OpenCL. Der Compiler für OpenCL wird normalerweise als Teil des proprietären Grafik-Treibers und wird als dynamische Library mit Namen libOpenCL.so
gebraucht. Diese Library muss in einem Ordner sein, wo diese vom System-Linker deines Systems gefunden werden kann.
Wenn darktable aufstartet, wird es zuerst versuchen libOpenCL.so
zu finden und zu laden, ist das erfolgreich, prüfe, ob die vorhandene Grafikkarte mit Support für OpenCL kommt. Genügend Grafik-Speicher (1GB+) muss vorhanden sein für darktable, um den Vorteil der GPU zu haben. Falls dieser Check erfolgreich ist, wird darktable versuchen die OpenCL-Umgebung aufzusetzen: Eine Verarbeitungs-Umgebung muss initialisiert werden, eine Berechnungs-Pipeline muss gestartet werden, OpenCL Quellcode-Dateien (Endung ist .cl
) müssen gelesen und compiliert werden und die beinhalteten Routinen (OpenCL Kernels) müssen für die darktable-Module vorbereitet werden. Wenn das alles komplett ist, dann ist die Vorbereitung abgeschlossen.
Als Standard wird OpenCL in darktable aktiviert, wenn alle obigen Schritte erfolgreich waren. Manuelles Deaktivieren geht unter in darktable-Voreinstellungen > Bearbeitung > CPU/GPU/Speicher. Dieser Konfigurationsparameter ist ausgegraut, wenn die OpenCL-Initialisierung fehlgeschlagen ist.
Die OpenCL-Unterstützung kann jederzeit ohne Neustart aus- und eingeschaltet werden. Abhängig vom Typ eines Moduls, wird die Auswirkung eine Beschleunigung beim interaktiven Arbeiten und beim Exportieren sein. Die meisten Module in darktable nutzen OpenCl, aber nicht bei allen Module ist ein Unterschied festzustellen. Ein großer Unterschied ist bei den Modulen Schatten und Spitzlichter, Schärfen, Tiefpass, Hochpass oder noch ausgeprägter beim Kontrast-Equalizer und Entrauschen (Profil) feststellbar.
Wenn du in Statistiken des Profils interessiert bist, dann kannst du darktable mit dem Kommandolinien-Parameter -d opencl -d perf
starten. Nach jedem Lauf der Pixelpipe werden dir die Details der Verarbeitungszeit für jedes Modul angezeigt zusammen mit einem noch feineren Profil für alle OpenCL Kernels.
Abgesehen vom Geschwindigkeitszuwachs solltest du keinen Unterschied zwischen CPU- und GPU-Verarbeitung sehen. Außer bei einigen Rundungsfehlern sind die Ergebnisse identisch ausgelegt. Wenn, aus irgendeinem Grund, darktable eine GPU-Berechnung falsch durchführt, wird es normalerweise dieses Versagen bemerken und automatisch (und transparent) auf CPU-Berechnung zurückgreifen.