Le langage PVM
Introduction
- PVM (Parallel Virtual Machine) est un logiciel, développé à
Oak Ridge National Laboratory, qui permet
d'utiliser un ensemble de stations de travail Unix reliées par un réseau
comme une machine parallèle. Cet ensemble de stations constitue votre machine
parallèle virtuelle. Des problèmes de calculs intensifs
peuvent ainsi etre résolus de façon plus économique en utilisant les
puissances et mémoires réunies de plusieurs stations. Ce logiciel est
portable et le code source (qui est disponible sur netlib) a été compilé
sur de nombreux environnements, de la simple station aux CRAYs.
PVM permet d'utiliser le matériel informatique existant pour résoudre
des problèmes de plus grande taille avec un coût additionnel réduit.
Des centaines de sites dans le monde utilisent PVM pour résoudre de
gros problèmes scientifiques, industriels et médicaux. PVM est aussi
largement utilisé pour l'enseignement du parallélisme. Avec ses dizaines
de milliers d'utilisateurs, PVM est devenu un standard de facto dans le
monde pour le calcul distribué .
La version actuelle est la version 3.3, la prochaine version (3.4)
offrira l'interopérabilité entre des clusters Unix et NT.
- Le succès de PVM est lié à plusieurs facteurs :
- C'est un logiciel du domaine public (gratuit)
- Il est facile à installer (il n'est pas nécessaire d'être super-utilisateur)
- Il est ``vivant'' grace à la communauté des utilisateurs (newsgroup : comp.parallel.pvm)
- Il est souple d'utilisation :
- Il tourne sur un grand nombre d'architectures de machines différentes
- Il tourne sur des réseaux locaux ou non (LAN, WAN ou combinaison des deux)
- C'est votre application qui décide où et quand les composants vont être exécutés et qui détermine les controles et les dépendances.
- Il permet de programmer dans différents langages (essentielement C et Fortran)
- Votre machine virtuelle est facile à définir et à modifier
Comment ça marche?
PVM comporte deux composants :
- Le daemon PVM (processus pvmd3)
C'est un processus Unix qui gère les opérations des processus utilisateurs d'une application PVM et coordonne les communications entre les machines.
Il y a un daemon par machine composant votre machine virtuelle. (Si il y a d'autres applications PVM pour d'autres utilisateurs, ils y aura d'autres daemons PVM)
Chaque daemon maintient une table de configuration de la machine virtuelle et des informations sur les processus de l'application.
Les processus utilisateurs communiquent entre eux par l'intermédiaire des daemons.
Chaque machine doit avoir sa version de pvmd3 correspondant à son
architecture. L'executable de pvmd3 est dans le directory $PVM_ROOT.
- Les routines bibliothèque (libpvm3.a, libfpvm3.a et libgpvm3.a)
A l'ENSMSE, ces bibliotheques sont installées dans /usr/local/PVM/pvm3/lib.
- libpvm3.a - Bibliothèque des routines d'interface pour le langage C
- Ce sont les appels de sous programmes que le programmeur
peut inclure dans son application parallèle. Ils permettent de :
- initialiser et terminer un processus
- emballer, envoyer et recevoir des messages
- synchroniser des groupes de processus à travers des
``barrières''
- obtenir et modifier dynamiquement la configuration
de la machine virtuelle
- Ces routines ne font pas de communications directes avec
les autres processus mais envoyent des commandes au daemon
local duquel ils reçoivent des informations en retour.
- Des conversions de format de données (XDR) sont effectuées
par défaut entre les machines d'architectures différentes.
- libfpvm3.a - routines additionnelles pour utiliser PVM à
partir de code Fortran.
- libgpvm3.a - routines additionnelles pour utiliser les
groupes de processus dynamiques.