support opencl

bonjour,

J’essaie de voir si je peux faire ce qu’il faut pour que Darktable utilise OpenCL.

system Fedora26, machine Dell latitude 5480
lspci →

00:02.0 VGA compatible controller: Intel Corporation Device 591b (rev 04)
02:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 930MX] (rev a2)

Je n’ai pas installé le driver de nvidia: quand j’essaie il gueule apres Nouveau, et ensuite quand je vais sur la toile,
je tombe sur l’histoire d’optimus, bumblebee, puis PRIME Avant de mettre le souc sur mon installation, je voulais voir
si les progres de fedora n’avait pas déjà fait ce qu’il faut.

j’ai quand même tapé dnf install mesa-libOpenCL.x86_64, et dnf install opencl-headers.noarch

clinfo trouve 3 platforms:
Platform Name Intel Gen OCL Driver
Number of devices 1
Device Name Intel(R) HD Graphics Kabylake Halo GT2
Device Vendor Intel
Device Vendor ID 0x8086
Device Version OpenCL 2.0 beignet 1.3
Driver Version 1.3
Device OpenCL C Version OpenCL C 2.0 beignet 1.3
Device Type GPU
Device Available Yes

Platform Name Clover
Number of devices 1
Device Name NV118
Device Vendor NVIDIA
Device Vendor ID 0x10de
Device Version OpenCL 1.1 Mesa 17.2.4
Driver Version 17.2.4
Device OpenCL C Version OpenCL C 1.1
Device Type GPU

Platform Name Portable Computing Language
Number of devices 1
Device Name pthread-Intel(R) Core™ i7-7820HQ CPU @ 2.90GHz
Device Vendor GenuineIntel
Device Vendor ID 0x8086
Device Version OpenCL 2.0 pocl HSTR: pthread-x86_64-unknown-linux-gnu-haswell
Driver Version 0.14
Device OpenCL C Version OpenCL C 2.0
Device Type CPU, Default
Device Available Yes
Device Profile FULL_PROFILE

Je suis un peu surprise de trouver ca,
1/ je ne savais pas que la carte HD intel pouvait faire de l’opencl, j’ai executé un code test calcul
ca marche mais je ne peux plus bouger la souris, ca manque un peu d’interet.
2/ NVIDIA Geforce 930MX , le machine mesa a l’air de fair ele job, mais ca ne marche pas
3/ Core™ i7-7820HQ CPU @ 2.90GHz, ca m’a l’air un peu debile ?

Je m’apprete à virer les icd, de 1 et 3, mais je n’arrive pas a trouver les requirements de Darktable,
sur les versions/implementations d’OpenCL et les cartes graphiques supportées.

Quelqu’un a-t-il l’exprerience sur ce genre de machine ?

Merci

Clo

C’est le bazar dans ton post, donc probablement dans ta tête.

1 - ton laptop possède manifestement un système Nvidia Optimus à 2 cartes graphiques : une puce intégrée sur le processeur Intel (peu gourmande en énergie, peu performante) et une vraie carte Nvidia dédiée.
2 - pour faire fonctionner OpenCL, tu as besoin impérativement du pilote propriétaire Nvidia, qui doit blacklister le driver libre Nouveau quand tu l’installes (il empêche le noyau de le charger au démarrage).
3 - pour bénéficier de l’allumage à la demande de la carte graphique Nvidia, tu as besoin de bbswitch-dkms (module du noyau Linux) et d’une interface qui permet de le contrôler (soit nvidia-prime, soit bumblebee-nvidia avec le backend virtualgl ou primus). nvidia-prime charge la carte graphique pour toutes la session (tout l’environnement graphique du bureau), bumblebee charge la carte graphique seulement pour les applications sélectionnées (qu’on lance avec la commande « optirun darktable », par exemple), dans un serveur graphique virtuel, ce qui peut potentiellement entraîner une meilleure performance. Tu peux aussi choisir d’avoir la carte graphique Nvidia allumée tout le temps par défaut (si la batterie n’est pas un problème), auquel cas le pilote Nvidia suffit (pas besoin de bbswitch et de ses interfaces).

Les requis de DT pour l’OpenCL sont dans le manuel (comme d’habitude) : https://www.darktable.org/usermanual/fr/darktable_and_opencl_system.html

Activer l’OpenCL sur processeur Intel est possible mais n’apporte rien en terme de performances, voire les dégrade. L’intérêt de l’OpenCL est de pouvoir envoyer du calcul arbitraire sur carte graphique, qui contient 140 à 600 cœurs et embarque une architecture spéciale, différente de celle des processeurs, donc requérant une logique de programmation différente. Le code de darktable (sans OpenCL) est déjà optimisé pour les processeurs 2 à 8 cœurs, pas besoin d’ajouter une couche intermédiaire pour ça. L’intérêt de la compatibilité Intel/OpenCL sort du cadre de ce que fait darktable. D’ailleurs, par défaut, darktable est configuré pour ne pas utiliser les périphériques OpenCL non GPU quand ils sont présents.

En principe, sous Ubuntu/Debian, il est possible d’avoir Nouveau et Nvidia installés simultanément, c’est au niveau des fichiers de configuration que Nouveau est blacklisté lors de la configuration du paquet Nvidia. Ceci dit, je n’ai pas d’expérience sous Fedora, donc je ne sais pas comment réagit le gestionnaire de paquets.

Enfin, je ne suis pas spécialiste, mais il me semble que Mesa est l’implémentation libre d’OpenGL, soit une librairie de rendu 3D, donc rien à voir avec ce qu’on cherche à faire ici (darktable fait du calcul matriciel).

Oui, et je te remercie pour les informations, j’ai déjà installé ce qu’il fallait pour OpenCL sur plusieurs machines, je mélange un peu.
J’ai donc commencé par le driver NVIDIA, je lutte un peu, je vous tiendrai au courant, quand j’ai réussi.

Merci

Il faut nvidia-opencl-icd, nvidia-modprobe nvidia-opencl-common libnvidia-ptxjitcompiler pour l’OpenCL. Avec cela tu devrais tirer les dépendances et avoir une installation qui marche. (clinfo et darktable-cltest sont tes amis:)

nvidia-opencl-dev et opencl-headers aussi il me semble.

Ces trucs s’installent quand on installe le driver de NVDIA ? Ce ne sont pas des pakages ?

ce sont des packages, et il me semble qu’ils ne sont pas installés par défaut par le driver Nvidia

Bonsoir/bonjour,

J’ai fini par y arriver, j’ai donc 2 cartes graphiques, celle integrée , et la nvidia à coté.

Avec les conseils plus haut:

  • je n’ai pas besoin d’économiser la batterie, je me contente donc de faire l’installation avec ./NVIDIA … .run

J’ai suivi les instructions la:
https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/

soucis rencontrés:

  • sous fedora, il faut retirer Nouveau( cf site if !1 0)
  • par défault, l’installation met 3 trucs inutiles dans /etc/OpenCL/vendors/*icd, on doit les virer, ou désinstaller les paquets qui les ont mis
  • mon dell etait installé avec un secure boot, l’installation du driver NVIDIA complique pour une histoire de signature, j’ai fait disable secureboot
  • le truc Dkms ? qui permet de ne pas perdre le driver si update de noyau ne fonctionne pas, j’ai dit non à l’install.

Je n’ai pas installé tous les packages ci-dessus. Seulement ceux décrits sur le site if !1 0

J’ai réussi a démarré darktable, et activer l’utilisation d’opencl sur la carte nvidia , par contre je n’ai pas réussi à faire
d’opérations qui me démontre l’utilité de la chose. Mais bon il me reste à apprendre darktable.

Merci pour votre aide

Ok, tant mieux si ça marche. Par contre sans le dkms, à chaque mise à jour de noyau, tu vas perdre ton interface graphique et il faudra réexecuter le .run en mode console. Tu sauras faire ?

oui, je l’ai fait pour l’installer, et lors de ratée de l’installation. Merci.

je pense aussi que tu devrait supprimer beignet (support OpenCL pour Intel) car il n’est pas fiable et a posé pas mal de problème.
[hr]
en fait je ne sais plus, beignet et l’OpenCL intel est peut être désactivé dans darktable maintenant.

il ne servent à rien, mais à partir du moment ou j’ai viré tous les /etc/OpenCL/vendors/*icd sauf celui de nvidia, ils ne gênent pas?

Non, mais éditer/supprimer des fichiers de configuration sans passer par les outils de maintenance (apt par exemple) est vraiment recherché les ennuies. Ce n’est pas la première fois que je lis cela ici, je ne comprends pas. Pourquoi bidouiller son système alors que tout est prévu (et par des personnes qui savent de quoi il retourne) avec des outils adaptés. Un jour ton système va planter, tu ne seras pas pourquoi, tu demanderas de l’aide… comment veux trouver une solution avec un système bancale… Non vraiment je ne comprends pas! Mais comme j’ai déjà dit chacun et libre de choisir la façon de se pourrir la vie :slight_smile:

il y a une option dans darktable.rc qui blackliste les CPU OpenCL, du style opencl_dont_use_cpu=True (à vérifier)

bonjour,
je precise juste que j’ai plein d’autres trucs installés sur ma machine, ces idc etant installés au moment où
j’ai commencé à regarder opencl pour darktable.
Je ne sais pas quels packages il faut enlever, si je ne les ai pas mis directement.
Faire un mv des icd à l’etage au dessus est reversible.
Portable professionnel, je ne dois rien « casser », que j’ai l’habitude de jouer avec opencl pour faire des
calculs dans le cadre de mon boulot.
(mais beaucoup plus simple que ce qui est implementé dans darktable, je suis allée voir j’y comprends rien :-))

Au départ ma question était, quelle implementation/version d’OpenCL.
→ la reponse est donc celle de Nvidia, 1.2.
Et si quelqu’un avait de l’experience avec le meme portable, il est bizarre, et neuf pour moi.

Autrement, biensur, je n’utilise que dnf (l’apt-xxx de fedora)

Mais le rc de darktable est effectivement plus propre

Merci pour vos réponses

Edit: j’ai finalement enlevé les packages proprement sinon l’upgrade pour avoir la 2.4 me les remets :slight_smile:

Complemnt d’info au cas ou ca sert

Sous Fedora, on est en mode console quand installe le driver de Nvidia, et si on prend l’option
qui dit dmks ou un nom approchant de facon a ce que le driver survive a un update de noyau
ca plante, du coup j’ai du repondre nom à cette option. La bonne nouvelle c’est que je viens
de faire bcp plus qu’un update, fc26->fc27, et le driver est toujours la. Donc n a pas besoin
de re-installer le driver.