Tutoriel #1 : SimGrid

Pendant l'heure et demi de ce tutoriel, les participants découvriront les usages de base de l'environnement SimGrid pour l'étude de systèmes distribués à large échelle au travers d'activités pratiques.

[This one hour and half tutorial will quickly introduce the SimGrid framework for the study of distributed systems through hands-on activities. All supporting material will be in English; the talk will be given in French if all participants are confortable with that language, and in English on need]

Intervenant

Martin Quinson, Université de Lorraine.

Programme

SimGrid est un ensemble d’outils open source spécifiquement conçus pour fournir les fonctionnalités de base pour l’étude par simulation d’applications distribuées dans des environnements hétérogène. L’objectif de ce projet est de faciliter la recherche sur les systèmes parallèles et distribués à large échelle tels que les grilles, les systèmes pair à pair, les plates-formes de calcul hautes performances ou les clouds. Son champ d’utilisation couvre l’évaluation d’heuristiques d’ordonnancement ou de protocoles, le dimensionnement de plates-formes, le prototypage d’applications voire le développement et la calibration d’applications réelles.

Grâce à une organisation modulaire et à une implémentation optimisée depuis plus de dix ans, SimGrid permet de concevoir des simulateurs plusieurs ordres de grandeur plus rapide que des simulateurs ad hoc tout en reposant sur des modèles de plates-formes dont la validité a été expérimentalement évaluée et démontrée. Ces modèles permettent par exemple de rendre compte de la hiérarchie des réseaux, de la localité des communications, de la dynamicité des performances, de la contention, ainsi que de caractéristiques propres aux protocoles comme TCP tout en étant extrêmement rapides.

Le projet SimGrid ne se limite pas à la mise à disposition d’un noyau de simulation et d’exécution efficace. SimGrid vient également avec tout un écosystème d’applications permettant la visualisation et l’analyse des simulations, la génération de traces, de plates-formes, … et qui sont le résultat de l’activité de la communauté d’utilisateurs et de la mise en commun de leurs compétences.

SimGrid est un outil puissant, permettant de réaliser rapidement des études relativement réalistes de systèmes distribués à très large échelle, mais il s'avère parfois un peu déroutant pour les nouveaux utilisateurs. Ce tutoriel vous permettra de passer les premiers instants de doute et de prendre l'outil en main rapidement. Il est particulièrement adapté aux (futurs) doctorants devant étudier et/ou proposer des systèmes distribués de très grande taille.

Syllabus du tutoriel

  • Introduction à l'étude des systèmes distribués à très large échelle.
  • Écrire votre premier simulateur SimGrid (en C ou Java, au choix).
  • Définir une plate-forme spécifique en SimGrid.
  • Analyse de résultats de simulation SimGrid et visualisation de traces.
  • Si le temps le permet et si les participants le souhaitent, d'autres sujets plus avancés pourront être abordés, comme la vérification formelle d'applications ou la simulation d'applications MPI.

Prérequis

Ce tutoriel ne suppose pas de prérequis particuliers en terme de connaissances (à part bien sûr des rudiments d'algorithmique distribuée pour avoir des choses à simuler avec SimGrid). Cependant, il est indispensable que les participants disposent d'un ordinateur doté d'un environnement de programmation pour profiter pleinement du tutoriel.

Si vous avez l'intention d'utiliser l'interface Java de SimGrid, il suffit d'avoir un environnement classique genre Eclipse et de télécharger le jar de SimGrid.

Si vous avez l'intention d'utiliser toutes les interfaces C de SimGrid, il vous faut installer l'environnement complet de développement. Avec une Debian ou Ubuntu récente, il suffit d'installer le paquet libsimgrid-dev depuis les serveurs officiels. Si vous utilisez un autre système d'exploitation, vous devrez probablement l'installer depuis les sources (ou venir au tutoriel avec une machine virtuelle contenant une Debian fonctionnelle). Dans tous les cas, toutes les informations nécessaires sont détaillées dans la documentation adéquate.