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 BRAMBORPar dualité, le hi-shuffling, est défini par <strong>la</strong> fonction shfhi. Il assure <strong>la</strong> fonctionnalité simi<strong>la</strong>ire sur lesmoitiés supérieures <strong>de</strong>s <strong>de</strong>ux vecteurs d’entrée.shfhi :: I → (PVec I α, PVec I α) → PVec I αshfhi s (x ,y) = listArray (1,p) ( alter s ( (ielems x (h+1, p)) ,(ielems y (h+1, p)) ) )where p = dimsAr1D x ; h = div p 2Notons que les arrays d’entrée <strong>de</strong>s fonctions shuffle shflo et shfhi doivent avoir <strong>la</strong> même dimension etcelle-ci doit être <strong>de</strong> 2 m , m ∈ N. La figure 6.3 illustre <strong>la</strong> gamme complète <strong>de</strong>s shuffles dérivables à partir<strong>de</strong>s définitions précé<strong>de</strong>ntes <strong>pour</strong> les arrays <strong>de</strong> 2 3 éléments.XY1,A 2,B 3,C 4,D 5,E 6,F 7,G 8,H 1,I 2,J 3,K 4,L 5,M 6,N 7,O 8,PXY1,A 2,B 3,C 4,D 5,E 6,F 7,G 8,H 1,I 2,J 3,K 4,L 5,M 6,N 7,O 8,P1,A1,I 2,B 2,J 3,C 3,K 4,D 4,L5,E 5,M 6,F 6,N 7,G 7,O 8,H 8,P 1,A2,B 1,I 2,J 3,C 4,D 3,K 4,L5,E 6,F 5,M 6,N 7,G 7,O 8,H 8,Pshflo 1 (X,Y)shfhi 1 (X,Y)shflo 2 (X,Y)shfhi 2 (X,Y)XY1,A 2,B 3,C 4,D 5,E 6,F 7,G 8,H 1,I 2,J 3,K 4,L 5,M 6,N 7,O 8,P1,A 2,B 3,C 4,D 1,I 2,J 3,K 4,Lshflo 4 (X,Y)5,E 6,F 7,G 7,O 5,M 6,N 8,H 8,Pshfhi 4 (X,Y)FIG. 6.3 : La gamme <strong>de</strong>s fonctions shuffle <strong>pour</strong> les vecteurs paquetés <strong>de</strong> 8 éléments6.3.2 Découpage sur les macro blocs et leur recol<strong>la</strong>ge sur les architectures SWARDans notre travail SIMD avec les architectures SWAR, il est convenable <strong>de</strong> découper l’array d’entréeen macro blocs dont les dimensions sont égales à <strong>la</strong> taille N du registre qui héberge les données <strong>de</strong>s typesmultimédia. Les processeurs GPPMM les plus courants (SH-5, Intel IA-64, AMD64, Intel MMX) ont <strong>la</strong>taille du registre multimédia <strong>de</strong> 64 bits ce qui pré<strong>de</strong>stine, <strong>pour</strong> le travail avec les données <strong>de</strong> 8 bits, ledécoupage en macro bloc <strong>de</strong> 8 × 8 éléments. Le type <strong>de</strong> 8 bits est couramment utilisé dans le traitementd’images comme le type <strong>de</strong> base <strong>pour</strong> le stockage <strong>de</strong>s pixels. Si nous utilisons le type <strong>de</strong> 16 bits, notremacro bloc serait réduit à 4 × 4 éléments.Sur les architectures différentes avec les registres plus <strong>la</strong>rges, telles qu’Intel SSE2/3 dont les registressont <strong>de</strong> 128 bits, le choix du macro bloc peut être différent. Notons que ces architectures ont <strong>la</strong> taille <strong>de</strong>leurs registres d’une puissance n <strong>de</strong> 2, N = 2 n , ce qui satisfait les exigences <strong>de</strong>s fonctions shuffles surles dimensions <strong>de</strong>s vecteurs d’entrée.En plus du choix <strong>de</strong> découpage, nous allons accé<strong>de</strong>r aux données dans <strong>la</strong> mémoire en utilisant lestypes paquetés. Ainsi, nous allons percevoir les arrays dans nos définitions comme paquetés. Ce qui veutdire qu’à <strong>la</strong> p<strong>la</strong>ce <strong>de</strong> travailler avec les macro blocs <strong>de</strong> dimensions N × N du typeAr ( I , I ) αnous allons travailler, après le paquetage, comme défini dans 4.4.3 page 68, avec les macro blocs du typeAr ( I , I ) (PVec I α)qui auront les éléments du type PVec <strong>de</strong> taille N et où une dimension <strong>de</strong> cet array sera réduite à 1.Ainsi, nous allons travailler avec un array d’une dimension qui sera stocké dans un type <strong>pour</strong> les arrays2D. Celle <strong>de</strong>s dimensions qui sera réduite à 1 dépendra <strong>de</strong> notre choix du sens du paquetage. Cetteperception est, en effet, un cas spécial issu du choix particulier <strong>de</strong>s dimensions du macro bloc.134

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

Saved successfully!

Ooh no, something went wrong!