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)