J’utilise BOINC depuis des lustres pour
- chercher des signaux provenant des petits hommes vert avec le projet SETI@home, désormais en sommeil,
- détecter des ondes gravitationnelles avec le projet einstein@home,
- aider le CERN à simuler des collisions de particules au LHC avec LHC@home et
- contribuer à différents projets de recherche médicale avec World Community Grid.
Mon ordi alloue gracieusement ses capacités pour ces calculs et dernièrement il se retrouvait régulièrement inutilisable… Faut dire que les performances d’un ordinateur âgé d’une dizaine d’années ne sont plus vraiment au gout du jour. Mais il lui en reste encore un peu sous le pied car jusque là je n’utilise pas la carte graphique!
Mon ordinateur tourne sous Linux Debian testing. Les applications sur GPU ont donc mis un peu plus de temps à arriver par rapport au monde windows mais depuis le temps ca devrait être bon… Oui mais…
Démerde toi pour trouver la doc! J’ai du fureter sur pleins de forum de différents projets pour comprendre un peu le pourquoi du comment. Au final, c’était pas très compliqué. Comme souvent il « suffit » d’installer les bons paquets logiciels sur son système!
Pour résumer, les applis qui peuvent tourner sur GPU doivent être développées avec OpenCL et il faut que le système qui veut les faire tourner soit compatible. Beaucoup de mes recherches sont tombées sur des cas où les gens utilisent les drivers propriétaires de leur carte graphique –> Hors de question pour moi! Open source all the way!
Donc il m’a fallu trouver l’implémentation open source de tout cela et installer le paquet mesa-opencl-icd et ses dépendances.
Finalement c’est assez logique 🙂
- Mesa c’est déjà l’implémentation open source d’OpenGL pour tout ce qui concerne le processing temps réel graphique et qui permet d’utiliser le processeur graphique sous linux.
- icd c’est pour installable client driver. En gros c’est le mécanisme de programmation qui permet de faire appel à toutes ces fonctionnalités.
Voilà!
Une fois tout ça installé, le client BOINC détecte la capacité de mon ordi à exécuter des calculs sur GPU dans ses logs.
Nickel. Reste plus qu’à sélectionner les sous-applications dans les préférences des différents projets auxquels on veut contribuer et…
Manque de pot… Je voulais pouvoir calculer sur GPU en particulier pour le projet einstein@home car c’est lui qui mangeait les capacités de mon ordi et le rendait inutilisable. Je l’avais donc bridé à traiter une seule tâche à la fois dans les réglages fins (très très fins) renseignés dans le fichier:
/var/lib/boinc-client/projects/einstein.phys.uwm.edu/app_config.xml
En y inscrivant ceci:
<app_config>
1
</app_config>
Mais dans l’implémentation OpenCL du programme d’analyse d’einstein@home qui peut tourner sur GPU, FGRPB1G, il y a une incompatibilité avec la librairie installée et ca plante. L’exécution du programme FGRPB1G dure qques secondes avant d’afficher une erreur dans BOINC manager. Dans le log de l’unité de calcul en question qu’on retrouve dans son compte sur le site web d’einstein@home il est écrit:
OpenCL compiling FAILED! : -11 . Error message: input.cl:7:26: error: unsupported OpenCL extension ‘cl_khr_fp64’ – ignoring
input.cl:10:30: error: unknown type name ‘double2’; did you mean ‘double’?
input.cl:10:30: error: use of type ‘double’ requires cl_khr_fp64 extension to be enabled
Du coup, j’ai interdit l’utilisation de ce programme 🙁 J’aurais pu corriger le code source puisqu’il est fourni. Sauf que si tu modifies le code source, bah tu es viré du projet! Faudrait évidemment pas que n’importe quel gugusse puisse pourrir les résultats d’analyse comme ca s’est déjà vu! Oui oui, des petits malins déjà ont eu l’idée de modifier les codes sources pour améliorer leur place dans la course aux plus gros contributeurs!
Cet article est là pour qu’un jour peut-être je me rappelle de tout cela et que je rejette un coup d’oeil pour voir si ça marche lorsque des mises à jour auront eu lieu.
Mieux le theme, c’est plus large et donc plus lisible.