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...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CHAPITRE 6Permutation SIMD <strong>de</strong>s arrays appliquéeau changement <strong>de</strong> stockage <strong>de</strong>s données vectoriellesLes processeurs du calcul général présentent, en ce qui concerne le traitement d’images, certainsdésavantages. L’un <strong>de</strong> ceux-ci, propre à toutes les architectures du type von-Neumann, est sans doute <strong>la</strong>façon linéaire d’organisation et d’adressage <strong>de</strong>s données dans <strong>la</strong> mémoire <strong>de</strong> travail. L’espace <strong>de</strong> mémoireest perçu par le processeur comme unidimensionnel car il est présenté comme tel par le sous-système <strong>de</strong>gestion <strong>de</strong> <strong>la</strong> mémoireLes données composées qui présentent l’aspect régulier d’une grille et qui possè<strong>de</strong>nt 2 ou plusieursdimensions, i.e. arrays, matrices, images, tenseurs, sont stockées dans <strong>la</strong> mémoire linéaire et l’accès àces données est assuré par une fonction <strong>de</strong> mapping <strong>de</strong>s in<strong>de</strong>x. Ainsi, chaque in<strong>de</strong>x d’une structure ayant2 ou plusieurs coordonnées est mis en correspondance avec un in<strong>de</strong>x dans <strong>la</strong> mémoire linéaire. Cetteorganisation linéaire <strong>de</strong> <strong>la</strong> mémoire est souvent à l’origine <strong>de</strong>s problèmes considérables dans le domainedu traitement d’images, particulièrement ressenti lors <strong>de</strong> l’utilisation <strong>de</strong> l’approche vectorielle SIMD oùl’on a besoin d’accé<strong>de</strong>r à plusieurs éléments <strong>de</strong> l’image à <strong>la</strong> fois par le biais <strong>de</strong>s données paquetées.C’est <strong>pour</strong>quoi nous constatons un besoin essentiel <strong>de</strong> réorganiser les données vectorielles. Pource<strong>la</strong>, nous introduisons les algorithmes qui changent mutuellement l’axe principal <strong>de</strong> stockage avec l’axesecondaire, i.e. l’axe x <strong>pour</strong> y et vice versa. Nous n’insistons pas <strong>pour</strong> autant sur l’utilisation <strong>de</strong> <strong>la</strong> mêmefonction d’in<strong>de</strong>xation <strong>de</strong>s données. En effet, notre besoin prioritaire est <strong>de</strong> pouvoir accé<strong>de</strong>r aux donnéespar les instructions vectorielles SIMD et nous pouvons nous contenter d’une autre manière d’in<strong>de</strong>xationcar celle-ci joue un rôle secondaire.Les opérations qui satisfont notre <strong>de</strong>man<strong>de</strong> <strong>pour</strong> le changement mutuel <strong>de</strong> l’axe principal avec l’axesecondaire sont :• transposition par diagonale,• transposition par antidiagonale,• rotation <strong>de</strong> + π 2 ,• rotation <strong>de</strong> − π 2 .Dans <strong>la</strong> section suivante 6.1 intitulée Transpositions et rotations <strong>de</strong>s arrays, nous allons présenter lesdéfinitions <strong>de</strong> ces opérations. Elles nous seront utiles d’un côté <strong>pour</strong> donner <strong>de</strong>s définitions formellesd’opérations peu courantes dans le calcul matriciel (notamment les rotations <strong>de</strong>s arrays), d’un autre côté,elles vont constituer automatiquement les <strong>de</strong>scriptions <strong>de</strong>s algorithmes triviaux qui travaillent élémentpar élément. Dans <strong>la</strong> section suivante, 6.2, nous présenterons l’approche qui utilise les macro blocs <strong>pour</strong>l’évalutation <strong>de</strong> toutes ces opérations. Cette approche nous servira plus tard, dans <strong>la</strong> section 6.3, page 133,intitulée <strong>Algorithmes</strong> rapi<strong>de</strong>s SIMD <strong>de</strong> transposition et <strong>de</strong> rotation, où nous allons présenter l’approcheSIMD aux transpositions et aux rotations <strong>de</strong>s arrays <strong>pour</strong> les architectures SWAR et qui va utiliser lesmacro blocs <strong>pour</strong> son travail.127

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

Saved successfully!

Ooh no, something went wrong!