HOME » Blog » Tipps & Tricks » darktable » darktable: OPENCL zur Beschleunigung nutzen

darktable: OPENCL zur Beschleunigung nutzen

Zuletzt aktualisiert am 19.09.2021 von Hendrik


Bist Du schon einmal in den darktable-Einstellungen über die unscheinbare Option „OpenCL-Unterstützung aktivieren“ gestolpert und wusstest sie nicht so richtig einzuordnen? Ist darktable bei Dir möglicherweise langsam und Du fragst Dich, wieso? Dann bist Du hier genau richtig. Im nachfolgenden Beitrag werde ich Dir für darktable unter Windows 10 die Möglichkeiten der OpenCL-Unterstützung aufzeigen und die darktable-Performance mit und ohne OpenCL-Unterstüzung vergleichen.

Tatsächlich verlangt Astrofotografie nicht nur Deiner Kamera eine Menge ab, auch Dein Rechner wird bei der Bildentwicklung recht schnell durch Anwendung verschiedenster darktable-Filter und -Module an seine Leistungsgrenze gebracht. So geschehen bei meinem eigenen PC mit einer Intel Core i5-CPU und 16 GB RAM. Die Spezifikationen sind zwar nicht allzu schlecht und man sollte meinen, dass die Leistung zur Entwicklung von Fotos ausreichen würde. Vor allem bei der Entwicklung meiner Astrofotos wurde darktable aber mitunter mit steigender Anzahl aktivierter Module immer langsamer und langsamer, bis schließlich hin zur Nicht-Bedienbarkeit. Einmal die Belichtung korrigieren? Dauerte ungefähr 30sec, bis das Resultat der Anpassung zu sehen war.


Adobe Lightroom & Photoshop

Adobe Lightroom & Photoshop*

94,99 €
Bei Amazon kaufen

Kein Angebot mehr verpassen: PreismonitorPREISMONITOR nutzen!
Letzte Aktualisierung: 13.12.2024 | * Affiliate-LinkWas ist das? | Bilder von der Amazon Product Advertising API

Folglich habe ich mit meiner Recherche begonnen und bin recht schnell auf einen potentiellen Flaschenhals gestoßen: Mein PC verfügte nur über Onboard-Grafik. Als ich ihn gekauft habe, hatte ich eigentlich nur Office-Arbeiten und Internet-Surfen als Aufgabenfeld im Sinn und somit auf eine Grafikkarte keinen Wert gelegt.

Bei meinen Nachforschungen bin ich dann aber recht schnell auf diverse Seiten gestoßen, die Großes versprachen. Etwa „darktable mit WARP-Antrieb“ oder „Turbo für darktable: openCL Einrichtung“ . openCL wird auf diesen Seiten als Wundermittel zur Beschleunigung der Bildentwicklung gepriesen und ich wurde neugierig.

Nach intensiver Recherche hatte ich mich auch für eine Grafikkarte entschieden: Eine Geforce GTX 1650 mit 4GB RAM sollte es werden. Kein Grafikmonster, aber mit einem Preis von etwa 130 EUR bezahlbar und laut diversen Meinungen absolut ausreichend für den vorgesehenen Einsatzbereich.

Aktivierung von OpenCL

Du bist Dir nicht sicher, ob bei Dir die OpenCL-Unterstützung aktiv ist? Das lässt sich ganz einfach in den darktable-Einstellungen überprüfen und nötigenfalls kann OpenCL mit wenigen Klicks aktiviert werden:

Aktivierung der OpenCL-Unterstützung in den darktable-Einstellungen
Aktivierung der OpenCL-Unterstützung in den darktable-Einstellungen
  1. Starte darktable.
  2. Öffne das Menü Einstellungen (siehe Punkt 1 in der oberenDarstellung).
  3. Wähle im Menü Einstellungen das Untermenü „CPU / GPU / Speicher“ aus (Punkt 2).
  4. Setze ein Häkchen beim Menüpunkt „OpenCL-Unterstützung aktivieren“ (Punkt 3).
  5. Wähle beim Menüpunkt „OpenCL-Scheduler-Profil“ den Punkt „sehr schnelle GPU“ (Punkt 3).
    Anmerkung: Dass es sich bei der GTX 1650 um keine schnelle Grafikkarte handelt, ist mir klar. Allerdings konnte ich in meinen Tests mit dieser Einstellung dennoch die besten Ergebnisse in darktable erzielen.
  6. Speichere die Einstellungen und starte darktable erneut.

Fertig. Die OpenCL-Unterstützung sollte nun aktiv sein. Im den nächsten Kapiteln beschreibe ich, wie Du überprüfst, ob die Einstellungen auch wirklich greifen.

Letzte Aktualisierung: 13.12.2024 | * Affiliate-LinkWas ist das? | Bilder von der Amazon Product Advertising API

Tuning der Konfigurationsparameter

Nachdem endlich die neue Grafikkarte eingebaut, ich das erste Mal OpenCL aktiviert und ein Foto bearbeitet hatte, trat schnell Ernüchterung ein: Gefühlt hatte sich die Performance nicht spürbar verbessert. Ein Blick in den Windows-Task-Manager verriet zudem, dass bei der Arbeit mit darktable die Ressourcen der Grafikkarte nur geringfügig genutzt wurden. Vom erfhofften Performance-Schub war ich weit entfernt.

Die OpenCL-Aktivierung in den darktable-Einstellungen hat anfangs nicht den gewünschten Effekt gebracht. Der versprochene Aha-Effekt blieb aus. Ich verbrachte daraufhin viel Zeit mit der Ursachenanalyse und Recherche nach den optimalen Konfigurationsparametern.

Als ich alle Parameter beisammen hatte, habe ich mich an die Änderung der darktable-Konfigurationsdatei gemacht. Auch das ist kein Hexenwerk. Hierzu editierst Du einfach die Datei darktablerc, die Du im Verzeichnis

C:\Users\<Benutzer>\AppData\Local\darktable\darktablerc

findest. darktable muss natürlich beendet sein, bevor Du Anpassungen vornimmst, da diese sonst nicht direkt geladen werden oder beim erneuten Start überschrieben werden können.

Tipp vorab: Sichere die Originaldatei, bevor Du weiter fortfährst.

Die Datei kannst Du, nach erfolgter Sicherung, einfach mit einem Editor wie bspw. Notepad++ öffnen. Suche dann am besten nach dem String „opencl“, ersetze die bestehenden Einstellungen durch nachfolgende und speichere die Änderungen ab:

opencl=TRUE
opencl_async_pixelpipe=true
opencl_avoid_atomics=false
opencl_checksum=4116299176
opencl_device_priority=*/!0,*/*/*/!0,*
opencl_disable_drivers_blacklist=false
opencl_library=
opencl_mandatory_timeout=200
opencl_memory_headroom=1024
opencl_memory_requirement=2048
opencl_micro_nap=10
opencl_number_event_handles=1000
opencl_scheduling_profile=very fast GPU
opencl_size_roundup=16
opencl_synch_cache=active module
opencl_use_cpu_devices=false
opencl_use_pinned_memory=false

Erledigt. Nach einem erneuten Start von darktable sollten die OpenCL-Einstellungen übernommen werden.

Hinweis: Die o.g. Einstellungen beziehen sich auf eine Grafikkarte mit 4 GB RAM. Sollte der RAM Deiner Grafikkarte abweichen, musst Du die Parameter entsprechend anpassen.

Performance-Messung (Windows)

OpenCL sollte nun aktiv sein. Bleibt natürlich noch zu klären, was die Konfigurationsänderung tatsächlich bewirkt und ob sich der Aufwand wirklich lohnt. Praktischerweise kann in darktable recht einfach eine Performancemessung eingeschaltet werden, die fortan in der darktable-Logdatei im Rahmen des Dateiexports sämtliche Module sowie deren CPU- und GPU-Zeiten protokolliert. Das ist sehr praktisch als Basis für einen Leistungsvergleich.

Vorbereitung der Messung

Damit darktable aber überhaupt die Performance misst und protokolliert, musst Du es über die Kommandozeile mit folgenden Parametern aufrufen:

darktable.exe -d perf

Hinweis: Die Datei darktable.exe befindet sich im Verzeichnis: C:\Program Files\darktable\bin

Nach Ausführung des o.g. Befehls sollte darktable wie gewohnt starten.

Durchführung des Performance-Vergleichs

Um die Performance zu vergleichen, habe ich darktable, wie im vorangegangenen Kapitel beschrieben, gestartet und einmal mit deaktivierter OpenCL-Unterstützung sowie einmal mit aktivierter Unterstützung ein (mehr oder weniger) aufwendig bearbeitetes Astrofoto exportiert.

Diverse Internet-Seiten empfehlen zwar, darktable zusätzlich zu dem im vorangegangenen Abschnitt beschriebenen Befehl „darktable.exe -d perf“ mit dem Parameter „-d opencl“ zu starten. Das führte allerdings bei mir zu Komplikationen, sodass ich den Parameter wegließ und OpenCL für meinen Test manuell in den darktable-Einstellungen aktivierte bzw. deaktivierte, wie ich das bereits eingangs in diesem Beitrag beschrieb. Das funktioniert ebenfalls bestens und Du musst hierzu nicht einmal darktable neu starten, wenn Du Konfigurationsänderungen vornimmst.

Die Protokollierung der Einzelschritte im Rahmen des Dateiexports mit jeweils der benötigten CPU- und GPU-Zeit findest Du in der Datei

C:\Users\Hendrik\AppData\Local\Microsoft\Windows\INetCache\darktable\darktable-log.txt

Achtung: Das Verzeichnis „INETCache“ ist versteckt, d.h. in den Standard-Einstellungen des Explorers unsichtbar. Gib einfach den o.g. Pfad ohne Dateinamen in den Explorer ein und Du landest im richtigen Zielverzeichnis.

 

Ergebnisse der Messung

Lass uns zunächst einen Blick auf die Performance-Messung werfen, um beurteilen zu können, ob OpenCL wirklich so viel bringt, wie anderweitig versprochen wird:

blank
Performancevergleich ohne und mit OpenCL-Unterstützung in darktable

Wie sind nun die Ergebnisse zu interpretieren?

  • Es gibt Prozesse in darktable, die tatsächlich bei Verarbeitung durch die CPU schneller sind und bei denen die OpenCL-Unterstützung keinen zeitlichen Vorteil bringt. Diese Anpassungen sind jedoch nicht besonders ressourcenintensiv und schnell abgearbeitet (Bspw. Weißabgleich: 0,043sec im Vgl. 0,242sec).
  • Bei komplexeren Berechnungen spielt die Grafikkarte mit OpenCL-Unterstützung aber ihre Leistungsvorteile voll aus. Vor allem beim Kontrast Equalizer konnten beinahe 70% Zeitersparnis erzielt werden. – Übrigens genau bei dem Modul, das für mich im Rahmen der Astrobearbeitung eine zentrale Rolle spielt.
  • Der Export der Datei wurde unter dem Strich um mehr als 60% beschleunigt. 18,5 Sekunden stehen 6,7 OpenCL-beschleunigten Sekunden gegenüber. Das ist ein spürbarer Vorteil. Gerade wenn Du viele Dateien exportieren möchtest, ist das DER entscheidender Faktor.
  • Insbesondere die Schritte im Rahmen der Bearbeitung von Astrofotos sind sehr rechenintensiv. Hier sprechen die Ergebnisse für sich und man profitiert ganz klar von der (im Vergleich zur Onboard-Grafik) schnellen Grafikkarte.
  • Sofern Du aber ansonsten nur kleinere Korrekturen an Deinen Fotos vornimmst oder keine Astrofotografie betreibst, lohnt vermutlich die Investition in eine neue Grafikkarte alleine wegen der Bildentwicklung in darktable nicht.

Fazit

Die Aktivierung von OpenCL bringt insbesondere bei komplexeren Fotos, wie dies bei Astrofotos der Fall ist, einen enormen Geschwindigkeitsvorteil. Wie oben zu sehen war, betrug die Zeitersparnis mehr als 60% alleine beim Export.

Letzte Aktualisierung: 13.12.2024 | * Affiliate-LinkWas ist das? | Bilder von der Amazon Product Advertising API

Die bessere Performance kommt jedoch nicht nur beim Export zum Tragen, sondern auch beim Arbeiten mit darktable. Änderungen – insbesondere an Modulen wie dem Kontrast Equalizer, Hoch- und Tiefpassfiltern – gehen mit OpenCL-Unterstützung deutlich flüssiger von der Hand.

Der Workflow wird einfach nicht permanent durch Rechenpausen unterbrochen und man kommt viel schneller zu einem akzeptablen Ergebnis. Der Frustfaktor ist somit deutlich niedriger mit einer soliden Grafikkarte und OpenCL.

Ob sich jedoch diese Anschaffung, ausschließlich für die Arbeit mit darktable, lohnt, hängt letztendlich von den individuellen Präferenzen ab. Sofern Du viel Bildentwicklung betreibst und häufig rechenintensive Module nutzt, spricht einiges dafür. – Zumal sich die Kosten (nomalerweise) in überschaubarem Rahmen bewegen.

Ich habe jedenfalls die Investition bisher nicht bereut und bin jedes Mal aufs Neue erstaunt, wie flott die einzelnen Bearbeitungsschritte mit darktable und aktivierter OpenCL-Unterstüzung von der Hand gehen.

Wie sind Deine Erfahrungen mit der OpenCL-Unterstützung in darktable? Welche Konfigurationseinstellungen haben sich für Dich optimal bewährt? Lass es mich gerne wissen!


Mein Blog ist kostenlos und macht jede Menge Spaß - aber auch viel Arbeit. Wenn es Dir hier gefällt, kannst Du mich ganz einfach und unkompliziert unterstützen: Klickst Du z.B. auf einen meiner gekennzeichneten [Was ist das?Affiliate-Links] und kaufst dann ein Produkt bei Amazon, erhalte ich eine kleine Provision - für Dich bleibt der Preis gleich. Du kannst mir aber natürlich auch gerne direkt eine kleine Spende via Paypal zukommen lassen.

Vielen Dank für Deine Unterstützung!


Mehr Beiträge zu folgenden Themen:
Weiterführende Themen:

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Startseite
Blog durchsuchen
Beitrag teilen
Nach oben springen