darktable page lede image
darktable page lede image

darktable y OpenCL

10.2. darktable y OpenCL

darktable puede utilizar aceleración GPU vía OpenCL para mejorar el desempeño.

10.2.1. El trasfondo

Procesar imágenes de alta resolución es una tarea demandante que necesita un computador moderno. Tanto en términos de requerimientos de memoria como en términos de poder de CPU, obtener la mejor salida de una imagen típica de 15, 20 o 25 Megapixel puede rápidamente llevar su computador al límite.

Los requerimientos de darktable no son la excepción. Nuestra decisión de no comprometer calidad de procesamiento, nos ha llevado a realizar todos los cálculos sobre números de punto flotantes de 4 o 32-bit. Esto es mas lento que los enteros de álgebra ordinaria de 8 o 16bit, pero elimina todos los problemas de rupturas tonales o perdidas de información.

Mucha optimización manual ha sido invertida para que darktable sea lo más rápida posible. Si corre una versión reciente de darktable sobre un computador moderno, quizás note un poco de lentitud. Sin embargo, hay condiciones y ciertos módulos donde sentirá (o escuchará al ventilador de su CPU aullar) que tanto tiene que luchar su pobre procesador multi-core.

Ahí es donde OpenCL entra. OpenCL le permite tomar ventaja del enorme poder de las tarjetas gráficas modernas. La demanda de los jugadores por mundos en 3D altamente detallados en los videojuegos de disparos ha fomentado el desarrollo de GPU. ATI, NVIDIA y Co han puesto un enorme poder de procesamiento en sus GPUs para cumplir dichas demandas. El resultado son tarjetas gráficas modernas con un alto paralelizado de GPUs para calcular rápidamente superficies y texturas en alta velocidad de cuadros por segundo.

¿No eres un jugador y no tomas ventaja de ese poder? Bueno, ¡Entonces deberías usarlo al menos en darktable! Para la tarea del calculo de altos puntos flotantes paralelos, los GPUs modernos son mucho mas rápidos que los CPUs. Eso es especialmente cierto, cuando quiere realizar los mismos pasos de procesamiento sobre millones de elementos. Típico caso de uso: procesando imágenes de megapixel.