Service de communications entre les tâches



MPI
(Message Passing Interface) est une bibliothèque d'échanges de messages pour machines parallèles homogènes, c’est un standard créé pour le développement d’applications parallèles portables. 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 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.


MPICH
est une implémentation de MPI développée par le MCS de l'Argonne University; elle propose donc une librairie MPI ainsi que l'environnement nécessaire pour respecter les autres exigences de la norme. Cet environnement contient un certain nombre de commandes spécifiques à MPICH (mpirun, mpicc,...) et permet par exemple de gérer l'initialisation de l'application (serveur p4serv, utilisation de ssh, rsh ou autre). Les fonctions MPI implémentées dans MPICH sont écrites au dessus d'une ADI (Abstract Device Interface). Cette ADI est une bibliothèque de macros définissant une interface avec une bibliothèque de communications appelée device. De fait, à la compilation de MPICH il est nécessaire de choisir un device.

Les deux principaux device sont ch_p4 et ch_schmem.

ch_p4 : permet une liaison inter-machines (inter-noeuds) par utilisation du protocole TCP/IP. Son utilisation pour réaliser des communications au sein d'une machine conduit à une dégradation importante des performances.

ch_shmem : permet une liaison rapide entre tâches s'exécutant sur une même machine par utilisation de la mémoire partagée pour effectuer les échanges de messages.


MPICH-G2
est une spécialisation de MPICH-G reposant principalement sur un device Globus2 obtenu par modification de Nexus et réalisée en collaboration avec les gens de Globus.


PVM
("Parallel Virtual Machine") est issu d'un projet interne de l'Oak Ridge National Laboratory (ORNL) aux USA en 1989. La première version a servi de base en 1991 à un projet plus vaste commun à trois universités des USA et soutenu par plusieurs programmes tant gouvernementaux qu'industriels. PVM est un logiciel constitué d'un ensemble de programmes et de librairies permettant d'utiliser des machines de calcul hétérogènes, insérées dans un environnement de réseaux basés sur le protocole INTERNET (IP), pour mettre en oeuvre des technologies de calcul parallèle et distribué. PVM est implanté aussi bien sur les machines monoprocesseur (dans ce cas la technique de la mémoire distribuée est utilisée) que sur des machines multiprocesseurs à architecture explicitement parallèle (dans ce cas la gestion de la mémoire partagée est possible).
Le processeur sera identifié par un nombre entier. Une table sera créée pour assurer la correspondance entre adresse de machine au sens IP et ce numéro de processeur. Ces séquences indépendantes de programme sont, dans la terminologie PVM, dénommées tâches. Chaque tâche a deux fonctions :
- réaliser les traitements prévus par la séquence de programme sur la partie des données qui lui sont affectées à ce moment là.
- assurer les communications avec le programme principal (lui-même une tâche) et éventuellement les autres tâches (échange des données initiales et des données traitées, informations de synchronisation ...).
Une tâche PVM sera, sur la machine, constituée par un process au sens UNIX. La machine virtuelle va donc fournir les moyens pour identifier chaque tâche indépendamment du système d'identification des process : un TID ("Task IDentifier") lui sera attribué ; schématiquement ce sera la concaténation du numéro du processeur et du PID du process.