Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
mpi:openmpi:start [2018/02/16 19:11] montap01 créée |
mpi:openmpi:start [2018/04/10 17:09] (Version actuelle) montap01 [Compiler avec GCC + OpenMPI] |
||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
<note warning> | <note warning> | ||
- | La version | + | Les versions |
+ | * 1.8.2 : version d' | ||
+ | * 1.10.7 | ||
</ | </ | ||
Ligne 15: | Ligne 17: | ||
===== OpenMPI et Slurm ===== | ===== OpenMPI et Slurm ===== | ||
- | OpenMPI est compilé avec le support de PMI (// | + | OpenMPI est compilé avec le support de PMI (// |
+ | |||
+ | En résumé, PMI permet de laisser Slurm lancer les processus, via la commande '' | ||
===== Réseau Infiniband ===== | ===== Réseau Infiniband ===== | ||
- | Pour comprendre pourquoi il est préférable d' | + | https://www.open-mpi.org/faq/? |
- | * Les cartes de connexion au réseau Infiniband sont des //Host Channel Adapter// (HCA) '' | + | |
- | * Ce réseau est basé sur l' | + | |
- | * Pour obtenir la meilleure performance sur ce réseau, il faut utiliser la couche logicielle // | + | |
- | * La librairie Intel MPI est configurée pour utiliser PSM (voir article [[Fabric]]) | + | |
- | ==== Avantages de l' | + | OpenMPI est construit sous forme d'une architecture |
- | * Fonctionne en mode non connecté, assurant ainsi une plus faible latence | + | * OMPI : partie |
- | * Optimisation grâce | + | * ORTE : run-time layer |
- | ===== Configurer votre environnement===== | + | * OPAL : operating system / platform layer |
- | * L' | + | |
- | * Vous ne devez donc pas suivre la documentation d' | + | |
- | * Le module pour la dernière version stable d' | + | |
+ | Pour chacune de ces parties, il y a plusieurs // | ||
- | ===== Compiler ===== | + | Pour en revenir au réseau Infiniband : |
- | Pour compiler votre programme MPI, il faut utiliser | + | * OpenMPI peut utiliser |
- | * '' | + | * le choix de la Fabric est pris par le framework |
- | * '' | + | |
- | * '' | + | |
- | ==== Thread ou pas threads ? ==== | + | Mais en simplifié : normalement, |
- | La compilation | + | |
- | ==== Avec OpenMP | + | Voir https:// |
- | * Vous pouvez utiliser des appels MPI **à l'intérieur** de sections OpenMP | + | |
- | * **Mais** vous devez dans ce cas précis utiliser | + | ===== Compiler avec GCC + OpenMPI ===== |
- | * Notez bien que ce cas ne concerne pas les codes ayant des sections OpenMP dans des processus MPI sans appel MPI à l'intérieur de ces sections | + | Il faut d' |
+ | module unload configuration | ||
+ | module load mpi/openmpi/1.8.2-gcc64 | ||
+ | |||
+ | La commande '' | ||
+ | |||
+ | |||
+ | Pour compiler votre programme | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
===== Exécuter ===== | ===== Exécuter ===== | ||
- | * Sur notre cluster, l' | + | |
- | * Au sein d'un fichier batch, la commande trouvera automatiquement le nombre adéquat de processus à lancer, en fonction des ressources demandées | + | |
- | * L' | + | |
==== Fichier batch ==== | ==== Fichier batch ==== | ||
- | Un exemple de fichier batch est disponible sur [[:slurm:slurm-mpi]] | + | <file bash> |
- | ===== Plus de détails ===== | + | # |
+ | # | ||
+ | #SBATCH --ntasks=4 | ||
+ | #SBATCH --time 00:01:00 | ||
+ | # | ||
+ | #SBATCH --partition=normal | ||
+ | |||
+ | module unload configuration | ||
+ | module load mpi/ | ||
- | * L' | + | mpirun |
+ | </ | ||
+ | ==== Alternative ==== | ||
+ | Pour un job distribué, on peut aussi utiliser '' | ||
+ | < | ||
+ | eval export `mpirun env | grep OMPI_MCA_orte_precondition_transports` | ||
+ | srun ./hello_mpi | ||
+ | </ |