posibles problemas y soluciones
darktable detectará automáticamente los errores en tiempo de ejecución de OpenCL. Al detectar un error, volverá a procesar todo en la CPU. Si bien esto ralentizará el procesamiento, no debería afectar el resultado final.
Puede haber varias razones por las que OpenCL puede fallar durante la fase de inicialización. OpenCL depende de los requisitos de hardware y de la presencia de ciertos controladores y bibliotecas. Además, todos estos deben ajustarse en términos de fabricante, modelo y número de revisión. Si algo no encaja (por ejemplo, su controlador de gráficos, cargado como un módulo del kernel, no coincide con la versión de su libOpenCL.so
), es probable que el soporte OpenCL no esté disponible.
En este caso, lo mejor es iniciar darktable desde una consola con darktable -d opencl
.
Esto proporcionará resultados de depuración adicionales sobre la inicialización y el uso de OpenCL. Primero, si encuentra una línea que comienza con [opencl_init] FINALLY ...
eso debería indicarle si el soporte OpenCL está disponible para usted o no. Si la inicialización falló, mire los mensajes de arriba para cualquier cosa que diga como could not be detected
(no se pudo detectar) o could not be created
(no se pudo crear). Compruebe si hay alguna pista sobre dónde falló.
A continuación, se muestran algunos casos que se han observado en el pasado:
-
darktable indica que no se detecta ninguna tarjeta gráfica compatible con OpenCL o que la memoria disponible en su GPU es demasiado baja y el dispositivo se descarta. En ese caso, es posible que deba comprar una nueva tarjeta si realmente desea compatibilidad con OpenCL.
-
darktable encuentra su
libOpenCL.so
pero luego le dice que no pudo obtener una plataforma. Los controladores de NVIDIA a menudo darán el código de error -1001 en este caso. Esto sucede porquelibOpenCL.so
es solo una biblioteca contenedora. Para el trabajo real, es necesario cargar más bibliotecas específicas de proveedores. Esto ha fallado por alguna razón. Hay una estructura de archivos en/etc/OpenCL
en su sistema quelibOpenCL.so
consulta para encontrar estas bibliotecas. Vea si puede encontrar algo sospechoso allí e intente arreglarlo. A menudo, el cargador dinámico de su sistema no puede encontrar las bibliotecas necesarias. Dar nombres de ruta completos puede ayudar. -
darktable indica que no se pudo crear un contexto. Esto a menudo indica una discrepancia de versión entre el controlador de gráficos cargado y libOpenCL. Compruebe si le sobraron módulos de kernel o bibliotecas de gráficos de una instalación anterior y tome las medidas adecuadas. En caso de duda, realice una reinstalación limpia de su controlador de gráficos. A veces, inmediatamente después de la actualización de un controlador, el controlador del kernel cargado no coincide con las bibliotecas recién instaladas. En este caso, reinicie su sistema antes de volver a intentarlo.
-
darktable se bloquea durante el inicio. Esto puede suceder si su configuración de OpenCL está completamente rota o si su controlador/biblioteca contiene un error grave. Si no puede solucionarlo, aún puede usar darktable con la opción
--disable-opencl
, que omitirá todo el paso de inicialización de OpenCL. -
darktable no puede compilar sus archivos fuente OpenCL en tiempo de ejecución. En este caso, verá una serie de mensajes de error que parecen errores típicos del compilador. Esto podría indicar una incompatibilidad entre su implementación de OpenCL y la interpretación de darktable del estándar. En ese caso, por favor reporte el problema en github y trataremos de ayudarlo. Informe también si observa diferencias significativas entre el procesamiento de una imagen por CPU y GPU.
También existen algunas implementaciones de OpenCL en CPU, que vienen como controladores proporcionados por INTEL o AMD. Hemos observado que no proporcionan ninguna ganancia de velocidad en comparación con nuestro código de CPU optimizado a mano. Por lo tanto, darktable simplemente descarta estos dispositivos por defecto. Este comportamiento se puede cambiar estableciendo la variable de configuración opencl_use_cpu_devices
(en$HOME/.config/darktablerc
) en TRUE
.