La simulation à événements discrets constitue depuis longtemps un des types d'applications les plus exigeants en matière de langages de programmation ; ce n'est sans doute pas par hasard si le paradigme objet doit une partie de sa genèse au langage Simula. Le sujet propose d'étudier les avantages et les problèmes fondamentaux posés par la programmation d'un simulateur distribué à l'aide d'un langage à objets parallèle et réflexif.
Depuis environ un an, le projet SLOOP est très fortement impliqué dans un groupe de travail européen: Europa Working Group on Parallel C++ (Esprit Reference Number 9502). Proposer et définir un standard pour la programmation parallèle en C++ constitue le but principal de ce projet européen. 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++// [1] actuellement développé par le projet SLOOP est conforme au standard proposé par Europa.
D'autre part, le projet SLOOP a également développé le système Prosit [3]: un environnement de simulation à événements discrets basé sur C++, conçu pour être étendu à des domaines d'application variés par l'adjonction de bibliothèques de classes spécifiques (files d'attente, réseaux de Petri, interaction de mobiles, etc.) et pouvant être utilisé de manière transparente en environnement séquentiel ou réparti.
Afin de valider le modèle d'exécution Prosit et de vérifier la puissance d'expression du modèle de programmation, nous avons réalisé une version séquentielle du simulateur. La version parallèle et distribuée de Prosit est actuellement en cours de conception et d'implémentation [4,5].
Le sujet de DEA proposé consiste à étudier comment le modèle de programmation parallèle à objets proposé dans C++// permet et facilite la conception et l'implémentation de Prosit.
En effet, on peut remarquer une grande similitude des concepts développés en programmation à objets parallèle et en simulation. Par exemple, la notion de requête de C++// est très proche des requêtes gérées par les objets actifs de simulation (la capacité de manipuler des requêtes comme des objets de première classe est donc cruciale), la file des requêtes en attente de service d'un objet actif n'est pas très éloignée d'un échéancier de simulation. Les concepts de C++// qui peuvent être étendus par l'utilisateur fournissent donc une base pour la construction d'un simulateur parallèle. Une modélisation des requêtes de simulation peut s'obtenir par extension de la notion de requête échangée entre objets actifs en ajoutant des paramètres spécifiques (priorité, etc.).
Cependant, un certain nombre de problèmes fondamentaux demeurent, en particulier en ce qui concerne la réflexivité: la programmation de Prosit semble nécessiter des primitives particulières qu'il sera important d'étudier attentivement.
Les recherches et propositions seront validées par une implémentation. L'étudiant s'intégrera au projet SLOOP (projet commun Inria Sophia Antipolis - Université de Nice - CNRS).
Bibliographie:
[1] D. Caromel, F. Belloncle, Y. Roudier,
``The C++// System",
in G. Wilson and P. Lu editors,
``Parallel Programming Using C++", MIT Press, 1996.
[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.
[3] P. Mussi and G. Siegel,
``The PROSIT Sequential Simulator: A
Test-bed for Object Oriented Discrete Event Simulation:
A Test-bed for Object Oriented Discrete Event Simulation'',
in European Simulation Symposium, October, pp. 297-301,
Erlangen, Germany, 1995.
[4] P. Mussi and G. Siegel,
``Extending the Prosit System to Support Distributed Simulation'',
in European Simulation Symposium, October, 1996, Genoa-Italy.
[5] F. Baude, F. Belloncle, D. Caromel,
N. Furmento, P. Mussi, Y. Roudier, G. Siegel,
``Parallel Object-Oriented Programming for Parallel Simulations''.
To appear in Information Sciences Journal, Informatics and
Computer Science, Special issue on ``Object-Oriented Programming'',
North-Holland, Elsevier Publishing Co., 1996.