thesis/src/alsk/0_intro.tex

31 lines
2.2 KiB
TeX

\section{Introduction}
La parallélisation automatique permet au développeur de ne pas se préoccuper du tout de la
problématique de parallélisation au sein de son programme.
En contrepartie, il perd une partie du contrôle dont il pourrait disposer sur sa parallélisation.
Ce chapitre traite d'une solution de parallélisation assistée utilisant le concept de squelettes
algorithmiques~\autocite{ref:cole1989}.
L'objectif principal est de proposer une bibliothèque
active\footnote{\url{https://phd.pereda.fr/dev/alsk}} permettant à un développeur de décrire ses
algorithmes en spécifiant lui-même quelles parties peuvent être exécutées en parallèles, et de
quelle manière elles doivent l'être en assemblant un ensemble de motifs d'exécution fournis.
Ce chapitre présente d'abord la recherche existante autour des squelettes algorithmiques puis
introduit un ensemble d'outils classiques de \gls{RO} ainsi qu'un problème de \gls{RO}.
Ceux-ci sont utilisés comme application aux travaux présentés dans ce chapitre car ils ont des
propriétés intéressantes pour mettre en évidence des problématiques liées à la parallélisation et
donc les solutions proposées, notamment pour le problème de la répétabilité.
Ce chapitre se poursuit avec la présentation de notre conception des squelettes algorithmiques, en
détaillant en particulier leur structure et la possibilité de décrire les transmissions de données
entre les différentes parties de l'algorithmique représenté.
Ensuite, le chapitre explique comment se fait la répartition des tâches de l'algorithme afin de le
rendre parallèle et expose différentes stratégies pour ce faire.
Après cela, nous abordons le problème de la répétabilité, notamment pour le cas de l'utilisation de
nombres pseudo-aléatoires, et des méthodes pour optimiser la procédure initiale en tenant compte de
la stratégie de répartition des tâches adoptée et du degré de parallélisation.
Ce chapitre introduit ensuite un \gls{EDSL} servant d'interface pour simplifier l'utilisation de la
bibliothèque.
Enfin, il se termine sur une étude des performances obtenues en utilisant la bibliothèque en la
confrontant à des codes écrits sans l'utiliser.