darktable page lede image
darktable page lede image

darktable et OpenCL

10.2. darktable et OpenCL

Afin d’améliorer ses performances, darktable peut utiliser l’accélération GPU par l’intermédiaire d’OpenCL.

10.2.1. Le contexte

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 darktable ne font pas exception. Notre décision de ne pas compromettre la qualité du traitement, a conduit à ce que tous les calculs se fassent 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.

De nombreuses optimisations ont été mises en œuvre afin de rendre darktable aussi rapide que possible. Si vous avez une version actuelle de darktable sur un système moderne, vous ne devriez pas noter de « ralentissement ». Il y a cependant certaines conditions et certains modules où vous ressentirez (ou entendrez au vrombissement du ventilateur de votre CPU) la manière dont votre pauvre processeur multi-cœurs est en train de lutter.

C'est ici qu’OpenCL arrive. OpenCL nous permet de tirer avantage de l’énorme puissance des cartes graphiques modernes. Dans les jeux de tir modernes la demande des joueurs en mondes 3D très détaillés a favorisé le développement des GPU. Afin de répondre à cette demande, ATI, NVIDIA and Co ont mis une énorme puissance de traitement dans leurs GPU. On obtient ainsi des cartes graphiques modernes avec des GPU hautement parallélisées permettant de calculer rapidement, avec des fréquences d’images élevées, les surfaces et les textures.

Vous n'êtes pas un joueur et vous ne tirez pas parti de cette puissance ? Et bien vous pouvez l’utiliser au moins dans darktable ! Pour les tâches demandant des calculs fortement parallélisés en virgule flottante, les GPU modernes sont bien plus rapides que les CPU. Ceci est particulièrement vrai lorsque vous souhaitez répéter les mêmes étapes de traitement sur des millions d’éléments. Cas typique d’utilisation : traitement d’images comportant des millions de pixels.