Previous Contents Next
Chapter 2 Contexte de la thèse
Les applications informatiques sont de plus en plus nombreuses. Des réalisations qui étaient jusque là impensables à cause de la puissance de calcul et de la place disque nécessaires commencent à être envisagées. Ces applications concernent la prévision météo sur quelques jours, les études climatiques sur quelques millénaires, la reconnaissance de l'écriture et de la parole, la synthèse d'image en temps réel (en particulier les simulateurs de vol pour la formation des pilotes) et plus généralement toutes les simulations numériques. L'informatique est la victime de son succès ; les ordinateurs sont condamnés à être toujours plus puissants. Pour augmenter la vitesse de ces machines, une solution est d'améliorer les unités centrales. Les technologies de fonte des circuits se sont succédées en tentant de réduire le pas de masque des circuits et en dopant le silicium pour accélérer les temps de commutation des portes. Les fréquences des processeurs ont donc été augmentées pour atteindre, par exemple, les 200 Mhz du processeur Alpha (le DEC 21064AA) de chez Digital. Il est remarquable que cette diminution de la période d'horloge n'est pas uniquement limitée aux processeurs de haut de gamme puisque les Pentium d'Intel tournent à près de 100 Mhz. Mais cette course à la fréquence a des limites d'autant plus que les temps d'accès aux mémoires ne suivent pas. Même en rajoutant une hiérarchie de mémoires, il n'est pas possible d'atteindre la puissance de crête des processeurs les plus récents. Comme la compression du temps bute sur ces limites, une autre idée est apparue : s'étendre sur l'espace. Le principe est simple : si une machine comporte plusieurs processeurs (mettons p processeurs) alors elle doit pouvoir répartir son travail sur ces processeurs pour réduire le temps d'exécution jusqu'à p fois. La réalité est plus sombre. Si des applications très particulières (comme le calcul de l'ensemble de Mandelbrot) se parallélisent très bien, ce n'est pas le cas général. Plusieurs raisons peuvent expliquer ces performances décevantes. L'algorithme utilisé peut ne pas contenir de parallélisme ou le programmeur et le compilateur n'ont pas su mettre en relief ce parallélisme. Il est aussi possible que les temps des communications entre les processeurs occultent le gain dû au parallélisme. En effet les échanges de données s'effectuent par passage de messages sur un réseau de communication ou par l'intermédiaire d'une mémoire globale (d'ailleurs souvent implantée par passage de messages). En conséquence les communications sont lentes ; c'est le talon d'Achille des machines parallèles.

Le lecteur aura compris que l'adaptation d'un programme à une machine parallèle (i.e. possédant plusieurs processeurs à usage général) n'est pas une sinécure ; il faut tenir compte de nombreux paramètres. C'est alors qu'est apparue l'idée de la parallélisation automatique : puisqu'il s'agit d'une tâche complexe, laissons une machine s'en charger. De nombreuses équipes de recherche travaillent actuellement dans le domaine de la parallélisation automatique. Différentes méthodes pour la parallélisation de programmes impératifs (comme Fortran) existent. Ces méthodes détectent une grande partie du parallélisme implicite d'un programme séquentiel, mais pas encore la totalité. Avec l'émergence de machines disposant d'un nombre important de processeurs, chaque parcelle de parallélisme doit être exploitée pour qu'aucun processeur ne reste inactif. Les calculs de récurrences font partie des portions de code encore mal parallélisées par les compilateurs modernes. Cette thèse donne une méthode pour détecter certaines récurrences calculables efficacement sur des machines parallèles. Elle montre aussi comment il est possible d'exploiter ces récurrences, c'est-à-dire de générer un code parallèle efficace.


Previous Contents Next