darktable: OpenCL na nVidia GTX 750 Ti

darktable již nějakou dobu podporuje výpočty s využitím GPU (skrze OpenCL), v článku porovnávám rychlost konverze RAW snímků se zapnutým a vypnutým OpenCL.

Hardware a systém

Počítač:  Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz (4 jádra x dvě vlákna), paměť 32 GB RAM (DDR3 133/1066 MHz), deska ASUS P8H67-M EVO, systém spouštěný z SSD disku, data uložena na RAID 1 HDD.

Grafická karta: EVGA GTX 750 Ti, 2G B RAM DDR5, 640 CUDA jader, Performance Level 1 (Graphics Clock: 135 – 1293 MHz, Memory Transfer Rate 5400 MHz).

OS a ovladač: Arch Linux, linux 3.16.1-1-ARCH x86_64, nvidia + nvidia-libgl + nvidia-utils + opencl-nvidia verze 340.32-1 (x86_64), libcl verze 1.1-4.

darktable: 1.5+1406 git, počet vláken 1, limit paměti 0 MB, LittleCMS 2 ano, převzorkování v plné kvalitě ano.

Porovnání výkonu

RAW snímek z Canon EOS 5D Mark II, interiér z jeskyně ISO 3200 1/8″ F/4.0.

Výchozí nastavení darktable po importu snímku

Bez OpenCL:

[export] creating pixelpipe took 0.047 secs (0.140 CPU)
[dev_pixelpipe] took 0.000 secs (0.000 CPU) initing base buffer [export]
[dev_pixelpipe] took 0.016 secs (0.087 CPU) processing `white balance' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.103 secs (0.560 CPU) processing `highlight reconstruction' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.172 secs (1.027 CPU) processing `demosaic' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.092 secs (0.520 CPU) processing `base curve' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.117 secs (0.720 CPU) processing `input color profile' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.188 secs (1.157 CPU) processing `sharpen' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.634 secs (4.420 CPU) processing `output color profile' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.035 secs (0.250 CPU) processing `gamma' on CPU, blending on CPU [export]
[dev_process_export] pixel pipeline processing took 1.358 secs (8.740 CPU)
[export_job] exported to `/srv/Photos/Testing/OpenCL/./20140804-152506_01.jpg'

S OpenCL:

[export] creating pixelpipe took 0.040 secs (0.090 CPU)
[dev_pixelpipe] took 0.000 secs (-0.000 CPU) initing base buffer [export]
[dev_pixelpipe] took 0.016 secs (0.017 CPU) processing `white balance' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.011 secs (0.000 CPU) processing `highlight reconstruction' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.044 secs (0.037 CPU) processing `demosaic' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.022 secs (0.020 CPU) processing `base curve' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.018 secs (0.013 CPU) processing `input color profile' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.056 secs (0.043 CPU) processing `sharpen' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.658 secs (4.530 CPU) processing `output color profile' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.034 secs (0.243 CPU) processing `gamma' on CPU, blending on CPU [export]
[dev_process_export] pixel pipeline processing took 0.860 secs (4.903 CPU)
[export_job] exported to `/srv/Photos/Testing/OpenCL/./20140804-152506_02.jpg'

Aktivace dalších modulů

Bez OpenCL:

[export] creating pixelpipe took 0.045 secs (0.067 CPU)
[dev_pixelpipe] took 0.059 secs (0.090 CPU) initing base buffer [export]
[dev_pixelpipe] took 0.017 secs (0.060 CPU) processing `white balance' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.063 secs (0.473 CPU) processing `highlight reconstruction' on CPU, blending on CPU [export]
[dev_pixelpipe] took 1.003 secs (1.023 CPU) processing `chromatic aberrations' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.114 secs (0.860 CPU) processing `demosaic' on CPU, blending on CPU [export]
[dev_pixelpipe] took 17.842 secs (128.003 CPU) processing `denoise (profiled)' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.779 secs (5.703 CPU) processing `lens correction' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.070 secs (0.427 CPU) processing `base curve' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.086 secs (0.670 CPU) processing `input color profile' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.057 secs (0.413 CPU) processing `crop and rotate' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.537 secs (2.923 CPU) processing `shadows and highlights' on CPU, blending on CPU [export]
[dev_pixelpipe] took 5.380 secs (40.243 CPU) processing `equalizer' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.519 secs (4.097 CPU) processing `local contrast' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.068 secs (0.437 CPU) processing `tone curve' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.067 secs (0.067 CPU) processing `color correction' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.157 secs (1.070 CPU) processing `sharpen' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.571 secs (4.350 CPU) processing `output color profile' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.038 secs (0.200 CPU) processing `gamma' on CPU, blending on CPU [export]
[dev_process_export] pixel pipeline processing took 27.575 secs (192.207 CPU)
[export_job] exported to `/srv/Photos/Testing/OpenCL/./20140804-152506_05.jpg'

S OpenCL:

[export] creating pixelpipe took 0.054 secs (0.077 CPU)
[dev_pixelpipe] took 0.045 secs (0.060 CPU) initing base buffer [export]
[dev_pixelpipe] took 0.015 secs (0.010 CPU) processing `white balance' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.009 secs (0.007 CPU) processing `highlight reconstruction' on GPU, blending on GPU [export]
[dev_pixelpipe] took 1.083 secs (1.370 CPU) processing `chromatic aberrations' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.073 secs (0.097 CPU) processing `demosaic' on GPU, blending on GPU [export]
[dev_pixelpipe] took 6.065 secs (5.037 CPU) processing `denoise (profiled)' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.362 secs (1.200 CPU) processing `lens correction' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.020 secs (0.007 CPU) processing `base curve' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.017 secs (0.013 CPU) processing `input color profile' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.011 secs (0.010 CPU) processing `crop and rotate' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.112 secs (0.100 CPU) processing `shadows and highlights' on GPU, blending on GPU [export]
[dev_pixelpipe] took 5.770 secs (39.900 CPU) processing `equalizer' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.144 secs (0.120 CPU) processing `local contrast' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.018 secs (0.013 CPU) processing `tone curve' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.013 secs (0.013 CPU) processing `color correction' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.052 secs (0.047 CPU) processing `sharpen' on GPU, blending on GPU [export]
[dev_pixelpipe] took 0.600 secs (4.323 CPU) processing `output color profile' on CPU, blending on CPU [export]
[dev_pixelpipe] took 0.033 secs (0.227 CPU) processing `gamma' on CPU, blending on CPU [export]
[dev_process_export] pixel pipeline processing took 14.596 secs (53.717 CPU)
[export_job] exported to `/srv/Photos/Testing/OpenCL/./20140804-152506_06.jpg'

Shrnutí

Na daném počítači úspora času na jednotlivých modulech s podporou OpenCL až na výjimky kolísá kolem 70 – 80 %, naopak však přibude 5% časová ztráta u modulů bez podpory OpenCL (dodatečný přesun dat z paměťové karty a zpět?).

V základním počtu modulů je zrychlení s OpenCL celkem nevýrazné – cca o 40 %. S přibývajícími moduly to začne být zajímavější, avšak je třeba mít na paměti, že některé stále běží pouze v CPU (odstranění chromatické aberace, ekvalizér, transformace mezi barvovými prostory).

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..