Skip to topic | Skip to bottom
Home
Minfo
Minfo.ParallTDM5r1.3 - 03 Oct 2010 - 14:07 - FabriceHuettopic end

Start of topic | Skip to actions

Mise en place ssh

Pour pouvoir se connecter sur différentes machines, nous allons mettre en place le mécanisme de cléfs publique/privée de ssh.

  1. Générez un couple de clef publique/privée avec la commande ssh-keygen -t rsa. Ne mettez pas de passphrase.
  2. Placez vous dans le répertoire $HOME/.ssh et copiez votre clef publique dans le fichier authorized_keys
  3. Vérifiez que vous pouvez faire des ssh vers toutes les machines de l'université sans entrer votre mot de passe

MPI

Nous allons utiliser openMPI qu'il est possible d'installer avec yum sur Fedora (si il n'est pas déjà disponible sur votre machine!) yum install openmpi openmpi-devel openmpi-libs

Il est aussi possible de compiler le code source mais c'est plus long.

Vérifiez qu'open MPI est bien installé sur votre machine avec la commande ompi_info. Vérifiez que vous avez l'exécutable mpicc pour compiler vos programmes et mpirun pour les exécuter.

Hello world en MPI

  1. Écrire un programme MPI qui affiche son numéro de rang et exécutez le pour un nombre variable de processus
  2. Testez l'éxécution de votre programme en donnant une liste de machine sur lesquelles l'exécuter. Modifiez votre programme pour qu'il affiche le nom de la machine sur laquelle il s'exécute
  3. Écrire un programme MPI tel que le premier processus affiche "hello", le deuxième affiche "goodbye" et les autres ne font rien. Vérifiez le comportement de votre programme dans le cas où vous l'éxécutez sur plus de 2 processeurs.

Ping Pong

  1. Écrire un programme MPI composé de deux processus. Le premier enverra un entier au second qui l'affichera. Les deux termineront ensuite.
  2. Modifiez le programme précédent pour qu'il fonctionne quand il y a plus de 2 processus. Dans ce cas, le maitre devra envoyer les données autant de fois qu'il y a d'autres processus.

Anneau

On considère une topologie en anneau basée sur le rang des processus. Chaque processus a un prédécesseur et un successeur dans l'anneau.
  1. Si un processus a comme rang rank sur un anneau de size processus, quel est le rang de son prédécesseur et celui de son successeur
  2. Ecrivez un programme MPI dont les processus sont organisés en anneau et où chaque processus demande à son prédécesseur son rang.
  3. Modifiez votre programme pour que le processus de rang 0 envoie un jeton (un entier) à son successeur, qui fera de même. Le programme s'arretera quand il aura fait un tour complet de l'anneau.
  4. Modifiez votre programme de sorte que le maitre envoie un tableau sur l'anneau. Ce tableau sera rempli par chaque processus qui y mettra l'heure à laquelle il a démarré.

Deadlock (si on y arrive...)

On considère un programme composé de deux processus ayant un code strictement identique. Chaque processus envoie un tableau à l'autre.
  1. Testez votre programme pour des tailles variables de tableau (10, 100, 1000) et essayez de provoquer un deadlock
  2. Pourquoi le deadlock n'apparait qu'à partir d'une certaine taille?

to top

You are here: Minfo > ParallRepa > ParallTDM5

to top

Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback