Formation OpenCL en contribuant à GIMP

Posté par (page perso) . Édité par Benoît Sibaud. Modéré par ZeroHeure. Licence CC by-sa
27
1
fév.
2016
Technologie

L'encyclopédie Wikipédia introduit OpenCL ainsi:

OpenCL (Open Computing Language) est la combinaison d'une API et d'un langage de programmation dérivé du C, proposé comme un standard ouvert par le Khronos Group. OpenCL est conçu pour programmer des systèmes parallèles hétérogènes comprenant par exemple à la fois un CPU multi-cœur et un GPU. OpenCL propose donc un modèle de programmation se situant à l'intersection naissante entre le monde des CPU et des GPU, les premiers étant de plus en plus parallèles, les seconds étant de plus en plus programmables.

Il s'agit donc d'une API permettant d'améliorer les performances algorithmiques en parallélisant les calculs complexes sur les périphériques divers présents de nos jours sur les ordinateurs (CPU, GPU…).
Côté pilotes, le support de cette API sur Linux fut notamment détaillé il y a quelques jours dans un autre article. Si vous êtes plutôt intéressé par le côté "utilisation" d'OpenCL, pour l'intégrer par exemple dans vos propres programmes, la société StreamComputing lance l'initiative "OpenCL training" (en français: "formation OpenCL") proposant une formation gratuite (à distance, par Internet interposé), avec GEGL — le nouveau moteur de traitement d'image de GIMP — comme "support de cours".

La ruse est donc de vous faire contribuer à GEGL tout en vous enseignant la technologie OpenCL. Moi je dis que c'est "double victoire", mais certains pourraient prétendre que les libristes sont fourbes! :P

Offre limitée

Le but de l'initiative est d'enseigner OpenCL et d'y intéresser les développeurs. L'initiative accepte pour le moment un maximum de 20 participants (7 sont déjà inscrits).

"gratuit" n'existe pas

Le marché est le suivant: l'assurance qu'à la fin de la formation, vous saurez programmer OpenCL en échange de votre contribution à des projets libres utilisant OpenCL.

À ce jour, le "support de cours", c'est à dire le projet libre auquel vous contribuerez, est la plateforme de traitement d'image GEGL, utilisé notamment par GIMP, G'Mic, GNOME photos (voir cette très cool vidéo pour avoir un aperçu du futur de GNOME photos propulsé par GEGL), MyPaint…
Il est clairement indiqué sur la plateforme de développement (un projet sur Github) que GIMP/GEGL est le premier projet de portage officiel. D'autres projets similaires pourront donc voir le jour à l'avenir, dans le but d'enseigner OpenCL aux développeurs.

C'est donc un échange de service, plutôt que financier.

Organisation

Le projet est organisé par Vincent Hindriksen et Adel Johar qui souhaitent baser leur enseignement sur la gamification du développement en évaluant les vitesses d'exécution des kernels OpenCL (un kernel est une fonction OpenCL qui sera exécutée sur un périphérique) pour comparer des implémentations, et ainsi faire ressortir des "vainqueurs". Ils souhaitent également travailler l'optimisation des kernels pour pousser aux limites d'OpenCL.

On peut donc s'attendre à ce que les participants devraient bien connaître OpenCL à la suite de cette formation.

Victor Oliveira, le développeur GEGL qui a écrit la majeure partie du code OpenCL dans GEGL, participe au projet en tant que "conseiller".

À propos de StreamComputing

StreamComputing est une société néerlandaise de développement logiciel, apparemment spécialisé (en se référant au site web) à l'optimisation, aux algorithmes et à la connaissance matérielle.
Ils fournissent du service, de la consultation logicielle et des formations dans les domaines de la programmation GPU et du traitement parallélisé.

Note: l'auteur de cette dépêche n'a aucune relation avec cette société et ne la connaissait même pas avant cette annonce. Je ne fais que relayer l'information.

  • # Niveau technique à considérer.

    Posté par . Évalué à 3.

    Bonjour,

    L'offre semble intéressante. Quelle est la barrière d'entrée? Je veux dire par là quel est le niveau minimum requis de la part du développeur.
    Par exemple, personnellement, je sais coder (bien que je ne sois pas un dév. pro) mais j'aurais plutôt un certain temps d'adaptation avant que le retour sur "service" se fasse.

    • [^] # Re: Niveau technique à considérer.

      Posté par (page perso) . Évalué à 4.

      Salut,

      Je suis un dév GIMP, mais comme je disais dans la dépêche, je n'ai pas de contact avec les personnes qui organisent ça. Je me suis contenté de traduire et/ou paraphraser au mieux l'info telle que je la lis et la comprends. Le mieux est donc de les contacter directement à l'email donné en lien sur la page de l'initiative et de leur poser la question.

      Je pense ceci dit que le seul prérequis est de savoir coder convenablement, de comprendre les bases de l'algorithmique et de ne pas avoir besoin d'aide trop triviale trop souvent (bien que personne n'en voudra, même à un dév pro, d'avoir besoin d'aide de temps en temps sur des problématiques de programmation). Clairement ils ne s'attendent pas à ce que les participants aient déjà une existence dans le domaine précis de l'optimisation OpenCL puisque le but est d'enseigner la technologie.

      Quant au "retour sur service", je pense qu'il arrivera dès le début puisque je pense que vous apprendrez directement avec le code de GEGL. Bon bien sûr, y aurait peut-être quelques exemples OpenCL basique type "tuto" aussi, mais je doute que le but est de rester sur ce genre d'activités très longtemps. J'ai l'impression que le but est de rapidement plonger dans l'écriture de vrais algorithmes bien plus sympas et réellement utiles pour le traitement d'image.

      Ensuite, comme je disais, je fais pas partie de l'initiative, et je vous conseille de les contacter et de poser les questions si ça vous tracasse.

      Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

      • [^] # Re: Niveau technique à considérer.

        Posté par . Évalué à 3.

        Resalut,

        Email Done. Suivant la réponse, je ferai un retour sur les conditions minimales.

        Merci d'avoir fait passer le message.

      • [^] # Re: Niveau technique à considérer.

        Posté par . Évalué à 1.

        Email envoyé également, c'est une super initiative, en plus il parrait que le projet Gimp manque de bras (et de cerveaux).

        Vu que tu es dev Gimp tu pourra peu être me renseigner, quel sont les prérequis software/hardware pour travailler sur la parti OpenCL ?
        Et surtout est ce que c'est possible avec les drivers opensource. Plutôt Radeonsi en ce qui me concerne, ou peut être beignet (en mode cpu only).

        Merci

        • [^] # Re: Niveau technique à considérer.

          Posté par (page perso) . Évalué à 2.

          Email envoyé également, c'est une super initiative, en plus il parrait que le projet Gimp manque de bras (et de cerveaux).

          Clairement nous sommes heureux de récupérer de nouveaux contributeurs.

          quel sont les prérequis software/hardware pour travailler sur la parti OpenCL ?

          Ben si tu veux que ton développement soit plus que théorique, faut avoir accès à une carte graphique avec prise en charge OpenCL. Mais je pense que c'est la plupart des cartes du marché (même si elles l'annoncent pas forcément en fanfare car c'est pas encore très "marketing").

          Et surtout est ce que c'est possible avec les drivers opensource. Plutôt Radeonsi en ce qui me concerne, ou peut être beignet (en mode cpu only).

          D'après ce lien, j'ai pas l'impression que c'est encore là pour radeonsi (c'est "WIP" = travail en cours, donc y a peut-être des trucs qui marchent partiellement?).

          Pour "Beignet", je trouve cette page qui semble indiquer une prise en charge convenable de l'OpenCL (ce qui a priori est normal puisque ça dit que ce projet est spécifiquement destiné à implémenter la prise en charge OpenCL pour les GPUs Intel).

          Je peux pas dire plus, je suis pas du tout versé dans les pilotes, et même ces infos, je les ai juste choppé à l'instant par une rapide recherche web.

          Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

          • [^] # Re: Niveau technique à considérer.

            Posté par (page perso) . Évalué à 4.

            Très clairement, j’ai ici un GPU AMD avec le pilote radeonsi (via le dépôt padoka qui compile tout ça depuis git) et OpenCL n’est pas prêt.
            Par exemple Darktable se plaint d’un "missing image support", donc à mon avis c’est pareil pour GIMP…

            Donc à mon avis c’est driver proprio obligé pour le moment, c’est vraiment dommage et j’espère que cette initiative ne va pas tomber à l’eau “parce que les pilotes ne suivent pas”. OpenCL est vraiment le parent pauvre des pilotes libres. Perso j’ai un truc qui m’empêche d’utiliser le pilote proprio sur ma bécane (ils marchent certainement mais il y a un problème bloquant ailleurs) donc je n’ai aucune possibilité d’utiliser OpenCL.

            ce commentaire est sous licence cc by 4 et précédentes

            • [^] # Re: Niveau technique à considérer.

              Posté par . Évalué à 2.

              Étant contributeur sur Clover, j'ai envoyé un email pour connaître le pré requis au niveau drivers et savoir les éventuels problèmes que pouvais rencontrer des utilisateurs avec GEGL et Clover (je n'ai pas eu le temps de tester moi même).
              Je n'ai pour l'instant pas de retour sur ce point.

              • [^] # Re: Niveau technique à considérer.

                Posté par . Évalué à 1.

                Thomas: merci, oui j'ai le même problème avec Darktable. A voir si je compile la dernière version de Mesa, et LLVM.

                EdB: merci c'est bon a savoir.
                Je doit participé, et de je devrais me servir d'un ordinateur avec une R9 290 avec Mesa(radeonSI), Clover, donc je devrais pouvoir te faire des retours.

                • [^] # Re: Niveau technique à considérer.

                  Posté par (page perso) . Évalué à 2.

                  Perso j’utilise le dépôt padoka et je crois que si ça marche pas avec, c’est que ça n’y est pas du tout, parce que c’est compilé depuis les dépôts git plusieurs fois par semaine.

                  Après, tout OpenCl ne tourne pas autour de ce “Image Support”, mais je sais que pour Darktable c’est éliminatoire. Il y a certainement plein de choses faisables tout de même… C’est juste que je crains un peut que ça soit aussi bloquant pour GIMP… Mais comme je n’y connais pas grand chose au sujet je ne m’avancerais pas beaucoup plus.

                  ce commentaire est sous licence cc by 4 et précédentes

  • # Modération: ajout d'un lien

    Posté par (page perso) . Évalué à 4.

    J'ai oublié de mettre le lien vers la précédente dépêche GEGL, qui permet aux gens de voir un peu mieux ce qu'est cette bibliothèque/plateforme: https://linuxfr.org/news/gegl-0-3-0-et-babl-0-1-12-sont-de-sortie

    Ce serait possible de l'ajouter dans cette dépêche?
    Merci aux gentils modérateurs.

    Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

  • # où est ce prodigué ?

    Posté par . Évalué à 2.

    Il y a un détail que je n'arrive à cerner : cette formation sera-t-elle dispensée "in-line", ou dans leur locaux au pays-bas ?
    Paske c'est quand même bigrement alléchant !

    • [^] # Re: où est ce prodigué ?

      Posté par . Évalué à 1.

      C'est dispensé en ligne.
      La communication se fait via Slack, et pour l'instant la "formation" est diffusé sous forme de Tutorial.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.