Outils pour utilisateurs

Outils du site


mpi:openmpi:start

Ceci est une ancienne révision du document !


Voir cette page sous forme de diaporama.

OpenMPI avec GCC

En cours de rédaction

L'implémentation OpenMPI n'est pas la version MPI à utiliser préférentiellement sur CALI.

Cependant, nous décrivons ici son fonctionnement général, et la méthode pour l'utiliser sur CALI avec la suite de développement GNU Compiler Collection.

La version OpenMPI disponible est relativement ancienne (1.8.2), datant de l'installation du cluster…

Références

Concernant la librairie OpenMPI :

OpenMPI et Slurm

OpenMPI est compilé avec le support de PMI (Process Management Interface). Voir lancement

En résumé, PMI permet de laisser Slurm lancer les processus, via la commande srun en général. La phase d'initialisation MPI découvrira les autres processus grâce à des appels à la librairie PMI (livrée avec Slurm)

Réseau Infiniband

https://www.open-mpi.org/faq/?category=tuning

OpenMPI est construit sous forme d'une architecture modulaire (Modular Component Architecture – MCA). Cette architecture permet de construire dynamiquement, à l'exécution, les modules utilisés par un processus. La librairie est divisé en 3 parties :

  • OMPI : partie MPI
  • ORTE : run-time layer
  • OPAL : operating system / platform layer

Pour chacune de ces parties, il y a plusieurs frameworks, pour gérer tel ou tel aspect. Chaque framework contiendra 0 ou plusieurs Components, chacun avec un ou plusieurs modules (instances).

Pour en revenir au réseau Infiniband :

  • OpenMPI peut utiliser le réseau Infiniband, à travers l'implémentation OpenFabrics
  • le choix de la Fabric est pris par le framework btl : on peut indiquer, à l'exécution, de charger tel ou tel component (tcp, openib, …) pour ce framework

Mais en simplifié : normalement, OpenMPI est “intelligent” et sélectionne automatiquement la Fabric la plus rapide, donc Infiniband, si celle-ci est disponible, et passera uniquement en TCP sinon.

Voir https://www.open-mpi.org/faq/?category=tcp#tcp-auto-disable

Compiler avec GCC + OpenMPI

Il faut d'abord décharger les modules Intel, charger l'implémentation OpenMPI :

module unload configuration
module load mpi/openmpi/1.8.2-gcc64

La commande ompi_info donne des infos sur la librairie OpenMPI, dont les modules disponibles.

Pour compiler votre programme MPI, il faut utiliser les commandes mpixxxx, où xxxx est le nom du “vrai” compilateur que vous désirez utiliser. Exemples :

  • mpifort pour utiliser le compilateur GNU Fortran fort
  • mpicc pour utiliser le compilateur GNU C gcc
  • mpiCC pour utiliser le compilateur GNU C++ g++

Exécuter

  • Sur notre cluster, l'exécution du code MPI est prise en charge par la commande srun
  • Au sein d'un fichier batch, la commande trouvera automatiquement le nombre adéquat de processus à lancer, en fonction des ressources demandées

Fichier batch

Un exemple de fichier batch est disponible sur slurm-openmpi FIXME

mpi/openmpi/start.1518806594.txt.gz · Dernière modification: 2018/02/16 19:43 de montap01