ConcluW6

publicité
Notre travail visait à explorer les limites de l'expressivité de la programmation parallèle
fonctionnelle c’est à dire distincte à la fois de la programmation concurrente (par sa sémantique
déterministe) et de la programmation parallèle impérative (par sa sémantique compositionnelle et
ses fonctions d'ordre supérieur). Nous l'avons mené selon deux approches.
L'approche dénotationnelle nous a permis d'obtenir CDS*, un schéma pour des langages
fonctionnels dont les types monomorphes concrets sont explicitement distribués, incluent les types
d'ordre supérieur, les types sommes et les types définis récursivement. Les programmes peuvent y
être aussi grands que le réseau, et peuvent observer les événements de communication d'autres
programmes. Une telle flexibilité n'est pas présente dans les langages apparentés où des restrictions
sont posées par exemple sur les fonctions d'ordre supérieur ou la taille des structures de données.
Les problèmes ouverts à résoudre avant de parvenir à un langage utilisable pratiquement sont :
la définition d'une syntaxe pratique et suffisamment expressive pour la déclaration des états,
la conception d'un système de types concrets distribués polymorphe,
la gestion de la mémoire.
L'approche opérationnelle nous a conduit à définir des extensions du -calcul par des
opérations BSP. Nous avons obtenu le calcul BS et le calcul BS qui peuvent être la base de
langages BSP purement fonctionnels d'ordre supérieur. Nous avons également montré que ce cadre
est propice aux preuves de correction partielle de programmes.
La stratégie faible d'appel par valeur que nous avons défini met en évidence la structure
parallèle des réductions. Cependant ces réductions sont trop synchrones : l'évaluation de certaines
opérations qui ne nécessitent jamais de communications est synchrone. Nous avons toutefois défini
une évaluation distribuée (correcte par rapport à la stratégie faible d'appel par valeur) sur des
vecteurs distribués de termes dans laquelle seules les opérations de communication et les
conditionnelles globales (qui nécessitent la diffusion d'une valeur sur tout le réseau) sont évaluées
de façon synchrone. La structure parallèle des réductions suit parfaitement la structure d'exécution
parallèle du modèle BSP. Nos expériences ont confirmé que nos opérations sont assez expressives
et que la prévision des temps parallèles est possible.
Par rapport aux langages à patrons :
nous donnons une sémantique opérationnelle parallèle à nos opérations qui suit parfaitement le
modèle d'exécution choisi alors que les langages à patrons ne donnent qu'une sémantique
dénotationnelle,
nos calculs sont universels dans le cadre BSP alors que l'expressivité des langages à patrons est
généralement restreinte.
Le modèle présenté constitue une base solide pour la conception d'un environnement de
programmation complet comprenant par exemple :
un langage parallèle fonctionnel polymorphe fortement typé. Les travaux à mener pour y arriver
comprennent entre autre :
a) la conception d'une machine abstraite répartie. Il semble assez raisonnable de penser
que l'on peut définir une machine abstraite qui serait composée de $p$ SECD
machines communiquant selon le modèle BSP et correcte par rapport à l'évaluation
distribuée. Pour définir et surtout prouver la correction de machines abstraites basées
sur des machines abstraites séquentielles comme la CAM ou la ZAM il devrait être
nécessaire de définir des BS calculs avec substitutions explicites. L'exemple de
DMPL et Caml-Flight (Renvoi à PHDfoisy) pourrait être utile ici.
b) la conception d'un système de typage polymorphe respectant la séparation en termes
locaux et globaux.
c) l'étude de l'interaction avec les traits impératifs dont l'étude de la composition
parallèle à la BS dans une stragégie fixe.
des outils d'analyse de programmes en vue de la prévision de performances. En effet la
correction de l'évaluation distribuée (vue microscopique) par rapport à la stratégie faible d'appel
par valeur de BS (vue macroscopique) et les correspondances existant entre les réductions de
chacune vont permettre de définir un modèle de coûts pour la vue macroscopique qui sera
vérifiée par l'exécution répartie de la vue microscopique.
des outils d'aide à la preuve de correction de programmes tirant partie du sous-ensemble
fonctionnel pur du langage.
des outils pour la dérivation de programmes guidée par les coûts : en effet BS est une théorie
équationnelle et le modèle de coûts peut permettre de choisir le meilleur de deux programmes
équivalents
comme
ce
qui
est
fait
par
exemple
dans
(Renvoi
à
Mallet1998B,Mallet:1998:SCA) (pour le niveau L4).
Enfin, des croisements fertiles pourraient être réalisés avec SCL-Chan (Renvoi à
ME.RA.RE.VI.97.6). Son modèle d'exécution est plus général que le nôtre (maximalement
asynchrone) mais les fonctions (d'ordre supérieur) sont absentes. Les deux approches sont basées
sur la syntaxe et proposent une vue synthétique du calcul parallèle : macroscopique et
microscopique. Les deux approches proposent des modèles de coûts d'exécution vérifiables à
l'intérieur même de leurs formalismes. Cette comparaison suggère deux pistes de recherche :
une version de l'évalution distribuée basée sur un modèle d'exécution minimalement
synchronisé. La version plate ne nécessiterait certainement qu'un mécanisme semblable à celui
des vagues de Caml-Flight, par contre une version comprenant une composition parallèle, telle
que nous l'avons présentée, nécessiterait certainement un mécanisme proche de celui des
horloges structurelles.
une extension de SCL-Chan avec des fonctions d'ordre supérieur.
Téléchargement