darktable page lede image
darktable page lede image

10.2. darktable i OpenCL

darktable może korzystać z akceleracji GPU poprzez OpenCL w celu poprawy wydajności.

10.2.1. Wprowadzenie

Przetwarzanie zdjęc o wysokiej rozdzielczości jest ciężkim zadaniem, wymagającym mocnego komputera. Zarówno pod kątem wymagań pamięciowych, jak i mocy obliczeniowej, wyciąganie piękna z typowych zdjęć 15-, 20- czy 25-megapikselowych może ustawić twój komputer pod ścianą.

Wymagania darktable nie są tutaj wyjątkiem. Jednym z naszych założeń projektowych było nieoszczędzanie na jakości finalnego obrazu, dlatego też wszystkie obliczenie dokonywane są na czterech 32-bitowych liczbach zmiennoprzecinkowych. Jest to wolniejsze niż zwykła algebra 8- lub 16-bitowa liczb całkowitych, ale eliminuje wszystkie problemy z pasmowaniem i utratą informacji.

Wiele wysiłku włożyliśmy w ręczną optymalizację, by uczynić darktable tak szybkim, jak to możliwe. Jeśli uruchomisz bieżącą wersję programu na nowoczesnym komputerze, możesz nie doświadczyć żadnych spowolnień. Pewne obliczenia i moduły mogą jednak wciąż sprawić, że poczujesz (i usłyszysz skowyt wentylatora procesora), ile twój procesor ze średniej półki ma jeszcze do zrobienia.

I tutaj wchodzi OpenCL, całe na biało. Pozwala ono skorzystać z olbrzymiej mocy obliczeniowej nowoczesnych kart graficznych. Zapotrzebowanie graczy na szczegółowe światy 3D we współczesnych strzelankach sprzyja rozwojowi GPU. ATI, NVIDIA i spółka dla spełnienia tych potrzeb włożyły ogrom mocy obliczeniowej w nowoczesne karty graficzne. Efektem są układy, potrafiące przetwarzać równolegle powierzchnie i tekstury w wysokiej liczbie klatek na sekundę.

Nie jesteś graczem i nie korzystasz z tej mocy? Do kroćset, użyj jej przynajmniej w darktable! Do celów przetwarzania równoległego obliczeń zmiennoprzecinkowych nowoczesne procesory graficzne są daleko wydajniejsze od CPU. Szczególny sens ma to wtedy, kiedy te same kilka operacji powtarzasz miliony razy. Na przykład przetwarzając megapikselowe zdjęcia.