ISI Systèmes Distribués et Cloud avancé

De Ensiwiki
Aller à : navigation, rechercher


"Systèmes Distribués", ISI (ex 1ère partie de "Systèmes Distribués et Cloud Avancé", ISI)

MPI, Cours, Projet)

Notes de cours

TP MPI "prise en main"

MPI sur les machines Ensimag, ssh avec kerberos

  • Pour compiler sur CentOS 7 (Ensimag), vous aurez besoin de rajouter le chemin des exécutables et le chemin des bibliothèques avec les lignes suivantes pour votre .bashrc
   export PATH=$PATH:/usr/lib64/openmpi/bin
   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/openmpi/lib
   export MANPATH=$MANPATH:/usr/share/man/openmpi-x86_64
  • Pour contourner le bug de montage du home, il suffit de se connecter une fois par jour avec ssh en utilisant le mot de passe.
    ssh -o PreferredAuthentications=password ensipcXYZ
  • Pour contourner un bug lié à CentOs 7.3 dans la détection des réseaux rapides (ensipc18.15913hfi_wait_for_device: The /dev/hfi1_0 device failed to appear after 15.0 seconds: Connection timed out)
   mpirun --mca pml ob1 ...


  • Pour que les message circulent entre les machines de l'Ensimag vous aurez besoin de positionner aussi l'interface réseau à utiliser

Pour trouver l'interface réseau par défaut (celle avec 129.88..., enp4s0 ou em1 par exemple)

   /sbin/ifconfig

Puis

   export OMPI_MCA_btl_tcp_if_include=enp4s0

ou bien vous devrez positionner l'option suivante de mpirun à chaque lancement

   mpirun --mca btl_tcp_if_include enp4s0 ...

ou bien si c'est em1 et pas enp4s0

   mpirun --mca btl_tcp_if_include em1 ...


MPI sur des machines utilisant ssh avec des clefs publiques/privés

  • Si vous avez mis une passphrase à votre clef, vous pouvez propager votre agent
   mpirun --mca pls_rsh_agent "ssh -A" ...

ou bien dans votre bashrc

   export OMPI_MCA_pls_rsh_agent="ssh -A" ...
  • Pour ne pas demander de confirmation à la première connexion à une machine
   mpirun --mca pls_rsh_agent "ssh -o StrictHostKeyChecking=no"


Les variables changées dans le bashrc fonctionneront pour tout nouveau shell. Pour un shell déjà lancé, penser à faire source ~/.bashrc

TP MPI "correction simpliste"


TP Simgrid

Projet

Le sujet et les makefile d'exemples sont dans l'entrepôt suivant:

 https://gitlab.ensimag.fr/5MMSYSD/2018-2019/ensimag-parmake


Quelques idées de plateformes possibles

  • Variantes autour de MPI:
    • MPI (Communication Asynchrone) en Boost.MPI/ C++;
    • MPI (Communication uni-directionnelles Read/Write);
    • MPI (Communication Collectives asynchrone);
  • Variantes autour de MPI + threads géré par un langage
    • MPI + OpenMP
    • MPI + CilkPlus
    • MPI + TBB
    • MPI + Rust
  • Bibliothèques de haut-niveaux
    • Charm++ (Bibliothèque C++)
    • Python celery, Python PP, IPython
    • Hadoop, le Map-Reduce de Apache (installation difficile)
    • Apache Spark (Scala/Java/Python/R)
  • Les languages dédiés
  • Les objets distribués
    • Java-RMI;
    • DO de Objective-C (gnustep);
    • Distributed ADA (polyorb);
    • Python + Pyro;
    • RPC Go (http://golang.org);
    • Apache Thrift (facebook) + Perl, Go, D ou Haskell;
  • Autres
    • Zero-MQ (bibliothèque de socket de haut niveaux (ex: diffusion, bus, ...))
    • nanomsg (fille de zero-mq, plus simple, pour C)
    • Simgrid (simulation) (il faudra mesurer et simuler les clusters de g5k)
    • Un autre framework que vous rêvez d'utiliser peut se négocier (Elixir, ...)

Enseignants