darktable page lede image
darktable page lede image

10.2. darktable e OpenCL

darktable può utilizzare l'accelerazione GPU grazie ad OpenCL per migliorare le prestazioni.

10.2.1. Il contesto

L'elaborazione di immagini in alta risoluzione è un'operazione molto complessa che richiede un computer moderno. In termini sia di fabbisogno di memoria che di potenza di calcolo, lavorare su una tipica immagine da 15, 20 o 25 Megapixel può far raggiungere al vostro computer i propri limiti molto velocemente.

Il fabbisogno di darktable non fa eccezione. La nostra decisione di non compromettere la qualità dell'elaborazione ci ha portato alla scelta di effettuare tutti i calcoli con numeri 4x32-bit a virgola mobile. Questo metodo è più lento di un «ordinario» intero a 8 o 16-bit, ma elimina qualsiasi problema relativo alle rotture tonali o alla perdita di informazioni.

Sono state fatte parecchie ottimizzazioni per rendere darktable il più veloce possibile. Se eseguite una versione aggiornata di darktable su di un computer moderno potreste non notare mai alcun «rallentamento». Tuttavia in certe condizioni e con alcuni moduli potreste avvertire (magari ascoltando la ventola della vostra CPU) la fatica che il vostro povero processore multi-core sta facendo.

Questo accade quando OpenCL entra in gioco. OpenCL ci permette di sfruttare il vantaggio dell'enorme potenza che hanno oggi le schede grafiche. La domanda da parte dei giocatori di scenari 3D estremamente dettagliati per i loro giochi ha spinto gli sviluppatori come ATI, NVIDIA ed altri ad aumentare in modo enorme la potenza delle loro GPU per accontentare tutta questa richiesta. Il risultato è che le moderne schede video con GPU parallele sono in grado di calcolare volumi e superfici con estrema velocità.

Voi non siete giocatori, quindi volete rinunciare a tutta questa potenza? In effetti crediamo che sarebbe il caso di utilizzarla con darktable! Per i calcoli paralleli a virgola mobile le moderne GPU sono molto più veloci delle CPU. Questo è particolarmente vero se si desidera effettuare le medesime poche operazioni ripetute per milioni di volte... e proprio questo accade quando si processa un'immagine da diversi megapixel.