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.

<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 BRAMBORsndsndABCD E FG H IA TDD TDB TDE TDG TDI TDC TDF TDH TDfstÉlémentsinfortmatifs<strong>de</strong> l’image64-bit(8x8-bit)FIG. 6.7 : La transposition d’un array dont les dimensions ne sont pas un multiple <strong>de</strong> <strong>la</strong> taille d’un registremultimédia <strong>de</strong> 64 bits ; TD = macro bloc transposé par <strong>la</strong> diagonalefstservent comme les invariables architecturales dans notre co<strong>de</strong>. Ainsi, le même co<strong>de</strong> peut être réutilisé surplusieurs architectures multimédia.Le <strong>de</strong>uxième exemple est présenté sur <strong>la</strong> fig. 6.8. Il#<strong>de</strong>fine MRPH_MACRO_TrByMainDiagonal_8x8_t8(\s’agit d’un co<strong>de</strong> écrit manuellement qui assure <strong>la</strong> mêmeA0, A1, A2, A3, A4, A5, A6, A7, \B0, B1, B2, B3, B4, B5, B6, B7 \fonctionnalité <strong>de</strong> transposition d’un macro bloc par <strong>la</strong>) \diagonale mais qui utilise les fonctions intrinsèques{\B0 = mrph_asm_mshflo_iu8vec8(A0, A4);\du compi<strong>la</strong>teur <strong>pour</strong> les processeurs compatibles IntelB1 = mrph_asm_mshflo_iu8vec8(A1, A5);\B2 = mrph_asm_mshflo_iu8vec8(A2, A6);\MMX/SSE2.B3 = mrph_asm_mshflo_iu8vec8(A3, A7);\B4 = mrph_asm_mshfhi_iu8vec8(A0, A4);\La table 6.1 présente les résultats expérimentauxB5 = mrph_asm_mshfhi_iu8vec8(A1, A5);\B6 = mrph_asm_mshfhi_iu8vec8(A2, A6);\<strong>pour</strong> <strong>la</strong> transposition par <strong>la</strong> diagonale et par l’antidiagonaled’une image 512 × 512 dont les éléments sontB7 = mrph_asm_mshfhi_iu8vec8(A3, A7);\\A0 = mrph_asm_mshflo_iu8vec8(B0, B2);\A1 = mrph_asm_mshflo_iu8vec8(B1, B3);\du type unsigned integer <strong>de</strong> 8 bits sur le processeur IntelPentium 4 <strong>de</strong> 2.4 GHz par l’exécution en un seulA2 = mrph_asm_mshfhi_iu8vec8(B0, B2);\A3 = mrph_asm_mshfhi_iu8vec8(B1, B3);\A4 = mrph_asm_mshflo_iu8vec8(B4, B6);\A5 = mrph_asm_mshflo_iu8vec8(B5, B7);\thread. La zone <strong>de</strong> mémoire où sont stockées les donnéesest distincte à l’entrée et à <strong>la</strong> sortie. Nous consta-A6 = mrph_asm_mshfhi_iu8vec8(B4, B6);\A7 = mrph_asm_mshfhi_iu8vec8(B5, B7);\\B0 = mrph_asm_mshflo_iu8vec8(A0, A1);\tons un gain <strong>de</strong> temps déjà entre l’implémentation génériquequi consiste en l’utilisation <strong>de</strong>s fonctions d’ac-B1 = mrph_asm_mshfhi_iu8vec8(A0, A1);\B2 = mrph_asm_mshflo_iu8vec8(A2, A3);\B3 = mrph_asm_mshfhi_iu8vec8(A2, A3);\B4 = mrph_asm_mshflo_iu8vec8(A4, A5);\cès au pixel et une implémentation qui utilise le travai<strong>la</strong>vec les pointeurs. Mais le gain que nous obtenonsB5 = mrph_asm_mshfhi_iu8vec8(A4, A5);\B6 = mrph_asm_mshflo_iu8vec8(A6, A7);\B7 = mrph_asm_mshfhi_iu8vec8(A6, A7);\}lors <strong>de</strong> l’utilisation <strong>de</strong>s instructions MMX est plus intéressant,surtout si nous comptons utiliser <strong>la</strong> transpositioncomme une <strong>de</strong>s opérations <strong>de</strong> base dans nos algo-FIG. 6.6 : Co<strong>de</strong> <strong>de</strong> <strong>la</strong> transposition par diagonaled’un macro bloc 8 × 8 en <strong>la</strong>ngage C utilisantl’outil <strong>de</strong> développement multip<strong>la</strong>teformerithmes <strong>de</strong> <strong>morphologie</strong> <strong>mathématique</strong>.MorphoMediaCe qui peut être assez surprenant c’est <strong>la</strong> durée<strong>de</strong> l’implémentation générique et même celle via pointer++<strong>pour</strong> un tel algorithme <strong>de</strong> base sur une machine re<strong>la</strong>tivement puissante <strong>de</strong> nos jours et ca<strong>de</strong>ncée à2.4 GHz. Ainsi, nous accueillons avec p<strong>la</strong>isir <strong>la</strong> possibilité d’obtenir, sans aucun investissement dans lematériel existant, un algorithme plus rapi<strong>de</strong>.La figure 6.9 nous montre les représentations graphiques <strong>de</strong>s tests <strong>de</strong> performance que nous avonseffectué <strong>pour</strong> l’algorithme <strong>de</strong> <strong>la</strong> transposition par diagonale et plusieurs tailles d’images. À l’échellelogarithmique, nous verrons bien que <strong>la</strong> différence entre les implémentations non-SIMD (générique etvia pointer++) où nous avons <strong>la</strong>issé toutes les optimisations au compi<strong>la</strong>teur, et celles qui implémententnotre algorithme SIMD est importante <strong>pour</strong> toutes les tailles d’images. Avec grands taux d’accélérationss’élevant jusqu’à 33.8 <strong>pour</strong> les images <strong>de</strong> 1024 × 1024 <strong>de</strong> 8 bits si on compare l’implémentation SIMDutilisant <strong>la</strong> technologie Intel SSE2 et l’implémentation c<strong>la</strong>ssique via pointer++ (cf. tab. 6.1).142

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

Saved successfully!

Ooh no, something went wrong!