Parallélisation MPI

Description

MPI pour Message Passing Interface est un outil pour le calcul scientifique à haute performance qui permet d’utiliser plusieurs machines. Cet outil permet de faire de la parallélisation à mémoire distribuée et l’échange de données se fait par « passage de messages ».

Catalogue

MPI est disponible dans MatriCS dans différentes variantes. Des versions de ces variantes sont aussi disponibles.

Liste des différentes variantes MPI

Accès aux variantes MPI et versions disponibles

  • Toutes ces versions sont accessibles en chargeant le module gnu12
  • Lien utile : rechercher un module

OpenMPI

ml gnu12
# meme chose que : module load gnu12 
ml openmpi4

Versions disponibles :

  • 4.1.1 (via compiler/gnu9)
  • 4.1.4 (via gnu12)

MPICH

ml gnu12
ml mpich
  • Version disponible : 3.4.3-ofi

MVAPICH2

ml gnu12
ml mvapich2

Versions disponibles :

  • 2.3.6 (via compiler/gnu9)
  • 2.3.7 (via gnu12)

impi

ml gnu12
ml impi

Versions disponibles :

  • 2021.7.1 (défaut)
  • 2021.7.0
  • 2021.6.0

Tutoriel

Pour utiliser un code MPI, il vous faudra compiler votre programme et/ou l’exécuter avec certaines commandes.

Pour la compilation, vous pourrez utiliser la commande mpicc ou mpicxx et pour l’exécution la commande mpirun (ou mpiexec).

Cependant, ces commandes ne sont pas présents dans l’environnement par défaut.

$ mpicxx
-bash: mpicxx : commande introuvable
$ mpicc
-bash: mpicc : commande introuvable
$ mpirun
-bash: mpirun : commande introuvable

Il faut charger le module adéquat. Par exemple, openmpi.

$ ml gnu12 openmpi4
$ mpicxx
g++: erreur fatale: pas de fichier à l'entrée
compilation terminée.
$ mpicc
gcc: erreur fatale: pas de fichier à l'entrée
compilation terminée.
$ mpirun
--------------------------------------------------------------------------
mpirun could not find anything to do.

It is possible that you forgot to specify how many processes to run
via the "-np" argument.
--------------------------------------------------------------------------

Néanmoins, vous pouvez utiliser d’autres librairies MPI comme mpich2.

# Dans l'hypothese ou le module openmpi4 est deja charge
$ ml swap openmpi4 mpich
$ mpicxx
Error: Command line argument is needed!
$ mpicc
Error: Command line argument is needed!
$  mpirun -n 2 echo Hello World
Hello World
Hello World

Voici un exemple d’utilisation :

$ mpirun -np 4 hostname -s
login01
login01
login01
login01

Documentation

Pour une explication détaillée de la commande mpirun ou mpiexec, vous trouverez plus d’informations

  • sur le site openmpi. Par exemple, pour la version 4.0.
  • sur le site mpich . Par exemple, pour la commande mpiexec.