Parallelisation d'un langage fonctionnel selon le modèle a flots de données / Nathalie Dussert ; sous la direction de Patrick Bellot

Date :

Editeur / Publisher : [s.l.] : [s.n.] , 1996

Format : 1 vol. (281 p.)

Type : Livre / Book

Type : Thèse / Thesis

Langue / Language : français / French

Bellot, Patrick (1968-....) (Directeur de thèse / thesis advisor)

Télécom Paris (Palaiseau ; 1977-....) (Organisme de soutenance / degree-grantor)

Résumé / Abstract : Toute la puissance du modèle à flots de données vient du fait qu'il exploite le parallélisme intrinsèque d'un programme en dispensant le programmeur de spécifier les taches exécutables en parallèle. Ce modèle de calcul est ainsi bien approprie pour étudier la parallèlisation d'un langage fonctionnel : notre étude a pour objectif de proposer et de comparer plusieurs modes de parallèlisation automatique de programmes graal, un langage fonctionnel sans variable. Nous considérons une architecture à flots de données de base qui n'intègrera pas les dernières avancées des machines dataflow ; en effet nous cherchons à mettre en évidence l'influence de la granularité des taches et du nombre d'unités de calcul sur l'exploitation du parallélisme en faisant abstraction des caractéristiques physiques de la machine sous-jacente. Notre premier mode de parallèlisation exhibe des taches de granularité fine, au niveau des primitives du langage ; il sera notre référence pour les comparaisons. Nous envisageons ensuite un mode 2 qui regroupe les primitives selon deux critères de dépendance de données. Le problème est alors de généraliser ces regroupements de fonctions à des opérations qui ne soient pas uniquement des primitives. Il semble intéressant de mettre dans une seule tache une partie du code d'une fonction si le temps de calcul de la tache reste relativement faible. Il nous faut donc pouvoir estimer la complexité asymptotique d'une fonction. Nous proposons et mettons en œuvre des heuristiques qui permettent de calculer automatiquement une complexité. Nous avons ainsi pour chaque fonction un ordre de grandeur de sa complexité en temps. Nous avons alors choisi une borne de complexité. Toute fonction de complexité inferieure a cette borne sera compilée et pourra être incluse dans une tache compilée ; tandis que les fonctions de complexité supérieure ou égale a cette borne verront leur code scinde en plusieurs taches.