Programmation parallèle des algorithmes adaptatifs et contrôle du grain
- Niveau : Master recherche
- Contacts :
- Vincent Danjean, MdC UJF, vincent.danjean@imag.fr
- Thierry Gautier, CR INRIA, thierry.gautier@inrialpes.fr
- Jean-Louis Roch, MdC INP, jean-louis.roch@imag.fr
- Mots-clés : programmation parallèle, algorithme adaptatif, contrôle du grain
- Durée : 4 à 6 mois
Description du sujet
La programmation des architectures multi-cœurs est complexe. D'une part le programmeur doit connaitre finement l'architecture afin d'exploiter la performance du matériel. D'autre part, le programmeur doit prendre des décisions importantes concernant le "grain" du calcul parallèle qui ne permettent pas forcément d'assurer la portabilité d'une solution sur différentes architectures. Typiquement, un grain de calcul trop petit peu ne pas être suffisant pour exploiter efficacement les capacités de calcul matériel ; inversement, un grain trop important réduit le parallélisme exploitable.
Dans ce contexte, le projet MOAIS a développé une manière originale de programmer les applications parallèles en leur permettant de décrire la manière d'extraire le parallélisme en fonction de l'inactivité des ressources. Cette approche a été validée de manière ad hoc sur l'ensemble des algorithmes de la STL.
Objectif du stage
Le stage consistera à étendre les travaux du projet MOAIS sur les deux directions suivantes :- étudier les possibilités de programmer ces algorithmes adaptatifs par annotation d'un code séquentiel (approche à la OpenMP par pragma) et de proposer un ensemble de directives associés.
- proposer et valider un contrôle automatique du surcoût afin de garantir un surcoût faible indépendamment de l'algorithme et pour des temps total de traitement pouvant être faible (de quelque µs à quelques ms).
Les résultats obtenus auront pour objectif à être intégré dans la chaine de compilation développé par MOAIS pour programmer des algorithmes parallèles.
Résultats attendus
Une étude bibliographique. Réalisation d'un prototype et son évaluation sur différentes machines multi-cœurs. Des preuves théoriques de garantie de contrôle du surcoût et une mesure de la pertinence des preuves par l'expérimentation.Compétences
Très bonne connaissance de la programmation C ou C++. Connaissances en algorithmique parallèle et programmation parallèle. Connaissances des structures de données concurrentes appréciées mais non requises. Connaissances en compilation appréciées mais non requises.