opencl

el trasfondo

El procesamiento de imágenes de alta resolución es una tarea exigente que requiere una computadora moderna. En términos de memoria y potencia de la CPU, sacar lo mejor de una imagen típica de 15, 20 o 25 megapíxeles puede llevar rápidamente a su computadora al límite.

Los requisitos de Ansel no son una excepción. Todos los cálculos se realizan en números de coma flotante de 4 x 32 bits. Es más lento que el álgebra de enteros de 8 o 16 bits “ordinaria”, pero elimina todos los problemas de rupturas tonales o pérdida de información.

cómo funciona opencl

Como puede imaginar, la arquitectura de hardware de las GPU puede variar significativamente. Hay diferentes fabricantes, e incluso diferentes generaciones de GPU del mismo fabricante pueden no ser comparables. Al mismo tiempo, los fabricantes de GPU normalmente no divulgan todos los detalles del hardware de sus productos al público. Una de las consecuencias de esto es la necesidad de usar controladores propietarios bajo Linux, si desea aprovechar al máximo su tarjeta gráfica.

activando opencl en Ansel

El uso de OpenCL en Ansel requiere que su PC esté equipada con una tarjeta gráfica adecuada y que tenga instaladas las bibliotecas necesarias. La mayoría de las tarjetas gráficas modernas de NVIDIA y AMD vienen con soporte completo para OpenCL. El compilador OpenCL normalmente se envía como parte del controlador de gráficos propietario y se usa como una biblioteca dinámica llamada libOpenCL.so. Esta biblioteca debe estar en una carpeta donde la pueda encontrar el enlazador dinámico de su sistema.

configurando opencl

La enorme diversidad de sistemas y las marcadas diferencias entre los proveedores de OpenCL y las versiones de los controladores hace que sea imposible ofrecer una descripción general completa de cómo configurar OpenCL. Solo podemos darle un ejemplo, en este caso para la versión 331.89 del controlador NVIDIA en Ubuntu 14.04. Esperamos que esto le sirva como una introducción básica y le ayude a resolver cualquier problema específico de su configuración.

posibles problemas y soluciones

Ansel 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.

perfil de programación

Ansel can use the CPU and one or several OpenCL capable GPUs. Depending on the relative performance of these devices, users can choose among certain scheduling profiles to optimize performance. This is achieved by setting the configuration parameter Preferences > Processing > CPU, GPU, Memory > OpenCL scheduling profile, which offers the following choices:

default
If an OpenCL-capable GPU is found Ansel uses it for processing the center image view while the navigation preview window is processed on the CPU in parallel. This is the preferred setting for systems with a reasonably fast CPU and a moderately fast GPU. The exact allocation of devices to the various pixelpipe types can be finetuned with the “opencl_device_priority” configuration parameter (see multiple devices).
very fast GPU
Con este perfil de programación, Ansel procesa secuencialmente la vista de la imagen central y la ventana de vista previa en la GPU. Esta es la configuración preferida para sistemas con una GPU que supera con creces a la CPU.
multiple GPUs
Esta configuración se dirige a sistemas con varias GPU cuyo rendimiento relativo no difiere significativamente. Siempre que se inicia un trabajo de procesamiento, Ansel utiliza cualquier GPU inactiva actualmente, pero no la CPU. Los usuarios de sistemas con una variedad de GPU necesitarán un mejor control de su prioridad relativa. Sería mejor que seleccionaran el perfil “predeterminado” y ajustaran su sistema con el parámetro de configuración “opencl_device_priority” (consulte múltiples dispositivos).

On first start-up or after any detected change in the GPU configuration of your system Ansel tries to identify the best suited profile for you. You can change it at any time in Preferences > Processing > CPU, GPU, Memory.

múltiples dispositivos

La programación de dispositivos OpenCL se puede optimizar en la mayoría de los sistemas mediante la configuración del “perfil de programación OpenCL”. Sin embargo, si su sistema está equipado con más de una GPU, es posible que desee establecer manualmente la prioridad relativa del dispositivo. Para hacer esto, debe seleccionar el perfil de programación “predeterminado” y cambiar la configuración en el parámetro de configuración “opencl_device_priority”.

Es importante comprender cómo usa Ansel los dispositivos OpenCL. Cada secuencia de procesamiento de una imagen, para convertir una entrada en la salida final utilizando una pila de historial, se ejecuta en un pixelpipe. Hay cuatro tipos diferentes de pixelpipe en Ansel. Un tipo es responsable de procesar la vista de la imagen central (o vista completa) en el modo de cuarto oscuro, otro pixelpipe procesa la imagen de vista previa (ventana de navegación). Puede haber uno de cada uno de estos dos pixelpipes ejecutándose en cualquier momento, con los pixelpipes completos y de vista previa ejecutándose en paralelo. Además, puede haber varios píxeles paralelos que realizan exportaciones de archivos, así como varios píxeles paralelos que generan miniaturas. Si hay un dispositivo OpenCL disponible, Ansel lo asigna dinámicamente a un pixelpipe específico para una ejecución y luego lo libera.

opencl sigue sin funcionar para mí

As has been mentioned, OpenCL systems come with a huge variety of setups: different GPU manufacturers and models, varying amounts of GPU memory, different drivers, different distributions etc..

Muchos de los problemas potenciales solo aparecerán con combinaciones muy específicas de estos factores. Como los desarrolladores de Ansel solo tienen acceso a una pequeña fracción de estas variaciones, comprenda que es posible que no podamos solucionar su problema específico. No hay mucho que podamos hacer si no podemos reproducir su problema.

Search

You can also ask Chantal, the AI search engine.