Programmation parallèle
Résumé de section
-
-
Présentation des principes du parallélisme par un exemple intuitif et présentation synthétique des architectures.
-
-
- Communications point à point
- Communications collectives
- Les communicateurs et les topologies
-
Pour le TD n°1
- Le calcul du max et de sa position
- Le calcul de Pi approché par une intégrale
- La vérification si une suite est de Syracuse
Pour le TP n°0
- Le calcul du max (à nouveau)
- La normalisation d'un vecteur
-
Vous avez deux archives à votre disposition
- MNT.tgz contient les codes pour le calcul des directions et des flots d'accumulations ainsi que quelques dalles comme jeu de données.
- Codes.tgz reprend l'implémentation séquentielle précédente mais avec l'ajout du calcul des bassins versants.
Exécution sur 2 machines de E11
Vous allez pas groupe travailler sur 2 machines de la salle en considérant que ces machines constituent une grappe de PCs (le réseau Ethernet de la salle n'est pas forcément le réseau le plus performant).
Préliminaires
- Notez les adresses IP des 2 machines que vous allez utiliser
- Vérifiez que vous pouvez vous connecter en ssh sur le compte tpuser sans donner le mot de passe
- Créez un dossier bin sur chacune des machines. Vous devrez copier dans ce dossier l'exécutable de votre programme parallèle sur chacune des machines.
Gestion de l'exécution parallèle
Lorsqu'on exécute le programme sur une machine à mémoire distribuée, mpirun gère le lancement du programme sur chaque processus à distance par ssh. Il faut donc que l'exécutable soit accessible via le PATH. Pour cela vous pouvez rajouter au fichier .bashrc les lignes suivantes
if [ -d "$HOME/bin" ] ; then
export PATH="$HOME/bin:$PATH"
fiAinsi vous pourrez placer votre exécutable dans ce répertoire bin de votre $HOME et lors de l'exécution parallèle le lancement à distance par mpirun pourra fonctionner.
Enfin, avant de pouvoir exécuter le programme il faut définir les processus que l'on souhaite utiliser. Pour cela il faut créer un fichier qui va contenir ces informations. Voici un exemple (le fichier créé se nomme liste_machines)
@IP1 slots=2
@IP2 slots=2
@IP3 slots=2La syntaxe pour utiliser ce fichier et lancer le programme sur les processus correspondants est
mpirun --hostfile liste_machines (-np 4) 'NomExecutable' 'les arguments'
Si vous précisez le nombre de processus avec l'option -np x le programme s'exécutera sur x processus choisis dans le fichier listes_machines. Sans cette option il utilise toutes les machines données dans le fichier.
Attention : il est probable qu'il soit nécessaire d'ajouter l'option --mca btl_tcp_if_include "nom carte réseau" afin d'indiquer la carte réseau à utiliser pour les communications.
-
Attention la section 4 et 6 ne sont pas traités dans ce module.