darktable page lede image
darktable page lede image

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 es un videojugador y por eso no toma ventaja de esa potencia? Entonces debería al menos usarlo en darktable. Para la tarea de cálculos paralelos intensivos de punto flotante, las GPU modernas son mucho más rápidas que las CPU. Esto es especialmente cierto cuando desea realizar los mismos pasos de procesamiento sobre millones de elementos. Caso de uso típico: procesamiento de megapixeles de imágenes.