mpi
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| mpi [2018/05/15 12:26] – créée hetoussa | mpi [2019/06/05 15:37] (Version actuelle) – borlonjo | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Programmation en C avec MPI ====== | ====== Programmation en C avec MPI ====== | ||
| + | |||
| + | ===== 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 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' | ||
| + | Le script suivant exécute le programme précédent sur un seul noeud : | ||
| + | |||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | # ============= options de sbatch (ici réservation de 32 cores)================== | ||
| + | #SBATCH --ntasks=32 | ||
| + | #SBATCH --ntasks-per-core=1 | ||
| + | |||
| + | # =====================ligne de commande ================================== | ||
| + | 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.1526380017.txt.gz · Dernière modification : 2018/10/11 22:49 (modification externe)