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.

Jaromír BRAMBOR8.3. RÉSULTATS EXPÉRIMENTAUXmatique. Dans ce cas, nous allons faire appel à <strong>la</strong> transposition <strong>de</strong>s images entières. Remarquons quenous <strong>pour</strong>rions construire également <strong>de</strong>s algorithmes qui exploiteraient l’approche <strong>de</strong>s macro blocs et <strong>la</strong>transposition directe, mais nous soulignons que leur construction, même possible, n’est pas triviale.C’est à cette p<strong>la</strong>ce que nous allons expliquer <strong>pour</strong>quoi nous avons choisi l’axe "Fst" <strong>pour</strong> <strong>la</strong> construction<strong>de</strong> l’algorithme 8.2, défini par <strong>la</strong> fonction algoHGWFst. Supposant que les données sont stockéesdans <strong>la</strong> direction <strong>de</strong> <strong>la</strong> <strong>de</strong>uxième coordonnée, ce sont les segments suivant <strong>la</strong> direction "Fst" <strong>pour</strong> lesquelsnous pouvons construire l’algorithme SIMD d’une manière simple, comme présenté par l’algorithme 8.3(défini par <strong>la</strong> fonction algoHGWFstSIMD).Algorithme 8.3 : algoHGWFstSIMD, Algorithme SIMD <strong>de</strong> van Herk-Gil-Werman <strong>pour</strong> les segmentssuivant <strong>la</strong> direction <strong>de</strong> <strong>la</strong> première coordonnée (Fst) et en supposant que l’axe <strong>de</strong> stockage<strong>de</strong>s données dans <strong>la</strong> mémoire est "Snd"1 algoHGWFstSIMD :: I → I → Bro<strong>de</strong>rFnc → (α → α → α) → Ar ( I , I ) α → Ar ( I , I ) α2 algoHGWFstSIMD n k brdfnc f ar =3 mkAr2DFromAr2DPVecBySnd4 ◦ (algoHGWFst k brdfnc f )5 ◦ (mkAr2DPVecBySnd n)6 $ arLa construction <strong>de</strong> l’algorithme 8.4 (défini par <strong>la</strong> fonction algoHGWSndSIMD) exploitant les capacitésSIMD <strong>pour</strong> les segments suivant <strong>la</strong> direction parallèle à l’axe <strong>de</strong> stockage <strong>de</strong> données est enrichiepar <strong>la</strong> transposition par diagonale, exécutée par <strong>la</strong> fonction trRot2DMBSIMD, qui assure le changementdu sens <strong>de</strong> stockage <strong>de</strong>s données. Ce<strong>la</strong> à <strong>de</strong>ux reprises, avant et après l’exécution <strong>de</strong> l’algorithmealgoHGWFstSIMD.Algorithme 8.4 : algoHGWSndSIMD, Algorithme SIMD <strong>de</strong> van Herk-Gil-Werman <strong>pour</strong> les segmentssuivant <strong>la</strong> direction <strong>de</strong> <strong>la</strong> <strong>de</strong>uxième coordonnée (Snd) et en supposant que l’axe <strong>de</strong> stockage<strong>de</strong>s données dans <strong>la</strong> mémoire est "Snd"1 algoHGWSndSIMD :: I → I → I → Bro<strong>de</strong>rFnc → (α → α → α) → Ar ( I , I ) α → Ar ( I , I ) α2 algoHGWSndSIMD mbsize n k brdfnc f ar =3 (trRot2DMBSIMD "TD" "Snd"mbsize )4 ◦ (algoHGWFstSIMD n k brdfnc f )5 ◦ (trRot2DMBSIMD "TD" "Snd"mbsize )6 $ ar8.3 Résultats expérimentauxNous avons implémenté <strong>la</strong> version SIMD <strong>de</strong> l’algorithme <strong>de</strong> van Herk-Gil-Werman à l’ai<strong>de</strong> <strong>de</strong>stemp<strong>la</strong>tes du <strong>la</strong>ngage C++, fournis avec le compi<strong>la</strong>teur Intel ICL que nous avons utilisé <strong>pour</strong> cette implémentation.Pour pouvoir illustrer ses performances sur une architecture grand public, nous avonseffectué d’autres tests qui ont une valeur informative car leurs temps d’exécution sont <strong>de</strong> loin moindres.La table 8.1 mentionne les résultats en chiffres. L’implémentation SIMD y est mentionnée en tant queC++ temp<strong>la</strong>te SSE2.Nous avons testé l’implémentation itérative, cf. <strong>la</strong> section 8.1, page 166, qui utilise à l’interne, commel’algorithme <strong>de</strong> base <strong>pour</strong> les itérations, une implémentation optimisée manuellement au niveau d’instructionsd’assembleur <strong>pour</strong> l’architecture Intel IA-32 qui exploitait l’exécution SIMD à l’échelle <strong>de</strong>sregistres 32 bits.173

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

Saved successfully!

Ooh no, something went wrong!