Outils pour utilisateurs

Outils du site


mpi

Ceci est une ancienne révision du document !


Programmation en C avec MPI

Exemple de code C utilisant MPI

Un exemple (très simple) de code C utilisant MPI est disponible ici.

Pour le compiler ajoutez les lignes suivantes dans votre fichier .bashrc

if ! (which mpicc>/dev/null 2>&1) && [ -d /usr/lib64/openmpi ]
then
export PATH=/usr/lib64/openmpi/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/openmpi/lib
fi

Elles permettent de compiler et linker avec la bonne version de MPI.

Compilation :

mpicc hello.c -o hello

Script pour lancer un programme MPI sur un seul noeud

SLURM est fait pour fonctionner avec MPI. Par défaut, il lancera autant de processus que de cœurs disponibles.

Remarque : On peut utiliser l'option bind-to-core de mpirun pour attacher les processus MPI sur les cœurs.

#!/bin/bash
 
# ============= options de sbatch (ici réservation de 32 cores)==================
#SBATCH --ntasks=32            # 32 tasks car 32 processus en parallèle
#SBATCH --ntasks-per-core=1    # on met une seule task par CPU
 
# =====================ligne de commande ==================================
mpirun ./exe

Script pour lancer un programme MPI en parallèle sur plusieurs noeuds

#!/bin/bash
#SBATCH --ntasks=16
#SBATCH --ntasks-per-core=1
#SBATCH --job-name=testMPI
#SBATCH --nodelist=node22,node23,node24,node25
 
 
#le fichier machine contient la liste des machines à utiliser
#elle doit être la même que celle définie par nodelist 
mpiexec -machinefile machine ./hello
 
#REMARQUE 1 : ntasks doit être exactement égal au nb de threads désirés qui doit être égal au nombre de slots
#total défini dans le fichier machine
 
#REMARQUE 2 : tous les noeuds surlesquels vont s'exécuter le programme doivent faire partie de la même partition
mpi.1526380752.txt.gz · Dernière modification : 2018/10/11 20:49 (modification externe)