Projet - Un moteur d'exécution parallèle et réactif
Le but du projet est de créer une bibliothèque de programmation réactive en Rust avec un moteur d'exécution parallèle.
La première étape du projet consiste en l'implantation d'un moteur d'exécution de tâches parallèle dans un cas simplifié, celui de l'exécution d'un graphe de flot de données. La seconde étape demande d'améliorer le moteur d'exécution avec des concepts réactifs: ajout d'une notion d'instants, de signaux, et de structures de contrôle. La troisième étape demande d'écrire une interface haut niveau permettant d'utiliser la bibliothèque. Les secondes et troisième étapes demandent d'avoir commencé la partie "programmation réactive" du cours et seront mises en ligne plus tard.
Une fois les trois étapes implémentées, vous pourrez vous atteler à étendre votre bibliothèque avec les pistes données ci-dessous. Ces pistes restent volontairement vagues: c'est à vous de définir l'approche exacte et de fournir la documentation, les tests et/ou les benchmarks pour justifier de la pertinence de votre travail. Nous vous demanderons également d'implémenter un exemple d'application (voir ci-dessous).
Exemples d'application
Afin de valider votre projet, nous vous demandons d'implémenter au moins un exemple d'application. Nous vous indiquons ci-dessous quelques possibilités mais vous êtes encouragés à proposer votre propre idée. Attention, pour espérer observer un gain de performance avec la parallélisation, faites en sorte que chaque processus ait suffisamment de travail entre chaque synchronisation.
- Implémentez un simulateur de circuit digital.
- Implémentez un jeu contenant plusieurs agents évoluant dans un monde (style pacman). Si vous voulez voir des gain de calculs avec la parallélisation, arrangez-vous pour que chaque agent ait suffisamment de travail à faire entre chaque synchronisation.
- Implémentez une simulation physique impliquant plusieurs objets.
Bibliographie
En complément des notes de cours, vous pourrez lire les références suivantes sur le langage ReactiveML dont la sémantique inspire le projet:
- Constructions et concepts du langage ReactiveML
- Un explication de l'implémentation du langage ReactiveML
Les détails de la conception et de l'implémentation se trouvent dans la Thèse de Louis Mandel. Une implémentation parallèle est décrite dans le chapitre 9 de la thèse de Cédric Pasteur.
La lecture de ces documents ne devrait pas être nécessaire à la réalisation du projet.
Rendu et Soutenance
Vous pouvez faire le projet soit seul, soit en binôme. Le code commenté est à
rendre avant le 23 Décembre en envoyant un email à Basile
Clément. Votre email doit contenir vos noms
(deux pour les binômes) et une archive nommée rrs_{nom 1}_{nom 2}.tgz
.