Personal tools
You are here: Home Calcul Technique Documentation IBM cluster p575 (Power5) Parallélisme par échanges de messages
Document Actions

Parallélisme par échanges de messages

Principe de ce parallélisme et implémentation avec MPI


Introduction au parallélisme par échanges de messages

Dans un modèle de parallélisme par échanges de messages chaque processus exécute éventuellement des parties différentes d'un programme (écrit dans un langage classique comme le Fortran ou le C). Comme ce modèle de programmation parallèle est explicite, la gestion des communications et des synchronisations est donc entièrement à la charge du développeur.
Ce modèle concerne les applications possédant plusieurs traitements indépendants.
Le parallélisme découle de la réalisation simultanée de différents traitements sur les données.

Les variables sont alors privées et résident dans la mémoire locale de chaque processus. Une donnée ne peut être échangée entre deux ou plusieurs processus qu'au travers d'appels à des sous-programmes spécialisés constituant une bibliothèque de routines d'échanges de messages.  PVM (Parallel Virtual Machine) et MPI (Message Passing Interface) sont des bibliothèques standards, dont les applications sont portables sur les machines parallèles actuelles. Il faut noter que PVM s'applique aussi aux réseaux de machines hétérogènes ce qui n'est pas le cas de MPI-1. Enfin, avec l'arrivée de la norme MPI-2 les fonctionnalités de la bibliothèque MPI sont proches de celles de PVM tout en étant plus stables. Par conséquent il est préférable de développer plutot avec MPI qu'avec PVM.

Un message est constitué de paquets de données transitant du processus émetteur au(x) processus récepteur(s). Il comporte les informations suivantes :

  • les données,
  • le type des données,
  • sa longueur,
  • l'identificateur du processus émetteur,
  • l'identificateur du processus récepteur.
Les sous-programmes de la bibliothèque interprètent et gèrent ces messages. C'est le cas de MPI et PVM qui fournissent un environnement de communication. SHMEM (ou SMA) diffère des précédentes dans l'implantation (copie de mémoire à mémoire plutôt qu'échanges de messages), mais l'idée de base est la même. On peut distinguer plusieurs ensembles de sous-programmes dans ces bibliothèques, selon leurs tâches :
  • gestion de l'environnement,
  • communications point à point,
  • communications collectives,
  • gestions des groupes de processus.
Les avantages et les inconvénients de l'échange de données
  • Avantages :
    • Parallélisation à gros grain
    • Exploitation explicite de la localité des données
    • Portabilité de l'application PVM et MPI (SHMEM non supporté par toutes les architectures)
  • Inconvénients :
    • Coût du développement (application tout ou rien)
    • Programme difficile à lire (partition et distribution de l'application)

Ces bibliothèques sont employées pour faire ce que l'on appelle du calcul massivement parallèle (MPP : Massively Parallel Processing). Deux types d'implantation existent : le SPMD (Single Program Multiple Data) et le MPMD (Multiple Program Multiple Data).
SPMD signifie que tous les processus exécutent le même code mais sur des données différentes (plutot MPI) alors que le MPMD est généralement réalisé à l'aide de PVM qui permet une gestion dynamique des processus (à venir aussi dans la version 2.0 de MPI).
Dans tous les cas, la phase importante est le traitement des communications. Prenons l'exemple d'un domaine ou s'écoule un fluide, ou bien se déplacent des particules. Pour calculer la solution approchée en un point (ou dans une cellule) on n'a besoin que des points (ou des cellules) "voisines" (variable, selon la précision des schémas numériques).
Pour cela on utilise la technique de décomposition de domaine comme le montre la figure à droite ci-dessus : le domaine initial est partagé en neuf sous-domaines (pour simplifier on se place dans un maillage structuré avec une dépendance nord, sud, est, ouest). Pour les points ou cellules à "l'intérieur" d'un sous-domaine, pas de différence avec le cas mono-domaine. Seuls les points ou cellules sur une des interfaces avec un autre sous-domaine ne disposent pas de toutes les informations nécessaires pour faire les calculs et ont besoin de valeurs que possède ce sous-domaine voisin. Il y a alors communication point à point, i.e. entre un sous-domaine expéditeur et un sous-domaine destinataire bien identifiés. A chaque itération en temps, certaines quantités nécessitent un calcul qui fait intervenir l'ensemble des noeuds ou des cellules du domaine : par exemple, évaluer le pas de temps dt à partir d'une condition de stabilité. Cela se fait alors à l'aide d'une communication collective (tous les sous-domaines envoient à un seul leur valeur locale pour dt), le destinataire détermine la valeur maximale acceptable (opération de réduction) puis la diffuse à tous les sous-domaines (opération de diffusion). Les implantations de ces types de communication sont détaillées pour MPI et PVM.


flechehaut

La bibliothèque MPI

MPI (Message Passing Interface) est une bibliothèque d'échanges de messages pour machines parallèles homogènes. Une application MPI est un ensemble de processus exécutant chacun son propre code (modèle SPMD) et communiquant via des appels à des sous-programmes de la bibliothèque MPI. Le forum MPI est le site dédié à MPI, de même que ce lien vers Argonne ou encore le site netlib . Une aide pratique est le manuel décrivant ses fonctions et leur mise en oeuvre. De plus toutes les fonctions possèdent leur propre manpage. Le modèle d'exécution d'une application MPI est le SPMD (Single Program Multiple Data), soit l'exécution du même programme pour tous les processus.

Lien vers la page MPI.


flechehaut

La bibliothèque PVM

PVM (Parallel Virtual Machine) a pour but de faciliter l'écriture d'applications parallèles sur un réseau de stations de travail hétérogènes (modèle MPMD : Multiple Program Multiple Data). L'utilisateur définit un ensemble de machines qui sera vu comme une seule grande machine multiprocesseur à mémoiredistribuée. Le terme machine parallèle fait référence à cette machine multiprocesseurs alors que le terme hôte se réfère à l'une des machines membres de l'ensemble. Cette approche permet le regroupement d'hôtes ayant des caractéristiques différentes (machine vectorielle, station graphique, station de travail, cluster, robot de stockage, etc ...). Les communications entre les hôtes se font avec PVM qui prend en charge les conversions de formats nécessaires entre deux machines n'ayant pas les mêmes représentations internes des données. PVM est également conçue pour pouvoir fonctionner avec différents types de réseaux.
Le site netlib est un site où l'on peut récupérer la distribution PVM ainsi qu'un manuel on-line (décrivant les fonctions PVM) ou sa version  postscript , de même ce lien est la home page de PVM développée par Oak Ridge National Laboratory (ORNL). De plus, toutes les fonctions PVM possèdent leur propre manpage.

Lien vers la page PVM.


flechehaut

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: