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. 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 rupture 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 (tout comme le minage de crypto-monnaie) a favorisé le développement des GPU rapides . Afin de répondre à cette demande, AMD, NVIDIA et 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 qui peuvent calculer rapidement les surfaces et les textures à des fréquences d’images élevées.
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.