Hallo,
Koennte fuer den einen oder anderen mit einer Multicore CPU interessant sein, ich habe
mal eine OpenMP parallele Version von dcraw gemacht, den Sourcecode kann man hier
pdcraw herunterladen.
Ich konnte nichts derartiges finden, deswegen habe ichs selbst gemacht (und hoffe
D. Coffins Regeln fuer Weiterverbreitung/Aenderungen beachted zu haben).
Ich habe das ganze nur unter Linux getested, und da geht's ganz gut.
Compilieren mit
gcc -fopenmp -DNO_JPEG -DNO_LCMS -O3 -ftree-vectorize -msse3 pdcraw.c -o pdcraw -lm
oder in der Art, ich habs mit 4.2.3 unter Ubuntu 8.04 getested.
Was kann man erwarten?
Keinen linearen Zuwachs, das ist klar, dazu sind zuwenige Teile
des Codes parallel, und das einlesen und rausschreiben dauert auch seine Zeit.
Auf einem Dualcore Intel E8200 auf 2.8 Ghz sehe ich:
Ubuntu dcraw fuer ein A700 Bild nach ppm: 2.872s
das pdcraw mit export OMP_NUM_THREADS=2: 1.892s
Ubuntu dcraw mit einem 7D Bild nach ppm: 1.497s
das pdcraw mit 2 Threads: 0.976s
ein File aus einer Mamiya ZD: 5.824s vs 3.274s
Mit dem grossen File habe ich auch mal auf einem 3Ghz Dual-Duacore gemessen (kein Quad, sondern 2 Sockelsystem):
1thread 5.269s 2 threads 3.113s 4 threads 2.073s
Parallelisiert ist: AHD und PPG (default Qualitaet und -q 2), etwas aus der Farbskalierung scale_colors, etwas
aus convert_to_rgb und etwas aus fuji_rotate fuer die Fujis mit 45Grad gedrehtem Sensor (die auch PPG als
default verwenden... PPG ist nicht Cache optimiert im Gegensatz zu AHD, das
koennte man machen, aber war mir aber zuviel Arbeit. Habe keine Fuji...)
Ich habe es mit gcc 4.2.3, Sun Studio 12 V5.9 fuer Linux und dem Intel 10.1 Compiler jeweils mit OpenMP
Schalter getested. Bestes Ergebnis mit SUN, dann kommt gcc, und danach intel, der hat aber ein Problem
und wird mit mehr Cores langsamer, also eher nicht verwenden.
Alle Ergenisse oben mit gcc, weil den die meisten haben werden, und der SUN Compiler
(auch kostenlos btw) nur minimal besser ist.
Da ich unter Windows keine Compiler habe (und keine Ahnung wie man unter Windows was baut)
kann ich da leider nicht weiterhelfen, und auch keine Ergebnise vorweisen.
Gruss
Holger