Team PARIS

Members
Overall Objectives
Scientific Foundations
Application Domains
Software
New Results
Contracts and Grants with Industry
Other Grants and Activities
Dissemination
Bibliography
Inria / Raweb 2002
Project: PARIS

Project : paris

Section: New Results


Mémoire virtuelle partagée comme support d'exécution de OpenMP

Participants : Yvon Jégou, Christian Pérez.

La programmation des grappes de PC se distingue de celle des autres architectures parallèles (de type SMP(Symmetric Multi-Processing) ou bien cc-NUMA(Cache-Coherent Non-Uniform Memory Access)) par l'absence d'un espace d'adressage global forçant ainsi le programmeur à utiliser des exécutifs de très bas-niveau (échange de messages). Si des efforts ont été réalisés, dans le passé, pour fournir des langages de programmation de plus haut niveau (comme HPF(High-Performance Fortran) pour la programmation des grappes), il faut cependant reconnaître que leur succès a été limité. Cet échec s'explique essentiellement par le spectre très étroit des applications pour lesquelles il était possible d'obtenir une bonne performance et, aussi en partie, par la diffusion rapide des architectures SMP et cc-NUMA. Une initiative pour la standardisation de directives de parallélisation pour ce type d'architectures a donné naissance à OpenMP. OpenMP spécifie un ensemble de directives pour les langages C/C++ et Fortran qui permettent d'indiquer notamment quelles sont les boucles qui peuvent être exécutées en parallèle. OpenMP prend pour hypothèse que les variables sont stockées dans un espace d'adressage partagé.

L'exécution de programmes OpenMP sur grappe de PC pose de nombreux challenges dus à l'absence d'un espace d'adressage global. L'objectif de nos recherches est d'étudier quels sont les mécanismes nécessaires pour une exécution efficace de programmes OpenMP sur ce type de machine. Nous étudions notamment l'utilisation du concept de mémoire virtuellement partagée comme mécanisme de base à un exécutif pour un compilateur OpenMP. Ce travail est réalisé dans le cadre du projet IST POP (FET) dans lequel les chercheurs du projet sont responsables de la partie exécutif à base de mémoire virtuellement partagée.

Durant la première année du projet, une analyse des besoins a été menée. Nous avons obtenu une spécification de l'interface entre l'exécutif proprement dit et les sous-modules. Le sous-module dans lequel nous sommes impliqué, à savoir le sous-module SDSM, possède ainsi une interface qui permettra aux partenaires du projet de tester différentes stratégies d'implémentation, allant d'une solution où tout (ou presque) est partagé à une solution où tout (ou presque) est privatisé. Dans le premier cas, il s'agit de simuler au plus près une machine à mémoire partagée : même le code est chargé via la DSM. L'avantage principal attendu est de pouvoir exécuter du code binaire compilé pour SMP. La question ouverte concerne les performances qu'il est possible d'obtenir. Dans le deuxième cas, il s'agit tout au contraire d'adapter le code au maximum à l'environnement distribué dans lequel il s'exécute. Ainsi, en ayant un contrôle le plus fin possible sur les communications, les performances devraient être au rendez-vous. S'il est envisageable de pouvoir traiter les codes de calcul purs programmés en OpenMP, il existe des contraintes sur les bibliothèques qui peuvent être utilisées ainsi que sur les opérations d'entrée-sortie.

Afin de permettre aux partenaires du projet POP de tester ces différentes solutions, nous avons ajouté de nouvelles fonctionnalités à la SDSM Mome. Ainsi, les possibilités de Mome pour l'envoi et la réception de messages a été étendue. Il est maintenant possible d'envoyer et de recevoir des messages de tailles quelconques. De même, les identifiants de verrou peuvent maintenant être pris dans l'espace d'adressage du processus, ce qui permet d'en créer dynamiquement. Enfin, les piles des processus légers peuvent être en mémoire partagée. Les défauts de pages sur la pile sont correctement gérés.

Un prototype de l'exécutif d'OpenMP développé dans le projet POP basé sur la SDSM Mome a été testé. Il nous permet ainsi de valider les différents choix effectués et de mieux comprendre les problèmes restants comme le support des variables globales.


previous
next