Sujet : Evolutions de MadMPI vers MPI3

Responsables : Alexandre Denis et Emmanuel Jeannot
Téléphones : 05.24.57.41.14
Courriels : Alexandre.Denis@inria.fr

Présentation du sujet :


NewMadeleine est une bibliothèque de communication capable de tirer profit des flux de communications parallèles issus de différents threads, en appliquant une stratégie d'optimisation à la volée sur les séquences de paquets. En s'appuyant sur la bibliothèque d'ordonnancement de tâches d'E/S PIOMan, elle est par ailleurs capable d'assurer une progression des communications en tâche de fond en exploitant les coeurs inactifs des processeurs de manière opportuniste, et de manière garantie à l'aide d'une horloge.

MadMPI est une implémentation basée sur NewMadeleine de l'interface de communication standard MPI utilisée dans le domaine du calcul haute-performance. MadMPI bénéficie de toutes les propriétés de NewMadeleine, à savoir l'application de stratégies d'optimisation sur les flux de paquets, la progression asynchrone des communications, le support des communications multi-threeadés au travers du mode MPI_THREAD_MULTIPLE. L'utilisation des ces fonctionnalités au travers de l'interface MPI est cependant maladroite et difficile à exprimer en un modèle de programmation pour l'utilisateur combinant MPI et multi-threading.

Pour exprimer ces fonctionnalités au niveau de l'API de façon plus facilement exploitable par l'utilisateur, le MPI forum, consortium chargé de l'établissement et des évolutions de l'interface MPI, a proposé les deux extensions suivantes :

L'objet de ce stage est de proposer une implémentation de l'interface endpoints et de l'interface one-sided (RMA) dans MadMPI, de façon à rendre exploitable pleinement les propriétés de progression et de multi-threading. Il s'agira en particulier de proposer une implémentation des mécanismes, des programmes de tests, de benchmark, et éventuellement l'adaptation d'un code applicatif pour en tirer profit.

Mot-clés : MPI, calcul parallèle, multi-threading


Commentaires : Ce sujet nécessite une bonne connaissance de la programmation en C et de la programmation système.


Références :