Outils pour utilisateurs

Outils du site


mpi

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
mpi [2018/05/15 10:35] hetoussampi [2019/06/05 13:37] (Version actuelle) borlonjo
Ligne 3: Ligne 3:
 ===== Exemple de code C utilisant MPI ===== ===== Exemple de code C utilisant MPI =====
  
-Un petit exemple est disponible [[http://fc.isima.fr/~toussain/docWiki/MPI/hello.c|ici]]+Un exemple (très simple) de code C utilisant MPI est disponible [[http://fc.isima.fr/~toussain/docWiki/MPI/hello.c|ici]].
  
-===== Script pour lancer un programme MPI sur un noeud =====+Pour le compiler ajoutez les lignes suivantes dans votre fichier .bashrc 
 +<code bash> 
 +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 
 +</code>
  
-SLURM est fait pour fonctionner avec MPI. Par défaut, il lancera autant de processus que de cœurs disponibles+Elles permettent de compiler et //linker// avec la bonne version de MPI. 
 + 
 +Compilation : <code bash>mpicc hello.c -o hello</code> 
 + 
 + 
 +===== 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 réservés avec l'option ''<nowiki>--ntasks</nowiki>'' 
 +Le script suivant exécute le programme précédent sur un seul noeud :
  
-Remarque : On peut utiliser l'option **bind-to-core** de **mpirun** pour attacher les processus MPI sur les cœurs. 
  
 <code bash> <code bash>
Ligne 15: Ligne 28:
  
 # ============= options de sbatch (ici réservation de 32 cores)================== # ============= options de sbatch (ici réservation de 32 cores)==================
-#SBATCH --ntasks=32            # 32 tasks car 32 processus en parallèle+#SBATCH --ntasks=32            # 32 tasks => 32 processus en parallèle
 #SBATCH --ntasks-per-core=1    # on met une seule task par CPU #SBATCH --ntasks-per-core=1    # on met une seule task par CPU
  
Ligne 22: Ligne 35:
  
 </code> </code>
 +Remarque : On peut utiliser l'option **bind-to-core** de **mpirun** pour attacher les processus MPI sur les cœurs.
  
 ===== Script pour lancer un programme MPI en parallèle sur plusieurs noeuds ===== ===== Script pour lancer un programme MPI en parallèle sur plusieurs noeuds =====
 +
 +L'intérêt de la bibliothèque MPI est de pouvoir utiliser plusieurs noeuds en parallèle. Le script suivant montre comment lancer 16 processus en parallèle répartis sur 4 noeuds. Il nécessite de créer au préalable un fichier [[http://fc.isima.fr/~toussain/docWiki/MPI/machine|machine]] qui contient la liste des machines à utiliser par MPI avec le nombre de processus à lancer sur chacune.
 +
 +Les options données à SLURM doivent être cohérentes avec les informations contenues dans le fichier machine.
  
 <code bash> <code bash>
Ligne 41: Ligne 58:
 #total défini dans le fichier machine #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+#REMARQUE 2 : tous les noeuds sur lesquels vont s'exécuter le programme doivent faire partie de la même partition
  
 </code> </code>
mpi.1526380510.txt.gz · Dernière modification : 2018/10/11 20:49 (modification externe)