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.

Jaromír BRAMBOR4.4. PRIMITIVES DU CALCUL COMME SKELETONS ALGORITHMIQUES4.4.2 Primitives du calcul parallèle4.4.2.1 Paradigme <strong>de</strong> réplication fonctionnelle, skeleton farmLe skeleton farm 1 exprime <strong>la</strong> forme <strong>la</strong> plus simple du parallélisme <strong>de</strong> données. Le calcul sur cesdonnées est perçu comme liste <strong>de</strong>s tâches. Lors <strong>de</strong> <strong>la</strong> réalisation matérielle, plusieurs processeurs sontutilisés <strong>pour</strong> l’évaluation <strong>de</strong> ces tâches.Dans notre modèle <strong>mathématique</strong>, nous procédons à l’application d’une fonction f à toutes les donnéesd’une liste d’entrée. Dans <strong>la</strong> définition du skeleton farm, nous utilisons l’application partielle,cf. 4.2.1, <strong>de</strong> <strong>la</strong> fonction map <strong>pour</strong> <strong>la</strong>quelle nous spécifions son premier argument comme <strong>la</strong> fonctionf . Ainsi, on définit une nouvelle fonction du type ([α] → [β]) qui opère sur les streams, qui prend unstream d’entrée dont les éléments sont du type α et auxquels nous appliquons <strong>la</strong> fonction f . Le streamrésultant <strong>de</strong> cette nouvelle fonction est du type β.farm :: (α → β) → ( [α] → [β])farm f = map fNotons que d’un point <strong>de</strong> vue <strong>mathématique</strong>, <strong>la</strong> définition <strong>de</strong> <strong>la</strong> fonction farm est i<strong>de</strong>ntique à celle<strong>de</strong> <strong>la</strong> fonction map. Ce que nous obtenons en définissant <strong>la</strong> fonction farm, c’est l’information syntaxiqueque nous ajoutons à <strong>la</strong> <strong>de</strong>scription <strong>de</strong> <strong>la</strong> fonctionnalité et qui nous indique expressément l’idée <strong>de</strong> <strong>la</strong>parallélisation du calcul. Cette information syntaxique est à exploiter lors <strong>de</strong> <strong>la</strong> compi<strong>la</strong>tion <strong>pour</strong> unemachine parallèle.La figure 3.9, page 44, présentée dans <strong>la</strong> section dédiée au calcul sur les streams, illustre graphiquementl’impact <strong>de</strong> cette information syntaxique sur <strong>la</strong> manière exacte d’exécuter le kernel du calcul parles architectures traitant <strong>de</strong>s données en tant que flux. Nous pouvons y percevoir <strong>la</strong> différence entre letraitement d’un stream en séquence par <strong>la</strong> fonction map (cf. fig. 3.9(a)) et le traitement en parallèle par<strong>la</strong> réplication fonctionnelle qui est exprimée par le skeleton farm (cf. fig. 3.9(b)).4.4.2.2 Paradigme Divi<strong>de</strong> and Conquer, skeleton dcLa division <strong>de</strong> traitement d’une gran<strong>de</strong> tâche en plusieurs plus petites qui sont traitées séparémentest une approche courante sur les architectures parallèles. Les résultats partiels issus <strong>de</strong> ces petites tâchessont combinés et constituent le résultat <strong>de</strong> <strong>la</strong> tâche originale. Nous parlons d’un paradigme divise etconquiers 2 (<strong>de</strong> l’ angl. divi<strong>de</strong> and conquer). Bien sûr, nous pouvons l’appliquer seulement si notre problèmeest divisible et les parties peuvent être traitées indépendamment les unes <strong>de</strong>s autres, ce qui est lecas <strong>pour</strong> <strong>la</strong> plupart <strong>de</strong>s traitements <strong>de</strong>s données perçues comme un flux.Dans une architectures matérielle qui implémente ce paradigme, nous pouvons distinguer trois types<strong>de</strong> fonctionnement <strong>de</strong>s unités exécutives. Ces unités peuvent être dédiées à leur fonction mais ellespeuvent aussi être générales et toutes les mêmes au niveau du matériel en différant dans <strong>la</strong> fonctionnalitésouhaitée qu’elles exécutent. Le premier type <strong>de</strong>s unités est dédié à <strong>la</strong> division du problème, le <strong>de</strong>uxièmeau calcul sur les données et le troisième type est dédié à l’interprétation d’un résultat global à partir <strong>de</strong>srésultats partiels. La figure 3.17, page 50, présentée dans <strong>la</strong> section consacrée au calcul stream sur lesarchitectures SWAR à plusieurs fils d’exécution, illustre bien le principe <strong>de</strong> <strong>la</strong> division d’un stream, <strong>de</strong>l’exécution distribuée sur les streams partiels et <strong>de</strong> <strong>la</strong> collecte <strong>de</strong>s résultats afin d’obtenir un seul streamrésultant.Le modèle <strong>mathématique</strong> DFH+ 93 <strong>de</strong> ce paradigme est décrit par <strong>la</strong> fonction dc. Ici, les tâches triviales(istriv) sont solutionnées (solv) directement sur le processeur hôte. Les tâches plus complexes sont divisées(dvd) en plusieurs tâches plus petites qui passent dans d’autres processeurs <strong>pour</strong> y être solutionnées1Nous n’utilisons pas <strong>la</strong> forme <strong>de</strong> ce skeleton décrite dans les articles DFH+ 93, DGTY95b <strong>de</strong> Darlington et al. car elle travailleavec un paramètre supplémentaire décrivant l’environnement. Ce paramètre ne figure pas dans notre définition mais peutêtre ajouté comme application partielle f $env <strong>de</strong> <strong>la</strong> fonction f sur l’environnement env.2L’expression française correspondant au terme ang<strong>la</strong>is divi<strong>de</strong> and conquer est diviser <strong>pour</strong> régner. Vu que notre intérêtdans le calcul <strong>mathématique</strong> n’est pas <strong>de</strong> régner mais <strong>de</strong> conquérir les résultats à partir <strong>de</strong>s unités distribuées, nouspréférons utiliser <strong>la</strong> traduction libre divise et conquiers67

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

Saved successfully!

Ooh no, something went wrong!