LO06

TP de programmation parallèle avec PVM


Démarrage et arrêt de PVM (générique)

1. Démarrage

Pour démarrer PVM sur une machine il faut activer le démon pvmd

Pour cela deux solutions :

Voir la man page et l'aide en ligne de pvmd pour les autres options.
Faites aussi un help en étant en mode console pour découvrir  les options.
 

2. Arrêt

Pour arréter PVM,  utilisez depuis la console PVM la commande "halt".  Dans vos codes utilisateurs, vous pouvez utiliser la fonction  pvm_halt() .  Vous pouvez aussi utiliser l'envois de signaux (commande kill) pour tuer le process pvmd, utilisez toujours un signal 'attrappable" tel que SIGTERM.
MAIS si vous  le faite ainsi, ou si le démon pvmd plante pour tout autre raison, vérifiez qu'il ne reste pas des fichiers de socket nommés  /tmp/pvmd.<uid> ou <uid> est votre "numerical user id" (voir votre variable d'environnement $UID).  SINON, si vous relancez un PVM le programme "pensera" qu'il y a un déjà un démon pvmd en fonctionnent et cela causera le redoutable message "Can't Start Pvmd".  (et la c'est mal !)
 

3. Choucroute garnie (traduction libre de "TROUBLESHOOTING")

Vous êtes  toujours dans la choucroute pour démarrer ou ajouter une nouvelle machine hôte ?

Un problème classique est causé par l'accès distant restrictif à une machine via  "rsh".  PVM utilise "rsh" pour démarrer  le démon pvmd sur une la machine distante. Si vous ne pouvez pas faire cela :

        $ rsh remote_host 'echo $PVM_ROOT'

et récuperer avec succès au retour la valeur correcte de $PVM_ROOT sur cette machine distante sans avoir besoin de taper votre password, c'est que vous avez ce type de problème.

Dans ce cas il faut modifier les permissions sur la machine distante pour permettre a "rsh" l'accès sans mot de passe.

Sur les systèmes UNIX on le fait en créant le fichier  $HOME/.rhosts sur la machine distante ce qui fournit l'accès à la machine locale.
Le format du fichier  $HOME/.rhosts sera alors le suivant :

        your_host_1  your_login_on_host_1
        your_host_2  your_login_on_host_2
        your_host_3  your_login_on_host_3
        . . .

Si vous êtes vraiment dans la choucroute essayez la FAQ de PVM sur l'URL :

 http://www.netlib.org/pvm3/book/node23.html#
 

rappels en vrac de commandes, utiles en cas de pépin  :

$PVM_ROOT/lib/pvmd  &
echo $uid
rm -i /tmp/pvmd.$uid
cat /tmp/pvmd.$uid
rm -i /tmp/pvml.$uid

ATTENTION pour Linux




4. Vos Programmes

Vos programmes C, C++ et Fortran DOIVENT être "linké" avec la librairie principale de PVM ,
$PVM_ROOT/lib/$PVM_ARCH/libpvm3.a, et les programmes Fortran DOIVENT aussi être
"liés" (défendons la langue française ... oui, bon d'accord oubliez ça ...) avec la librairie
$PVM_ROOT/lib/$PVM_ARCH/libfpvm3.a

Les sources doivent inclure le fichier d'en-tête $PVM_ROOT/include/pvm3.h
pour les programmes  C/C++ , pour définir les constantes PVM et les prototypes de fonctions.
Le fichier d'en-tête correpondant pour le fortran est
$PVM_ROOT/include/fpvm3.h.

Les exécutables doivent être installés dans la directory PVM_ROOT/bin/$PVM_ARCH
pour un usage personnel, sinon si vous visez une diffusion plus large installez-les dans la
directory $HOME/pvm3/bin/$PVM_ARCH.
Attention, dans ce cas l'utilisateur qui invoquera vos codes n'aura pas forcément
l'accès a la directory $PVM_ROOT/bin/$PVM_ARCH en écriture.
Cependant le chemin d'exécution pas défaut du code peut être changé avec l'option "ep="
pour chaque machine de votre machine virtuelle dans le fichier de configuration initiale de votre
machine virtuelle (le hostfile).

Quand un programme utilisateur est "spawné" par PVM il s'exécute par défaut dans la
directory $HOME de l'utilisateur.

Toute entrée ou tout fichier de données doit par conséquent résider
ou être lié (logiquement) à $HOME.

Cette directory de travail par défaut peut être aussi changée dans le fichier de configuration de votre
machine virtuelle (le hostfile on vous dit) avec l'option "wd="  voir les pages d'aides.