Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Résolu] OpenCL nvidia opensuse tumbleweed et noyau 5.6
#1
Bonjour à tous,

J'ai besoin de vos lumières. J'ai un pb openCL. Celui-ci n'est plus disponible. Voici le résultat de darktable-cltest :

Code :
jpv@penguin:~> /opt/darktable-prod/bin/darktable-cltest
[defaults] found a 64-bit system with 16287112 kb ram and 8 cores (0 atom based)
[defaults] setting very high quality defaults

(process:9334): GLib-CRITICAL **: 18:22:31.468: g_variant_unref: assertion 'value != NULL' failed
0.041485 [opencl_init] opencl related configuration options:
0.041496 [opencl_init]
0.041513 [opencl_init] opencl: 1
0.041519 [opencl_init] opencl_scheduling_profile: 'default'
0.041523 [opencl_init] opencl_library: ''
0.041533 [opencl_init] opencl_memory_requirement: 768
0.041541 [opencl_init] opencl_memory_headroom: 400
0.041546 [opencl_init] opencl_device_priority: '*/!0,*/*/*/!0,*'
0.041554 [opencl_init] opencl_mandatory_timeout: 200
0.041566 [opencl_init] opencl_size_roundup: 16
0.041569 [opencl_init] opencl_async_pixelpipe: 0
0.041571 [opencl_init] opencl_synch_cache: active module
0.041575 [opencl_init] opencl_number_event_handles: 25
0.041578 [opencl_init] opencl_micro_nap: 1000
0.041585 [opencl_init] opencl_use_pinned_memory: 0
0.041590 [opencl_init] opencl_use_cpu_devices: 0
0.041595 [opencl_init] opencl_avoid_atomics: 0
0.041599 [opencl_init]
0.041706 [opencl_init] could not find opencl runtime library 'libOpenCL'
0.041751 [opencl_init] could not find opencl runtime library 'libOpenCL.so'
0.041861 [opencl_init] found opencl runtime library 'libOpenCL.so.1'
0.041888 [opencl_init] opencl library 'libOpenCL.so.1' found on your system and loaded
0.049850 [opencl_init] could not get platforms: -1001
0.049864 [opencl_init] FINALLY: opencl is NOT AVAILABLE on this system.
0.049880 [opencl_init] initial status of opencl enabled flag is OFF.

Historique : depuis le début du mois Opensuse tumbleweed (rolling release) est passée au noyau 5.6. L'update à rendu le pilote Nvidia HS. Je me suis donc rabattu sur 'nouveau' et donc plus d'openCL. Aujourd'hui j'ai regardé s'il y avait eu une évolution et j'ai trouvé un post annonçant que le pilote 440.82 était bon avec le noyau 5.6. Auparavant, j'étais avec un pilote 390.132 (Ma carte est une Geforce gtx 1060 3gb). J'ai donc installé le nouveau pilote et maintenant j'ai une carte graphique qui fonctionne avec le driver 440.82. Je pensais avoir retrouvé de ce fait l'openCL, mais non :-(. Pour être certain de la chose, j'ai recompilé complètement DT (avec suppression du repertoire build et suppression du répertoire d'install), mais ça ne change rien.

Quand on regarde le log on voit qu'il trouve la librairie libOpenCL.so.1 mais il bute sur une erreur que je ne connaît pas :
Code :
could not get platforms: -1001
Qu'est-ce que ça signifie ? Et comment corriger ce problème ?
Merci d'avance pour toute aide.
Mes photos : jpverrue.fr
Répondre
#2
Aie Jean-Pierre, je vais pas dire que ................ mais tu te trouves confronter plusieurs fois avec ce que j'ai connu avec Opensuse tumbleweed. Je suis désolé pour toi. Un mise à jour et l'OpenCL n'y est plus.
Répondre
#3
Ça veut dire que tu n'utilises pas le pilote Nvidia. J'ai exactement la même réponse lorsque je lance darktable-cltest sur mon portable alors que je suis sur le GPU intel.
Répondre
#4
As tu nvidia-modprobe installé ?

Sinon regarder la doc (si pas déjà fait) qui contient un chapitre sur les problèmes OpenCL.

https://darktable.gitlab.io/doc/fr/darkt...ystem.html
https://darktable.gitlab.io/doc/fr/darkt...tions.html
--
Pascal - GNU/Debian (sid) - version darktable git/master
http://photos.obry.net
Répondre
#5
Oui, j'ai nvidia-modprobe installé.

Dans la page https://darktable.gitlab.io/doc/fr/darkt...tions.html
ce paragraphe correspond en tous points à mon problème et au message d'erreur relevé
Citation :darktable pourrait trouver votre libOpenCL.so mais vous dire ensuite qu'il ne peut obtenir de plate-forme. Les pilotes NVIDIA donnent souvent un code d’erreur 1001 (« error code -1001 ») dans ce cas. Ceci arrive parce que libOpenCL n'est qu'un encapsuleur de bibliothèque. Les vraies bibliothèques - spécifiques au fabricant, au périphérique et au pilote – doivent être chargées. Ceci a échoué pour une raison quelconque. Il y a une structure de fichiers dans /etc/OpenCL sur votre système que libOpenCL.so consulte pour rechercher ces bibliothèques. Vérifiez que vous n'avez pas quelque chose de louche par là et essayez de le corriger. Souvent, les bibliothèques ne peuvent pas être trouvées par le chargeur dynamique de votre système. En indiquer le nom avec le chemin complet peut aider.

J'ai effectivement trouvé un fichier /etc/OpenCL/vendors/nvidia.icd qui contient une seule ligne :
libnvidia-opencl.so.1
Ce qui semble insuffisant selon l'extrait de la doc ci-dessus. Quelles sont les librairies que je devrais y trouver ?

Et la librairie citée est bien présente
penguin:/ # ls -l /usr/lib64/nvidia*
total 32
lrwxrwxrwx 1 root root 18 Apr 5 12:39 libOpenCL.so.1 -> libOpenCL.so.1.0.0
-rwxr-xr-x 1 root root 27504 Apr 5 12:39 libOpenCL.so.1.0.0
Mes photos : jpverrue.fr
Répondre
#6
Bon... J'ai bien progressé. À force de fouiner un peu partout, j'ai réussi à faire tomber en marche le bidule. Sauf que ce n'est pas stable. J'explique : Si je lance darktable-cltest en tant qu'utilisateur j'obtiens l'ereur que j'ai mentionné au début de ce fil. Par contre si je lance le même darktable-cltest en tant que root, tout fonctionne tout d'un coup. Le GPU est trouvé et tous les modules sont compilés. Ensuiste si je relance darktable-cltest en tant qu'utilisateur, tout va bien, le GPU est aussi trouvé et les modules compilés. Par contre, ce n'est pas stable dans le temps, car si je reboote, il faut que je refasse la manip. Il doit y avoir un pb de droits sur une lib ou l'autre.
Mes photos : jpverrue.fr
Répondre
#7
Aie, aie, aie. Je compatis.
Répondre
#8
J'ai trouvé !!!
En lançant darktable-cltest sous root la carte est trouvée et les noyaux opencl sont compilés. Après ça, le lancement de darktable-cltest en mode utilisateur trouve également la carte et génère également les noyaux opencl. OpenCL fonctionne à nouveau. Ouf ! Sauf que ce n'est pas stable. Après un reboot, tout est à refaire. Lancer une fois sous root, puis ensuite je peux utiliser dt avec opencl en mode utilisateur. Je me suis alors souvenu d'une lecture que j'avais faite après le message de Pascal 'nvidia-modeprobe est-il installé ?' j'avais alors cherché et trouvé effectivement, un exécutable à ce nom ainsi qu'une page de manuel. J'avais lu rapidement cette page. sans en tirer d'indications quant au dysfonctionnement.
Mais le fonctionnement avec d'abord un lancement par root pour que ça puisse ensuite fonctionner en mode utilisateur, ma rappelé une phrase de la page de manuel : 'When installed by nvidia-installer , nvidia-modprobe is installed setuid root'

J'ai vérifié et Bingo ! le bit 'suid' n'était pas positionné sur nvidia-modprobe. un petit chmod qui va bien pour le positionner, et voilà, tout est rentré dans l'ordre !

Merci à tous pour m'avoir mis sur la voie !
Mes photos : jpverrue.fr
Répondre
#9
> J'ai vérifié et Bingo ! le bit 'suid' n'était pas positionné sur nvidia-modprobe. un petit chmod qui va bien pour le positionner, et voilà, tout est rentré dans l'ordre !

Ah, j'avais eu ce problème il y a longtemps sur Debian, c'est un bug des packagers.
--
Pascal - GNU/Debian (sid) - version darktable git/master
http://photos.obry.net
Répondre
#10
Content pour toi Jean-Pierre ! Cool J'avais peut-être été confronté aux mêmes problèmes avec l'OpenCL quand j'étais sous OpenSuse Tumbleweed mais je n'avais pas assez de connaissances de ce système pour aller aussi loin que toi et j'avais dû plusieurs fois réinstaller OpenSuse ce qui m'a fait abandonner ce système.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)