12.07.2015 Views

Algorithmes de la morphologie mathématique pour - Pastel - HAL

Algorithmes de la morphologie mathématique pour - Pastel - HAL

Algorithmes de la morphologie mathématique pour - Pastel - HAL

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Algorithmes</strong> <strong>de</strong> <strong>la</strong> <strong>morphologie</strong> <strong>mathématique</strong> <strong>pour</strong> les architectures orientées fluxJaromír BRAMBORparmi les utilisateurs <strong>de</strong>s GPU. Elle est représentée par une communauté scientifique grandissante appeléeGPGPU GPG , ce qui est une abréviation du terme ang<strong>la</strong>is General Processing on Graphics ProcessingUnits.Le calcul général sur les processeurs graphiques a certaines propriétés intéressantes. Il se présented’un côté par l’uniformité du calcul, propre au paradigme stream, qui le relie avec d’autres architecturesà flux <strong>de</strong> données. D’un autre côté, il présente <strong>la</strong> propriété du parallélisme spatial qui le distancie <strong>de</strong>sarchitectures c<strong>la</strong>ssiques à flux <strong>de</strong> données et qui le valorise par rapport à ces <strong>de</strong>rnières. Le parallélismespatial est bien incorporé dans l’architecture du pipeline graphique car <strong>la</strong> notion <strong>de</strong> <strong>la</strong> position est présentedans les <strong>de</strong>ux structures <strong>de</strong> données principales <strong>de</strong>s GPU qui sont traitées en flux – vertex et fragments.Ainsi, les kernels <strong>de</strong> traitement du flux ont implicitement à disposition <strong>la</strong> notion <strong>de</strong> <strong>la</strong> position, ce qui fait<strong>de</strong>s vertex et <strong>de</strong>s fragments <strong>de</strong>s tokens tout-à-fait intéressants <strong>pour</strong> le traitement <strong>de</strong> plusieurs dimensionset plus particulièrement <strong>pour</strong> le traitement <strong>de</strong>s images dans notre cas.Le traitement général sur les architectures spécialisées <strong>pour</strong> le graphisme n’est pas une idée nouvelle1 . Diverses architectures ont été proposées et construites, commençant probablement en 1978 parIkonas Eng78 et continuant progressivement jusqu’à nos jours. En 1988, Fournier et Fussell ont pointédans leur article FF88 les avantages mais aussi les désavantages <strong>de</strong> l’utilisation <strong>de</strong>s GPU <strong>pour</strong> un calcu<strong>la</strong>lgorithmique, différent <strong>de</strong> celui <strong>de</strong>stiné à <strong>la</strong> visualisation. Ils ont modélisé le framebuffer par un modèlestream et ont cherché, sur les problèmes précis (le problème <strong>de</strong> visibilité <strong>de</strong>s facettes et le problème ducalcul <strong>de</strong>s ombres) comment <strong>la</strong> puissance <strong>de</strong> ces traitements va augmenter si on ajoutait à ce modèleplus <strong>de</strong> capacités <strong>de</strong> calcul. L’arrivée <strong>de</strong>s processeurs graphiques programmables a <strong>la</strong>rgement changé lepoint <strong>de</strong> vue sur les GPU : ceci se reflète dans leur utilisation <strong>de</strong> plus en plus fréquente <strong>pour</strong> les tâchesd’un calcul massif. De nos jours, on essaie d’exploiter les capacités particulières concernant surtout <strong>la</strong>ban<strong>de</strong> passante <strong>la</strong>rge entre le processeur graphique et sa mémoire dédiée (graphique) mais égalementd’exploiter les possibilités du calcul en virgule flottante. Un excellent article OLG+ 05 analyse <strong>la</strong> bibliographie<strong>de</strong>s réalisations scientifiques sur les processeurs graphiques faites jusqu’à l’année 2005. D’autresarticles CDPS03, GWH05, TC05 présentent une introduction à <strong>la</strong> problématique du traitement général sur lesGPU.Un projet logiciel intéressant appelé Brook BFH+ 04a, BFH + 04b dédié au calcul stream sur les GPU quiexplore leurs capacités d’évaluation massive en virgule flottante a été conçu par l’équipe scientifique <strong>de</strong>l’université <strong>de</strong> Stanford. Il propose un <strong>la</strong>ngage spécialisé qui é<strong>la</strong>rgit <strong>la</strong> syntaxe du <strong>la</strong>ngage C et introduit<strong>de</strong> nouvelles structures <strong>pour</strong> les streams et les kernels. Ainsi, il permet <strong>de</strong> traiter les donnés en flux sansque son utilisateur n’ait besoin <strong>de</strong> connaître l’implémentation exacte <strong>de</strong> son programme dans les termes<strong>de</strong> <strong>la</strong> programmation d’une application <strong>de</strong> graphisme 3D à l’ai<strong>de</strong> d’un API et d’un <strong>la</strong>ngage d’ombragequelconque. C’est, en effet, le travail <strong>de</strong> compi<strong>la</strong>teur brcc du Brook qui traduit le co<strong>de</strong> travail<strong>la</strong>nt avecles streams en un co<strong>de</strong> d’application 3D qui inclut les définitions <strong>de</strong>s sha<strong>de</strong>rs appropriés au traitement.L’environnement d’exécution run-time brt du Brook se charge ensuite <strong>de</strong> <strong>la</strong> configuration du pipelinegraphique <strong>pour</strong> ce traitement, <strong>de</strong> l’envoi <strong>de</strong>s données dans les GPU, <strong>de</strong> l’application <strong>de</strong>s programmesappropriés sur ces données et <strong>de</strong> <strong>la</strong> récupération <strong>de</strong>s résultats.Le grand désavantage <strong>de</strong> Brook <strong>pour</strong> notre travail en <strong>morphologie</strong> <strong>mathématique</strong> est le fait qu’iln’intègre pas encore le traitement stream avec les types <strong>de</strong> nombres entiers et qu’il n’implémente qu’uncertain nombre d’opérations <strong>de</strong> base sur les streams. Le manque <strong>de</strong> types entiers est dû au fait que lesGPU ont été conçus prioritairement <strong>pour</strong> le calcul en virgule flottante et que Brook ne fait qu’exploiterles capacités <strong>de</strong> cette orientation particulière. Ce n’est pas le fait d’utiliser les types floating point <strong>de</strong> 32bits <strong>pour</strong> effectuer les évaluations qui défavorise cette approche <strong>pour</strong> le calcul morphologique, mais lecoût <strong>de</strong>s transferts <strong>de</strong> nos données codées dans ces types vers et <strong>de</strong>puis le GPU. Sachant que ce n’est pas<strong>la</strong> puissance <strong>de</strong>s GPU dans le calcul en virgule flottante que nous utilisons mais <strong>la</strong> <strong>la</strong>rgeur <strong>de</strong> <strong>la</strong> ban<strong>de</strong>passante à <strong>la</strong> mémoire <strong>de</strong>s données qui surpasse celle <strong>de</strong>s CPU c<strong>la</strong>ssiques qui nous intéresse le plus. Dansce cas, il serait plus intéressant d’avoir dans Brook <strong>la</strong> possibilité <strong>de</strong> travailler aussi avec les types integer<strong>de</strong> 8 bits ce qui n’est pas, <strong>pour</strong> l’instant, le cas.1 HCSL02, Ven03Pour plus d’informations historiques, nous renvoyons le lecteur aux articles56

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!