Conception et implémentation d'un Front-End pour C++//

Encadreurs: Denis Caromel & David Sagnol

Organisme: INRIA et I3S

Adresse: Rte des Colles, B.P. 145 F-06903 Sophia Antipolis Cedex

Téléphone : 04 92 96 51 09

Email: caromel@unice.fr, sagnol@essi.fr

Laboratoire d'accueil : INRIA Sophia Antipolis

Projet: SLOOP

Matériels et logiciels utilisés: Dec Alpha (OSF/1), GNU C/C++, Front End C++

Description et objectifs du sujet:

C++// (``C++ parallel'') [1] est un langage à objets pour la programmation parallèle et distribuée développé par le projet SLOOP (projet commun INRIA et I3S). Il est développé à partir du standard européen EUROPA décrit [2] auquel participe SLOOP.

Le but d'Europa Working Group on Parallel C++ (Esprit Reference Number 9502) et de proposer et de définir un standard pour la programmation parallèle en C++. Des résultats très encourageants ont été obtenus; une proposition préliminaire est diffusée (http://www.lpac.ac.uk/europa), et une version synthétique a été publiée dans une conférence internationale dédiée à la programmation parallèle et distribuée [2]. Le langage C++// est conforme au standard proposé par Europa. Il est constitué d'une bibliothèque C++, et d'un pré-processeur qui implémente le standard.

Pour l'implantation du langage, il a été choisi de réaliser un pré-processeur non-intrusif (qui ne modifie pas le code source du programme) : on se contente d'ajouter des classes supplémentaires pour la phase de compilation. C++// utilise également un MOP (Meta-Object Protocol) qui permet d'obtenir des informations sur des objets lors de l'exécution. Il reste à réaliser la partie avant de ce pré-processeur.

Les étudiants utiliseront le Front End C++ d'EDG (Edison Design Group): il s'agira, à l'aide de l'arbre abstrait généré par EDG, de déterminer les classes qui ont besoin de méta-classes (en utilisant en particulier un algorithme simple de fermeture transitive), ainsi que des informations sur ces classes (functions membres, etc.). Ces informations sont ensuite écrites dans des fichiers selon un format existant. Lors de la deuxième phase de la compilation qui est déjà réalisée [3], ces fichiers sont utilisés pour générer automatiquement des classes C++ (proxies, etc.). Elles sont ensuite compilées avec les classes initiales et des librairies pour donner le programme C++//.

Note: Embauche possible après le stage sur CDD d'une durée d'au moins un an.

References

1
Denis Caromel, Fabrice Belloncle and Yves Roudier, The C++// System, in G. Wilson and P. Lu editors, MIT Press, 1996, ISBN 0-262-73118-5, pp. 257-296, (also at http://www.inria.fr/sloop/c++ll).

2
Caromel D., Dzwig P., Kauffman R., Liddell H., McEwan A., Mussi P., Poole J., Rigg M., Winder R., ``EC++ - EUROPA Parallel C++ : A Draft Definition'', proceedings High-Performance Computing and Networking (HPCN'96), pp. 848-857, Brussels, Belgium, April 1996, Springer, Lectures Notes in Computer Science (LNCS), No 1067, ISBN 3-540-61142-8. (also at http://www.lpac.ac.uk/europa).

3
Francis de Fouchier, Implémentation de de divers outils pour le langage C++//, Rapport ESSI3, 1995-96.


Page maintenue par Gunther Siegel
Thu Nov 7 09:13:34 MET 1996