L’utilisation d’OpenCL dans darktable 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.
Quand darktable démarre, il va d’abord essayer de trouver et de charger libOpenCL.so et – en cas de succès – vérifier que la carte graphique disponible prend en charge OpenCL. Une quantité de mémoire graphique suffisante (1 Go+) doit être disponible afin de tirer parti du GPU. Si ceci est OK, darktable va essayer de configurer son environnement OpenCL : un contexte de traitement doit être initialisé, un pipeline de calcul doit être démarré. Les fichiers du code source d’OpenCL (d’extension .cl) doivent être lus et compilés et les routines incluses (appelées noyaux d’OpenCL) doivent être préparées pour les modules de darktable. Une fois tout ceci effectué, la préparation est terminée.
Par défaut OpenCL est activé dans darktable si toutes les étapes ci-dessus se sont terminées avec succès. Si vous désirez le désactiver vous pouvez le faire dans l'onglet « cpu / gpu / mémoire » des préférences (Section 8.8, « Cpu /gpu / mémoire ») en décochant « activer le support d’OpenCL ». Ce paramètre de configuration vous indique aussi si l’initialisation d’OpenCL a échoué : il est grisé dans ce cas.
Vous pouvez à tout moment activer ou désactiver la prise en charge d’OpenCL, ce qui aura un effet immédiat. Selon le type des modules que vous utilisez, vous en remarquerez l’effet comme une accélération générale lors du travail interactif et lors de l’exportation. La plupart des modules de darktable peuvent profiter d’OpenCL mais tous ne sont pas suffisamment consommateurs de ressources pour que la différence puisse être remarquée. Afin de ressentir une vraie différence, prenez un module comme ombres et hautes lumières, renforcer la netteté, filtre passe-bas, filtre passe-haut ou même, à l’extrême, égaliseur et réduction du bruit (profil).
Si vous êtes intéressé par les valeurs de profilage, vous pouvez lancer darktable avec les paramètres de la ligne de commande « -d opencl -d perf ». Après chaque exécution du pipeline graphique, vous allez obtenir l’allocation détaillée du temps d’exécution de chaque module avec un profil encore plus fin pour tous les noyaux OpenCL utilisés.
En dehors de l’accélération, vous ne devriez voir aucune différence de résultats entre le traitement CPU et le traitement GPU. À l’exception des erreurs d’arrondis, les résultats sont prévus pour être équivalents. Si, pour une raison quelconque, darktable échoue à terminer proprement un calcul GPU, il va normalement s’en apercevoir et automatiquement (et de manière transparente), se replier vers un traitement CPU.