mpi
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
mpi [2018/05/15 12:27] – hetoussa | mpi [2019/06/05 15:37] (Version actuelle) – borlonjo | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Programmation en C avec MPI ====== | ====== Programmation en C avec MPI ====== | ||
- | ===== Script pour un programme | + | ===== Exemple de code C utilisant MPI ===== |
+ | |||
+ | Un exemple (très simple) de code C utilisant MPI est disponible [[http:// | ||
+ | |||
+ | Pour le compiler ajoutez les lignes suivantes dans votre fichier .bashrc | ||
+ | <code bash> | ||
+ | if ! (which mpicc>/ | ||
+ | export PATH=/ | ||
+ | export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/ | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | Elles permettent de compiler et //linker// avec la bonne version de MPI. | ||
+ | |||
+ | Compilation : <code bash> | ||
+ | |||
+ | |||
+ | ===== Script pour lancer | ||
+ | |||
+ | SLURM est fait pour fonctionner avec MPI. Par défaut, il lancera autant de processus que de cœurs réservés avec l' | ||
+ | Le script suivant exécute le programme précédent sur un seul noeud : | ||
- | SLURM est fait pour fonctionner avec MPI. Par défaut, il lancera autant de processus que de cœurs disponibles. On peut utiliser l' | ||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
# ============= options de sbatch (ici réservation de 32 cores)================== | # ============= options de sbatch (ici réservation de 32 cores)================== | ||
- | #SBATCH --ntasks=32 | + | #SBATCH --ntasks=32 |
#SBATCH --ntasks-per-core=1 | #SBATCH --ntasks-per-core=1 | ||
# =====================ligne de commande ================================== | # =====================ligne de commande ================================== | ||
mpirun ./exe | mpirun ./exe | ||
+ | |||
+ | </ | ||
+ | Remarque : On peut utiliser l' | ||
+ | |||
+ | ===== Script pour lancer un programme MPI en parallèle sur plusieurs noeuds ===== | ||
+ | |||
+ | L' | ||
+ | |||
+ | Les options données à SLURM doivent être cohérentes avec les informations contenues dans le fichier machine. | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | #SBATCH --ntasks=16 | ||
+ | #SBATCH --ntasks-per-core=1 | ||
+ | #SBATCH --job-name=testMPI | ||
+ | #SBATCH --nodelist=node22, | ||
+ | |||
+ | |||
+ | #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 sur lesquels vont s' | ||
</ | </ |
mpi.1526380044.txt.gz · Dernière modification : 2018/10/11 22:49 (modification externe)