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 22:49 (modification externe)