Routines de manipulation de groupes de processus


     Les routines permettant la manipulation de groupes de processus constituent une couche construite au dessus de la couche PVM. Elles sont dans une bibliothèque séparée libgpvm3.a .Un serveur de groupe (pvmgs) est automatiquement activé dés le premier appel à une routine de la bibliothèque libgpvm3.a .

      Tout processus PVM peut rejoindre un groupe. Un processus peut appartenir à plusieurs groupes. Les message peuvent être diffuser dans un groupe à partir de n'importe quel processus PVM (appartenant au groupe ou non). On peut se syncroniser dans un groupe à l'aide de barrières.

Créer/joindre un groupe

       call pvmfjoingroup(group,inum)  : permet à un processus de joindre un groupe de nom group . La valeur de retour inum indique le numéro logique du processus dans le groupe, lors du premier appel à cette routine le groupe de nom group est aussi créé. Au premier processus du groupe est affecté le numéro 0, d'une manière générale la valeur de retour inum correspond au plus petit numéro disponible dans le groupe.


Quitter un groupe

        call pvmfleave(group,info)  : permet à un processus de quitter le groupe de nom group. Le numéro de processus est alors libre et disponible pour une autre affectation.


Correspondance entre tid et instance de groupe

        call pvmfgettid(group,inum,tid)  : permet d'obtenir l'identificateur de processus PVM tid d'un processus a partir de son numéro inum dans le groupe de nom group.

        call pvmfgetinst(group,tid,inum)  : permet d'obtenir le numéro inum du processus tid dans le groupe de nom group.


Nombre de processus dans un groupe

         call pvmfgsize(group,size)  : retourne le nombre de processus (size) dans le groupe de nom group.


Synchronisation entre processus d'un groupe

        call pvmfbarrier(group,count,info)  : bloque le processus appelant jusqu'à ce que count appels à pvmfbarrier aient été effectués par des processus du groupe de nom group.


Diffusion dans un groupe

            call pvmfbcast(group,msgtag,info)  : libelle le message, puis le diffuse à tous les processus du groupe de nom group.


Retour à la page d'en tête