darktable page lede image
darktable page lede image

Posibles problemas y soluciones

10.2.5. Posibles problemas y soluciones

darktable detectará problemas en las rutinas de OpenCL de forma automática. Si esto sucede, re-procesará todo en el CPU; solo la velocidad se verá afectada, el resultado final no se verá afectad.

Pueden existir varias razones por las cuales OpenCL podría fallar durante la fase de inicialización. Dependemos de los requerimientos de hardware y sobre la presencia de ciertos drivers y librerías. Adicionalmente, todos estos tienen que encajar en los términos del modelo del fabricante y el número de revisión. Si algo no cuadra, e.g. su driver gráfico (cargado en los módulos del kernel) no coincide con la versión de su libOpenCL.so, entonces el soporte OpenCL no estará disponible.

En ese caso, lo mejor que puede hacer es iniciar darktable desde la consola con

darktable -d opencl

Esto le dará una salida adicional de depuración sobre la inicialización y uso de OpenCL. Primero vea si encuentra una línea que inicie con [opencl_init] FINALLY ... Esto le debería indicar, si el soporte OpenCL está disponible o no. Si la inicialización falla, mire los mensajes y busque algo que diga no se pudo detectar o no se pudo crear. Revise si hay una pista sobre la razón del fallo.

Aquí tiene algunos casos observados en el pasad:

  • darktable quizás le indique que no se ha detectado una tarjeta gráfica con OpenCL o que la memoria disponible de su GPU es muy bajo, y por ende, el dispositivo será descartado. En ese caso, quizás necesite comprar una tarjeta nueva, si realmente quiere el soporte OpenCL.

  • darktable quizás encuentre su libOpenCL.so pero luego le dirá que no pudo obtener la plataforma. En este caso, los drivers NVIDIA usualmente darán el error de código -1001. Esto sucede porque libOpenCL.so librería de envoltorio. Para un trabajo real, librerías adicionales – específicas del vendedor, dispositivo y driver – necesitan ser cargadas. Esto falló por alguna razón. Hay una estructura de archivos en /etc/OpenCL en su sistema que libOpenCL.so consulta para encontrar estas librerías. Revise si puede encontrar algo sospechoso y trate de arreglarlo. Usualmente, las librerías necesarias no pueden ser encontradas por el buscador dinámico de su sistema. Dar los nombres de las rutas completas quizás ayude.

  • darktable quizás también le diga que un contexto no pudo ser creado. Esto indica usualmente una diferencia de versión entre los drivers gráficos (cargados) y libOpenCL. Revise si tiene módulos de kernel sobrantes o librerías gráficas de alguna instalación antigua, y tome las acciones apropiadas. En caso de duda, haga una instalación fresca de sus drivers gráficos. A veces, inmediatamente luego de la actualización de un driver, el driver cargado del kernel no coincidirá con las librerías recién instaladas: en dicho caso, reinicie su sistema.

  • darktable quizás se cuelgue en raras ocasiones de forma directa durante el inicio. Esto puede suceder si su configuración de OpenCL está completamente rota o si driver/library contiene errores severos, Si no puede solucionarlo, aún puede utilizar darktable con la opción --disable-opencl, la cual se saltará completamente el paso de inicialización de OpenCL.

  • darktable quizás falle al compilar sus propias fuentes OpenCL al iniciar. En dicho caso, obtendrá un número de mensajes de error que lucirán como un típico error de compilación. Esto le indicará una incompatibilidad entre su implementación de OpenCL y nuestros estándares de interpretación. En este caso, visítenos en IRC en #darktable en Freenode o en la lista de correo de desarrolladores darktable-dev@lists.darktable.org y reporte el problema. Hay altas probabilidades de que podamos ayudarle. ¡Por favor, también reporte cualquier diferencia significativa entre las imágenes procesadas por su CPU y GPU!

También existen algunas implementaciones sobre CPU para OpenCL. Estas vienen como drivers provistos por INTEL o AMD. Hemos observado que no ganamos velocidad sobre nuestro código CPU optimizado manualmente. Por ende, descartamos estos dispositivos por defecto. Este comportamiento puede ser cambiado al ajustar la variable de configuración opencl_use_cpu_devices a VERDADERO (TRUE).