Note publique d'information : 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