Propositions de stages 2011-2012

Y. Sorel
INRIA Rocquencourt -- 78153 Le Chesnay Cedex
Tel. : 01 39 63 52 60, Email : yves.sorel@inria.fr, Web : http://www.syndex.org

Introduction
Les différents sujets de stages proposés auront lieu à l'INRIA Roquencourt dans l'équipe projet AOSTE (Analyse et Optimisation des Systèmes Temps réel Embarqués) dans le cadre du développement de la méthodologie AAA (Adéquation Algorithme Architecture) et du logiciel distribué gratuitement SynDEx d'aide à la conception et la réalisation de systèmes temps-réel embarqués complexes pour des algorithmes de contrôle-commande comprenant du traitement du signal et d'image s'exécutant sur des machines multicomposant (réseau de processeurs et ce circuits intégrés spécialisés).
Brièvement, SynDEx V7 est constitué :
- d'une interface graphique interactive pour saisir les graphes représentant les algorithmes (hypergraphe orienté de dépendances de données factorisé : sommet = opération de calcul, arc = dépendance de données) et les calculateurs multicomposant (graphe orienté : sommet = machine séquentielle de calcul ou de communication, arc = connexion entre machines séquentielles),
- d'heuristiques d'optimisation pour la distribution et l'ordonnancement des algorithmes sur les calculateurs (implantation optimisée),
- d'un générateur de macro-code permettant de générer des exécutifs distribués temps-réel pour l'exécution des algorithmes sur les calculateurs.

Voici les sujets de stage proposés. Ils comportent tous une partie théorique qui peut être suivie d'une partie algorithmique et éventuellement, en fonction de l'état d'avancement, d'une partie développement logiciel.

Les stages déjà attribués sont précédés d'un *.

  • Passerelle Lustre/SynDEx
    Il existe plusieurs passerelles permettant d'interfacer SynDEx avec un langage orienté métier (DSL Domain Specific Language) tel que Scilab/Scicos, Signal/Polychrony, UML/MARTE. Il s'agit d'étudier et développer une passerelle entre le langage synchrone Lustre et SynDEx. Lustre est un langage flot de données fonctionnel permettant de spécifier des applications temps réel, de vérifier des propriétés temporelles logiques, et de simuler ces applications sur une architecture monoprocesseur. Lustre est vendu sous la version commerciale Scade par Esterel-Technologies et est très utilisé dans l'industrie de l'embarqué en particulier dans l'avionique (Airbus A3X0). Une passerelle avec SynDEx permettra de respecter des contraintes temps réel et de générer du code temps réel embarqué sur des architectures multiprocesseur en garantissant les propriétés temporelles montrées avec Lustre.

  • *Distribution et ordonnancement temps réel périodique préemptif multiprocesseur
    Actuellement SynDEx offre une heuristique de distribution et d'ordonnancement temps réel périodique multiprocesseur en n'utilisant pas la préemption. Après avoir fait une analyse d'ordonnançabilité temps réel sur l'ensemble des opérations caractérisées temporellement (tâches temps réel), l'heuristique minimise le temps d'exécution total de l'application en tenant compte des coûts de communications inter-processeur. Il s'agit d'étudier et implanter une heuristique de ce type en utilisant la préemption. On choisira une approche d'ordonnancement multiprocesseur ``partitionnée'' plutôt que ``globale'' pour laquelle le coût de migration des opérations est trop important sur les processeurs actuels.

  • Optimisations pour les algorithmes réguliers
    Le formalisme de graphe utilisé pour spécifier les algorithmes permet de modéliser des algorithmes irréguliers contenant des parties régulières vues comme des sous-graphes factorisés (répétition d'un motif de graphe correspondant à du parallélisme potentiel de données). Il s'agit tout d'abord de comparer ce modèle à d'autres modèles plus classiques utilisés dans la littérature (réseau de processus de Kahn, flot de données classique, SDF synchronous data flow, etc). Il s'agit ensuite d'étudier les optimisations consistant à exploiter ces répétitions en espace ou en temps, en fonction des contraintes temps réel et/ou de la mémoire programme et donnée disponible. Cela se fera en minimisant les communications inter-processeur qui peuvent devenir très pénalisantes lorsqu'elles sont nombreuses. On étudiera tout d'abord des heuristiques gloutonnes afin d'être compatible en terme de temps d'exécution avec les heuristiques déjà existantes dans SynDEx. Il s'agit ensuite d'étendre en conséquence l'heuristique et le générateur d'exécutifs actuels.

  • Optimisation de la taille mémoire de données et de programme
    Actuellement le code généré (exécutifs distribués temps réel taillé sur mesure pour l'application) utilise de manière simpliste le modèle à assignation unique de la spécification flot de donnée de l'algorithme. Cela conduit d'une part à ne pas réutiliser une mémoire de donnée lorsque celle-ci a été précédemment utilisée et d'autre part à ne pas partager une mémoire de donnée lorsque celle-ci pourrait être utilisée en entrée et en sortie d'une opération (traitement d'une image dans laquelle seuls quelques pixels sont modifiés). Par ailleurs l'imbrication de conditionnements conduit à des duplications de If...Then...Else dans le code généré. De même la répétition d'opérations conduit à une duplication d'appels à cette opération qui pourait être remplacée par une boucle For I...Do... dans le code généré. Il s'agit d'optimiser la mémoire de données et de programme par analyse du code généré automatiquement par SynDEx, et éventuellement d'étudier si cela est faisable directement au niveau du générateur de code.

  • *Formalisation et évaluation du coût d'un ordonnanceur temps réel
    Lorsqu'on effectue des analyses d'ordonnançabilité temps réel on fait généralement l'hypothèse que le coût de l'ordonnanceur est approximé dans le WCET (pire temps d'exécution) des tâches à ordonnancer, ce qui conduit nécessairement à du gaspillage de ressources et/ou, ce qui est pire, à des comportements incorrects lors de l'exécution en temps réel. Il s'agit de réaliser une étude expérimentale de l'ordonnanceur pour quelques politiques d'ordonnancement telles que RM, EDF, et pour quelques ordonnanceurs comme celui de l'OS Linux/RTAI, RTX, etc., afin de formaliser le coût de l'ordonnanceur pour l'introduire dans les conditions d'ordonnançabilité. Il s'agit d'implanter un prototype d'ordonnanceur dont on pourra évaluer de façon précise le coût.

  • *Développement d'un train virtuel de CyCabs
    Il s'agit de participer au développement d'un train virtuel de CyCabs fondé sur un asservissement d'un CyCab automatique suiveur sur un CyCab conduit manuellement à l'aide d'un système de vision à faible coût utilisant une ou plusieurs webcams. Les algorithmes de traitement d'image permettant de faire la reconnaissance de CyCab et l'algorithme de contrôle commande effectuant l'asservissement sont spécifiés et simulés avec Scilab/Scicos, puis la passerelle Scilab/Scicos/SynDEx est utilisée pour les implanter sur l'architecture distribuée du CyCab composée de plusieurs microcontroleurs MPC555 et/ou PIC d'un PC embarqué sous Linux/RTAI communicant tous via un bus CAN. On commencera par porter la version actuelle sur Linux/Xenomai. On étudiera la possibilité d'améliorer les algorithmes de reconnaissance et de suivi de CyCab et l'intérêt d'utiliser une seconde caméra. On étudiera ensuite les différents modes de coopération (synchrone, asynchrone) entre des algorithmes de commande bas niveau des moteurs et des algorithmes de commande de plus haut niveau réalisant les asservissements simples comme dans le suivi ou plus complexes dans le cas de plannification. Cette étude sera faite relativement à au niveau de sûreté de fonctionnement visée. Cela conduira à développer dans SynDEx un nouveau type d'arc dit "asynchrone". On étudiera, avec des techniques de préemptions calculées, la possibilité d'ordonnancer des opérations ayant à la fois une grande durées et une grande période avec des opérations ayant à la fois une petites durée et une petite période.

    Les sujets sont de niveaux de difficulté différents. Ils sont parfois complémentaires. Certains sujets pourront être regroupés en fonction de la durée des stages.