Configuration d'OpenCl

Bonjour à tous,

J’essaie de configurer manuellement OpenCl sans pour autant réussir à voir des changements…

Je suis sur Windows 10 1803 64 bits avec Darktable 2.4.4. Et pour la partie matériel j’ai un Intel i5 6300-HQ et un GPU Nvidia 950M.

Malgré la documentation pour définir les paramètres d’OpenCl en manuel mon PC continue toujours d’utiliser presque uniquement le CPU. Pourtant lorsque je démarre Darktable j’ai bien mon GPU Nvidia qui se met en marche sans être utilisé !

Je me demande donc si je fais des erreurs lors de la configuration ou bien que Darktable juge mon CPU plus rapide que le GPU.

Merci d’avance à tous ceux qui essayeront de m’aider :smiley:

Je n’utilise pas Windows, mais je sais que tous les modules n’utilisent pas OpenCL.

Lorsque tu lances darktable depuis une ligne de commande avec l’option « -d opencl » as tu bien des kernels OpenCL compilés et chargés?

L’option est indisponible sur Windows.

Une autre commande possible est « darktable-cltest ». Elle me ressort aucune erreur, tous les modules se chargent correctement et ma configuration de priorité des cartes est elle aussi reconnu.

Et bien tout va bien alors! Qu’est-ce qui te fait dire qu’OpenCL n’est pas utilisé?

Eh bien soit il n’est pas utilisé ou soit pas très bien utilisé : en chargeant pleins de modules demandant des ressources pour faire des tests, je m’aperçois que c’est presque toujours le processeur qui est utilisé, le GPU intégré est un peu demandé et le GPU Nvidia n’est pratiquement pas utilisé. De plus, activer ou désactiver OpenCl dans les réglages ne change pas la durée des temps de traitement.

Après, est-ce qu’en activant OpenCl on remarque un réel gain sur les temps de calculs ou bien cela reste assez négligeable ?

ton processeur a 4 cœurs. Ta carte graphique en a 640. Techniquement ça devrait diviser le temps de traitement par au moins 2.

Il se peut qu’une mauvaise config de l’OpenCL (notamment l’utilisation de la mémoire) entraîne une exécution par défaut sur le CPU (quelque chose du genre « fallback on CPU » dans la sortie de debug).

J’ai pourtant essayé de faire attention à toutes les options de configuration et il ne devrait pas y avoir de problème.

Pour faire un essai j’ai installé Ubuntu 18.04 sur mon PC, configurer tout ce qu’il fallait pour OpenCl et encore une fois pas de gain de temps entre OpenCl activé ou non. J’avais lancé darktable avec l’option -d opencl et aucun problème n’était à constater, la carte graphique était bien choisie par darktable.

Je commence à me demander si le fait d’avoir une carte graphique pour PC portable (donc moins puissante) fait qu’il n’y a pas de différence entre utiliser OpenCl ou seulement utiliser le CPU.

Peux-tu poster ton fichier darktable.rc ? Et la sortie de darktable -d opencl ? Parce que typiquement, on attend une amélioration de 2 à 5 fois suivant les config. J’ai déjà eu ce type de problème, et j’y ai passé un temps infini, mais c’était les réglages qui posaient problème. Ce qui est long, c’est de tester chaque changement pour comprendre ce qui se passe.

En gros, ce que je soupçonne, c’est que dt demande plus de mémoire que ton GPU n’en dispose, et que du coup la charge de calcul passe sur le CPU. Mais c’est juste une intuition.

Après, est-ce qu’en activant OpenCl on remarque un réel gain sur les temps de calculs ou bien cela reste assez négligeable ?

C’est le jour et la nuit pour moi avec mes RAW de 36Mpix.
[hr]
Une possibilité, as-tu installé Beignet? Si oui, supprime pour n’utiliser que OpenCL sur Nvidia.

Peut-être des informations sur : https://www.phoronix.com/scan.php?page=home ou https://discuss.pixls.us/t/darktable-and-opencl-updated/6117

Désolé, tu es sous Windows j’avais oublié, Beignet n’est peut-être que pour GNU/Linux… Je laisse donc les experts Windows t’aider!

Pour la suite je vais continuer à utiliser Ubuntu 18.04 car avec la version Windows je n’ai pas l’option -d opencl.
Donc sous Ubuntu je n’ai que la carte Nvidia qui est disponible, elle est donc reconnu avec le numéro 0 pour OpenCl. De plus tous les modules sont correctement chargés.

Au niveau de la configuration les paramètres de base ont l’air d’être suffisant car c’est bien le GPU qui est choisi lors du traitement de l’image principal (en ayant abaissé ou non la mémoire minimale requise). A la fermeture de darktable, les logs indiquent que tous les événements ont réussis sur le GPU.

Enfin voici les premières lignes de logs :

0.513548 [opencl_init] opencl related configuration options:
0.513594 [opencl_init]
0.513602 [opencl_init] opencl: 1
0.513610 [opencl_init] opencl_library: ‹  ›
0.513618 [opencl_init] opencl_memory_requirement: 400
0.513626 [opencl_init] opencl_memory_headroom: 300
0.513633 [opencl_init] opencl_device_priority: ‹ /!0,// ›
0.513645 [opencl_init] opencl_mandatory_timeout: 200
0.513671 [opencl_init] opencl_size_roundup: 16
0.513678 [opencl_init] opencl_async_pixelpipe: 0
0.513687 [opencl_init] opencl_synch_cache: 0
0.513700 [opencl_init] opencl_number_event_handles: 25
0.513710 [opencl_init] opencl_micro_nap: 1000
0.513719 [opencl_init] opencl_use_pinned_memory: 0
0.513726 [opencl_init] opencl_use_cpu_devices: 0
0.513734 [opencl_init] opencl_avoid_atomics: 0
0.513741 [opencl_init]
0.527131 [opencl_init] found opencl runtime library ‹ libOpenCL ›
0.527213 [opencl_init] opencl library ‹ libOpenCL › found on your system and loaded
0.898032 [opencl_init] found 1 platform
0.898086 [opencl_init] found 1 device
0.898656 [opencl_init] device 0 GeForce GTX 950M' has sm_20 support. 0.898868 [opencl_init] device 0 GeForce GTX 950M’ supports image sizes of 16384 x 16384
0.898885 [opencl_init] device 0 `GeForce GTX 950M’ allows GPU memory allocations of up to 501MB
[opencl_init] device 0: GeForce GTX 950M
GLOBAL_MEM_SIZE: 2004MB
MAX_WORK_GROUP_SIZE: 1024
MAX_WORK_ITEM_DIMENSIONS: 3
MAX_WORK_ITEM_SIZES: [ 1024 1024 64 ]
DRIVER_VERSION: 390.48
DEVICE_VERSION: OpenCL 1.2 CUDA
1.232078 [opencl_init] options for OpenCL compiler: -cl-fast-relaxed-math -DNVIDIA_SM_20=1 -DNVIDIA=1 -I"/usr/share/darktable/kernels"