-- Darktable mit "Warp Antrieb"
Darktable mit "Warp-Antrieb"
Darktable ist schon gut auf Performance optimiert und läuft auch auf recht schnell auf alter Hardware. Die meisten Entwicklungsarbeitsschritte sind selbst auf meinen alten AMD Athlon 64 X2 4600+ mit zwei Kernen schnell genug, aber der Jpeg Export von meinen 20 Megapixel Fotos ist quälend langsam. Für den Export von nur einem Jpeg in voller Auflösung brauchte mein Rechner durchschittlich ca. 5 Minuten. Für den Export der schönsten Urlaubsfotos musste der Rechner stundenlang rechnen, da die alte Mittelklassen-Grafikkarte kein OpenCL unterstützte.
Darktable Performance-Steigerung durch OpenCL
OpenCL ist eine standartisierte Schnittstelle mit der man Rechenaufgaben auf z.B. auf einer Grafikkarte ausführen kann. Diese Berechungen können paralleliert werden und mit vielen Rechenkernen gleichzeitig abgearbeitet werden. Darktable unterstützt OpenCL und kann damit einige Berechungen deutlich beschleunigen.
Nach meiner Recherche ist die Verwendung von OpenCL unter Linux nur mit den proprietären Grafikkartentreiber von AMD oder Nvidia möglich. Bei AMD Grafikkarten muss man zusätzlich zum Treiber auch noch das SDK installieren. Bei Nvidia ist OpenCL schon direkt im Treiber enthalten. Ich habe mich daher für eine Nvidia Grafikkarte entschieden. Bei der Auswahl der Grafikkarte ist darauf zu achten, dass Sie mindestens 1GB RAM hat, sonst kann darktable die Berechungen nicht ausführen. Jede Nvidia Grafikkarte, die CUDA unterstützt kann auch theoretisch OpenCL. Die folgenden Grafikkarten sind daher von der Hardwareseite OpenCL tauglich:
- Aktuelle Nvidia Grafikkarten mit CUDA Support
- Ältere Nvidia Grafikkarten mit CUDA Support
- Übersicht bei Wikipedia
Welcher Nvidia Treiber bei welcher Grafikkarte mit CUDA Support auch OpenCL unterstützt konnte ich nicht herausfinden. Ich denke alle Nvidia Grafikkarten mit CUDA die der Linux Nvidia Treiber unterstützt können auch OpenCL.
Für die höchste Performance ist bei OpenCL nicht nur die Tatfrequenz der Kerne verantwortlich, sondern auch die Anzahl der Kerne, da ja die Berechungen auf die Kerne verteilt werden. Ich habe mich daher für eine Grafikkarte mit möglichst vielen CUDA Kernen entschieden. Für die Entscheidung habe ich die Nvidia Quadro Liste bei Wikipedia benutzt und mich über die Kernanzahl informiert. Die Entscheidung viel auf die Nvidia Quadro FX-3800. Die CAD Grafikkarte bietet 192 CUDA Kerne und ist bei Ebay gebraucht ab ca. 30 EUR zu bekommen.
Installation vom Nvidia Treiber und einrichten von OpenCL für darktable
Nach der Installation der Grafikkarte im Rechner hat mir Ubuntu sofort die Installation der Nvidia Treiber vorgeschlagen. Bei keinem der von Ubuntu vorgeschlagenen Treiber konnte ich die Bildschirmauflösung richtig einstellen. Erst nach der Installation des aktuellsten Linux Treibers von der Nvidia Homepage hat alles reibungslos funktioniert, bis auf OpenCL mit darktable. Für die Benutzung von OpenCL musste noch ein Link von hand angelegt werden. Weitere Infos dazu finden Sie auf der Darktable Seite How to activate OpenCL in darktable und Setting up OpenCL on your system.
Damit darktable die OpenCL Unterstützung nutzt, müssen Sie jetzt noch in den Voreinstellung von darktable den Haken in den zentralen Optionen bei "OpenCL-Unterstützung aktivieren" setzen.
Performancevergleich:
- JPEG Export von einem 20 Megapixel Foto ohne OpenCL durchschnittlich ca. 5 Minuten/Foto
- JPEG Export von einem 20 Megapixel Foto mit OpenCL auf einer Nvidia FX-3800 durchschnittlich ca. 10 Sekunden/Foto
Eine Grafikkarte mit OpenCL Support kann also bei einem alten Rechner den JPEG Export unter darktable 2.0.4 um ca. das 30-fache beschleunigen!
Viel Spass mit dem neuen Warp-Antrieb...