darktable page lede image
darktable page lede image

10.2. darktable und OpenCL

darktable kann GPU-Beschleunigung über OpenCL nutzen, um die Performance zu verbessern.

10.2.1. Der Hintergrund

Die Verarbeitung hochauflösender Bilder ist eine anspruchsvolle Aufgabe, die einen modernen Computer erfordert. Sowohl im Hinblick auf den Speicherbedarf als auch auf die CPU-Leistung kann das Beste aus einem typischen 15, 20 oder 25 Megapixel-Bild herausgeholt werden, um Ihren Computer schnell an seine Grenzen zu bringen.

Die Anforderungen von darktables sind da keine Ausnahme. Die Entscheidung, die Verarbeitungsqualität nicht zu beeinträchtigen, hat dazu geführt, dass alle Berechnungen auf 4 x 32bit Fließkommazahlen durchgeführt werden. Dies ist langsamer als ordinary 8 oder 16bit Integer-Algebra, eliminiert aber alle Probleme von tonalen Brüchen oder Informationsverlust.

Eine Menge Handoptimierung wurde investiert, um Darktable so schnell wie möglich zu machen. Wenn Sie eine aktuelle Version von darktable auf einem modernen Computer laufen lassen, werden Sie vielleicht keine slowness bemerken. Es gibt jedoch Bedingungen und bestimmte Module, bei denen Sie spüren (oder vom Heulen Ihres CPU-Lüfters hören), wie sehr Ihr armer Multicore-Prozessor zu kämpfen hat.

Hier kommt OpenCL ins Spiel. OpenCL ermöglicht es uns, die enorme Leistungsfähigkeit moderner Grafikkarten zu nutzen. Gamer's Forderung nach hochdetaillierten 3D-Welten in modernen Ego-Shootern hat die GPU-Entwicklung gefördert. ATI, NVIDIA und Co mussten enorme Rechenleistung in ihre Grafikprozessoren stecken, um diesen Anforderungen gerecht zu werden. Das Ergebnis sind moderne Grafikkarten mit hochgradig parallelisierten Grafikprozessoren zur schnellen Berechnung von Oberflächen und Texturen bei hohen Bildraten.

Sie sind kein Spieler und nutzen diese Macht nicht aus? Nun, dann solltest du es wenigstens im Darktable verwenden! Für die Aufgabe hochparalleler Fließkomma-Berechnungen sind moderne GPUs wesentlich schneller als CPUs. Das gilt insbesondere dann, wenn Sie die gleichen wenigen Bearbeitungsschritte über Millionen von Positionen hinweg durchführen wollen. Typischer Anwendungsfall: Verarbeitung von Megapixel-Bildern.