opencl

the background

Le traitement d’images en haute résolution est une tâche exigeante qui nécessite un ordinateur moderne. Que ce soit en termes de ressources mémoire et en termes de puissance du processeur CPU, tirer le meilleur partie d’une image typique de 15, 20 ou 25 mégapixels peut rapidement pousser votre ordinateur à ses limites.

Les exigences de Ansel ne font pas exception. Tous les calculs se font en virgule flottante 4x32 bits. Ceci est plus lent que l’algèbre «ordinaire» en entiers 8 ou 16 bits mais élimine tous les problèmes de ruptures de ton ou de pertes d’informations.

how opencl works

Comme vous pouvez l’imaginer, les architectures matérielles des GPU peuvent être très différentes. Il y a différents fabricants, et même, pour le même fabricant, différentes générations de GPU peuvent être différentes. Dans le même temps, les fabricants de GPU ne rendent pas public tous les détails matériels de leurs produits. Une des conséquences connues est la nécessité d’utiliser sous Linux des pilotes propriétaires si vous désirez tirer le maximum de votre carte graphique.

activer OpenCL dans Ansel

L’utilisation d’OpenCL dans Ansel nécessite que votre PC soit équipé d’une carte graphique adaptée et que les bibliothèques requises soient installées. Les cartes graphiques modernes de NVIDIA et d’ATI prennent en charge complètement OpenCL. Le compilateur OpenCL fait normalement partie du pilote graphique propriétaire ; il est utilisé sous la forme d’une bibliothèque dynamique appelée libOpenCL.so. Cette bibliothèque doit se trouver dans un répertoire qui puisse être trouvé par l’éditeur dynamique de liens de votre système.

configurer opencl

La grande diversité des systèmes, les différences marquées entre les vendeurs OpenCL et les versions de pilotes, ne permettent pas de donner une vue d’ensemble de la manière de configurer OpenCL. Nous ne pouvons que vous donner un exemple pour la version du pilote NVIDIA 331.89 sur Ubuntu 14.04. Nous espérons que cela servira d’introduction de base et vous aidera à résoudre tous les problèmes spécifiques à votre configuration.

Le principe de fonctionnement d’OpenCL ressemble à ceci :

problèmes possibles et solutions

Ansel détecte automatiquement les problèmes d’OpenCL en cours de fonctionnement. Il effectuera alors le traitement sur le CPU ; seule la vitesse est affectée et le résutat final ne sera pas impacté.

Il peut y avoir plusieurs raisons pour lesquelles OpenCL peut échouer pendant la phase d’initialisation. OpenCL dépend des exigences matérielles et de la présence de certains pilotes et bibliothèques. De plus, tous ces éléments doivent correspondre en termes de fabricant, de modèle et de numéro de révision. Si quelque chose ne convient pas (par exemple, votre pilote graphique - chargé en tant que module de noyau - ne correspond pas à la version de votre libOpenCL.so), le support OpenCL ne sera probablement pas disponible.

scheduling profile

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).
GPU très rapide
Avec ce profil de planification Ansel traite séquentiellement sur le GPU le panneau central contenant l’image et la fenêtre de prévisualisation. Ceci est le réglage préférable pour les systèmes qui ont un GPU surpassant fortement le CPU.
GPUs multiples
Ce réglage est destiné aux systèmes ayant plusieurs GPUs dont les performances relatives ne diffèrent pas de manière significative. Chaque fois qu’un travail de traitement est démarré, Ansel utilise tout GPU actuellement inactif mais pas le CPU. Les utilisateurs de systèmes avec une variété de GPUs auront besoin d’un meilleur contrôle sur la priorité relative de ceux-ci. Il serait préférable qu’ils choisissent le profil par “défaut” et affinent leur système avec le paramètre de configuration “opencl_device_priority” (voir multiples périphériques).

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.

multiple devices

Sur la plupart des systèmes, la planification des périphériques OpenCL peut être optimisée en utilisant le réglage du «profil de planification OpenCL». Cependant, si votre système est équipé de plus d’un GPU, vous pourriez souhaiter fixer manuellement la priorité relative des périphériques. Pour ce faire, vous devez sélectionner le profil de planification «par défaut» et définir vos paramètres dans le paramètre de configuration «opencl_device_priority».

Il est important de comprendre comment Ansel utilise les périphériques OpenCL. Chaque séquence de traitement d’une image – pour convertir une entrée en une sortie finale en utilisant un certain historique – est exécutée dans ce qu’on appelle un pipeline graphique. Il y a quatre types de pipelines graphiques différents dans Ansel. Un type est responsable du traitement de l’image du panneau central (ou vue complète) dans le mode chambre noire, un autre pipeline graphique traite l’image de prévisualisation de la fenêtre de navigation. Il peut y avoir une instance de chacun de ces deux pipelines graphiques en cours d’exécution à un instant donné, avec le pipeline graphique de prévisualisation et celui de l’image complète tournant en parallèle. De plus, il peut y avoir plusieurs pipelines graphiques tournant en parallèle pour effectuer l’exportation et il peut y avoir plusieurs pipelines graphiques qui génèrent les miniatures. Si un dispositif OpenCL est disponible, Ansel va l’allouer dynamiquement à un pipeline graphique spécifique pour une exécution et le libérer ensuite.

opencl ne fonctionne toujours pas pour moi

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

Beaucoup des problèmes potentiels n’apparaîtront qu’avec une combinaison spécifique de ces facteurs. Comme les développeurs de Ansel ont seulement accès à un nombre limité de ces variantes, comprenez que nous pouvons ne pas être à même de résoudre votre problème spécifique. Nous ne pouvons pas y faire grand chose s’il n’y a aucun moyen pour nous de le reproduire.

Search

You can also ask Chantal, the AI search engine.