RAW-Konvertierung mit Multiprozessor Unterstützung

pinky

Mitglied
Registriert
06.10.04
Beiträge
16
In der letzten Zeit gab es ja einigen Erfahrungsaustausch zur Geschwindigkeit von FixFoto mit Multiprozessor-Unterstützung. Zur RAW-Konvertierung wurden aber bisher keine zusätzlichen
Prozessoren genutzt, obwohl da einiger Rechenaufwand anfällt. Ich habe da mal recherchiert und das Konvertierungsprogramm mit Multiprozessorunterstützung übersetzt. Beim Kommandozeilenaufruf konnte ich eine Geschwindigkeitssteigerung feststellen. Bei der Nutzung mit FixFoto habe ich noch nichts gemessen, konnte aber eine gefühlte Verbesserung feststellen.

Gibt es hier Leute, die an diesen Ergebnissen interessiert sind oder ist das mehr ein Sonderthema?

Gruß,
Frank
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

Messwerte wären interessant. Ließe sich z.B. mit einem FF-Skript realisieren.
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

Hallo!

Das wäre auch allgemein interessant. Viele überlegen ja, welcher RAW-Konverter denn benutzt werden soll und ein Geschwindigkeitsvorteil wäre ein gewichtiges Argument.

Gruß,

Ralf
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

Messwerte wären interessant. Ließe sich z.B. mit einem FF-Skript realisieren.
Ach ja, da gibt es ja außer dem Dialog noch ein FF_ImportRaw...

Tja, ich hätte das vorher machen sollen, dann hätte ich vielleicht nicht unberechtigte Erwartungen geweckt. Im Moment sehen die möglichen Steigerungen nicht so toll aus. (PS: aber siehe weiter unten)

Testverfahren: Ich habe in einer Schleife 5x das gleiche Bild (3100x2300 Pixel, DNG) mittels FF_ImportRaw geladen, nichts abgespeichert und die Zeit für ein Bild berechnet. Damit sollten Zeiten für weitere Bearbeitungsschritte weitestgehend ignoriert werden, genauso Festplattenzugriffe. Die 10MB der RAW Datei sollte das Betriebssystem im Puffer haben, die Zeiten sind auch ziemlich reproduzierbar. Genutzt habe ich die neueste FixFoto Version 2.92b37-MultiProz unter Win-XP auf einem Intel Core2 Quad 2,4 GHz.

Zunächst zu dcraw selbst. Hier sah das ganz gut aus, weshalb ich auch den Beitrag schrieb. Es wurden die gleichen Parameter (-H 2 -n 200 -w -q 3) gewählt und das Bild als TIFF rausgeschrieben. Bei der Nutzung in FixFoto fällt jedoch eine zusätzliche konstante Zeit von rund 5..6 Sekunden an, die den Zeitgewinn relativiert:
|dcraw|FixFoto|FixFoto+opt
Uniprozessor|4,9s|10,6s|7,9s
Multiprozessor|2,8s|8,5s|5,8s
Damit lohnt sich das Ganze so lange nicht, wie FixFoto länger als dcraw für die Umwandlung braucht. Ich weiß ja nicht, was da so im Hintergrund passiert, ob die Übertragung über eine Pipe gemacht wird oder noch andere notwendige Bearbeitungsschritte anfallen.

PS: Jetzt ist mir noch was eingefallen. Ich habe noch mal in den Quellkode von dcraw geschaut und etwas optimiert und habe deshalb noch eine zusätzliche Spalte in obige Tabelle anfügen müssen. Dann sieht das ja schon wieder besser aus...
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

FF kopiert die Quelledatei zuerst in das Temp-Verzeichnis.
Warum dcraw nicht gleich auf die Orginaldatei losgelassen wird weiss ich auch nicht.
Eventuell um Sicherzustellen das dort Schreibrechte vorliegen.
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

FF kopiert die Quelledatei zuerst in das Temp-Verzeichnis.
Ja, das stimmt. Da könnte man vielleicht noch was beschleunigen, dieser zusätzliche Kopiervorgang könnte entfallen. Wenn dann FixFoto die Ausgabe von dcraw gleich aus der Pipe lesen würde, wäre noch mal ein Kopiervorgang eingespart und das Problem mit Schreibrechten im Bilderverzeichnis würde auch nicht bestehen. Aber ich weiß natürlich nicht, ob das in die Architektur von FixFoto paßt, ob da zum Einlesen nicht die temporäre Datei gebraucht wird.
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

Ich habe gestern noch mal ein paar Untersuchungen gemacht, da ich meinen eigenen Meßwerten nicht ganz glauben konnte. Das war auch gut so, denn die Zeiten, die dcraw selbst mitteilte, waren nicht korrekt. :(

Es sieht also jetzt so aus:
|dcraw|FixFoto
Original dcraw||10,2s
Uniprozessor|5,9s|7,9s
Multiprozessor|3,8s|5,8s

Da ist nun ersichtlich, daß die zusätzliche Zeit von FixFoto doch nicht so groß wie ursprünglich angenommen ist - Entschuldigung für die Falschaussage weiter oben. Andererseits sieht man, daß die mitgelieferte Version von dcraw nicht ganz so schnell arbeitet wie meine selbst übersetzte Version.

Ich habe außerdem festgestellt, daß die Funktion FF_ImportRaw offensichtlich vor jeder Konvertierung noch mal die Bildinformationen ausliest (-i -v). Das braucht dann etwa 0,6s.

Es sieht also so aus, als ob man die Zeit für eine Konvertierung mittels dcraw durch Optimierungen und Multiprozessorunterstützung etwa halbieren könnte, weiß aber nicht, ob sich der Aufwand lohnt, auch nicht der für Optimierungen betreffs der Dateiübergabe in FixFoto.

Gruß,
Frank
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

Wenn du deine Multi-Opti-dcraw Version weiter pflegen willst und immer aktuelle Versionen nachschiebst wenn sich bei dcraw wieder was tut, dann würde ich es auch gerne Verwenden.
Ich habe den Gedanken verworfen da ich dazu nicht die Zeit habe.
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

...Es sieht also so aus, als ob man die Zeit für eine Konvertierung mittels dcraw durch Optimierungen und Multiprozessorunterstützung etwa halbieren könnte, weiß aber nicht, ob sich der Aufwand lohnt, auch nicht der für Optimierungen betreffs der Dateiübergabe in FixFoto....

Ich meine schon, dass das sich lohnen könnte. ;) Siehe weiter oben der Beitrag von Ralf "Viele überlegen ja, welcher RAW-Konverter denn benutzt werden soll und ein Geschwindigkeitsvorteil wäre ein gewichtiges Argument."

Denn in vielen früheren Diskussionen war eines der Hauptargumtente für andere RAW-Lösungen der Geschwindigkeitsvorteil und der bessere "Workflow":P gegenüber FixFoto. Wenn sich hier deutlich etwas ändert (der neue RAW-Dialog bringt schon Verbesserungen) wäre das sicher auch ein Wettbewerbsvorteil für FixFoto;D Und die anderen RAW-Lösungen (LightRoom...) werden immer vielseitiger, auch die neue Bibble5-Version scheint hier einiges zu bieten...
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

Wenn du deine Multi-Opti-dcraw Version weiter pflegen willst und immer aktuelle Versionen nachschiebst wenn sich bei dcraw wieder was tut, dann würde ich es auch gerne Verwenden.
Das kann ich im Moment nicht versprechen. Ich kann aber die aktuelle Version gern zur Verfügung stellen, da offensichtlich Interesse vorhanden ist. Es besteht ja kein Risiko beim Einsatz aufgrund der vollen Kompatibilität: Wenn die MP-Version nicht funktioniert oder veraltet ist, dann wird eben die "Standardversion" genommen.

Für die Leute, die das Ganze mal selbst testen wollen, stelle ich für eine beschränkte Zeit das Programm unter http://truck.harz.behrens.de/FixFoto/dcrawmp8.90.zip zur Verfügung. Ich habe auch nichts dagegen, wenn das in die nächste Multiprozessor-Beta mit eingepackt würde.
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

Hallo pinky,

habe Deine dcraw_sse2_mp.exe gerade mal auf meiner Quad-CPU (9450 unter XP SP3 mit 4Gig) unter FF 2.92 B29 MP-Version getestet. Bei allen Funktionen (Anzeige der neuen Raw-Importvorschau und auch auch Änderung der Lichterkorrektur von Abschneiden auf 5 oder 9 war Deine Version bei mir etwa halb so schnell, wie die originale dcraw.exe. Das habe ich an den jeweils gleichen 10MP-Raws zuerst mit der Originalversion, dann mit Deiner Version, dann wieder mit der Originalversion getestet. FF jeweils zwischendurch beendet.

Auch die Ausführen-Funktion bis zur Anzeige des 16bit-Dialoges in FF dauerte bedeutend länger.
Der Taskmanager zeigte mir dabei auch nur 2 Cores, die fleißig waren. (Ich habe garantiert die ...mp.exe genommen)

Vielleicht habe ich aber auch etwas falsch gemacht. Einen Versuch war es zumindest wert.

@JKS:
Die Vergleichsvariante Kamera-JPG mit Raw gefällt mir immer besser. Wenn das auch im anschließenden 16bit-Dialog möglich wäre, dann könne man dort direkt weiter angleichen und vergleichen - denn oftmals ist das JPG aus der Kamera doch ein wertvoller Wegweiser zum Ziel.

VG
Walter
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

habe Deine dcraw_sse2_mp.exe gerade mal auf meiner Quad-CPU (9450 unter XP SP3 mit 4Gig) unter FF 2.92 B29 MP-Version getestet. Bei allen Funktionen (Anzeige der neuen Raw-Importvorschau und auch auch Änderung der Lichterkorrektur von Abschneiden auf 5 oder 9 war Deine Version bei mir etwa halb so schnell, wie die originale dcraw.exe.
...
Vielleicht habe ich aber auch etwas falsch gemacht.

Ich kann mir nicht vorstellen, was man da falsch machen könnte. Bei mir war es niemals langsamer als die Originalversion. Mal schauen, ob es noch von anderen Leuten Erfahrungen gibt.

Noch ein paar abschließende Bemerkungen:
Auf die Idee mit der Multiprozessorunterstützung bin ich durch den Forumsbeitrag "Multicore-Adaption von dcraw, dcraw-Quelltext mit OpenMP-Parallelisierung" gekommen, hier gibt es auch den Verweis zu den Patches. Das ist also nicht von mir entwickelt worden.

Die Bibliothek LibRaw als Umsetzung von dcraw hat ja diese Funktionionalität auch integriert und weiterentwickelt, beim Einsatz ist allerdings die Lizenzfrage zu klären. Einige interessante Informationen gibt es auch im Blog "digiKam has a new friend: LibRaw...".

Gruß,
Frank
 
AW: RAW-Konvertierung mit Multiprozessor Unterstützung

Ich konnte überhaupt keinen Unterschied feststellen. Hier eine von mir compilierte Variante, 11.8 statt 15 sec auf DualCore.
 

Anhänge

Zurück
Oben