thesis

Construction d'un paralléliseur interactif de logiciels scientifiques de grande taille guide par des mesures de performances

Defense date:

Jan. 1, 1993

Edit

Institution:

Paris 6

Disciplines:

Directors:

Abstract EN:

Pas de résumé disponible.

Abstract FR:

La difficulté de penser et d'écrire un programme efficace pour une machine parallèle, ainsi que l'existence de très nombreuses bibliothèques scientifiques de logiciels séquentiels justifient le développement de paralléliseurs automatisés. Si un grand nombre de paralléliseurs automatiques de programmes scientifiques ont émergé à la suite du projet Parafrasekmc72, la plupart des travaux menés dans le domaine, ont porté sur le développement des techniques de parallélisation. La complexité des calculs réalisés par de tels paralléliseurs, que l'on nommera classiques, est telle qu'ils sont incapables de traiter un programme scientifique réel, pouvant contenir de quelques milliers à quelques centaines de milliers de lignes de code. Un paralléliseur de logiciels scientifiques de grande taille doit donc, non seulement avoir les caractéristiques des paralléliseurs classiques, mais également déterminer sur quelles parties du code source les efforts de la parallélisation doivent porter et quel type de parallélisation doit être appliquée. Le but de notre travail est la construction d'un tel paralléliseur. Dans un premier temps, nous parallélisons les fragments de code du programme source séquentiel, susceptibles de contenir du parallélisme, de concentrer du calcul et d'être parallélisables en un temps raisonnable. Cette opération est entièrement automatique, la parallélisation est menée fragment par fragment, par un paralléliseur classique. Des mesures de performances de la parallélisation réalisées sur le programme parallèle généré, identifieront les noyaux les fragments de code qui concentrent effectivement du calcul mal ou pas du tout parallélisés. Seuls ces noyaux doivent recevoir une attention particulière. Un certain nombre de transformations leur sont appliquées, soit automatiquement, soit par l'utilisateur. Ces transformations sont guidées par le diagnostic de l'inefficacité de leur parallélisation qui est établi avec l'aide de l'utilisateur. Les noyaux modifiés sont ensuite soumis à un paralléliseur plus performant ou spécialisé dans la détection de certaines formes de parallélisme, en fonction des transformations qui leur auront été appliquées. Un nouveau programme parallèle est généré, les performances de sa parallélisation mesurées le processus de parallélisation s'arrête, soit parce qu'aucun noyau n'a été mal parallélisé, soit parce qu'aucune cause de l'inefficacité de la parallélisation n'a été identifiée ; un noyau peut, en effet, être intrinsèquement séquentiel. La pratique a montré que l'on pouvait de cette façon paralléliser efficacement des programmes inaccessibles aux paralleliseurs classiques, en un temps raisonnable et avec une faible participation de l'utilisateur. Les architectures cibles visées sont les machines mimd à mémoire partagée ; l'extension aux machines à mémoire distribuée est abordée en conclusion. Notre travail a été mis en oeuvre dans cadre du projet Paf Paf90 (paralléliseur automatique pour fortran) de l'équipe du professeur P. Feautrier du laboratoire MASI