Vous êtes ici : Accueil > Espace Utilisateurs > Utilisation du système de calcul EOS > Améliorer les performances > (EOS) Exécution Mixte (hybride) MPI et OpenMP avec attachement des processus (...)
Par : Webmaster
Publié : 15 octobre 2014

(EOS) Exécution Mixte (hybride) MPI et OpenMP avec attachement des processus et des threads

Avec IntelMPI

Exemple 1

  • Job MPI+OpenMP avec 20 processus MPI en tout et 2 threads par processus MPI
  • On réserve 2 noeuds
  • 10 processus MPI par noeud et 2 threads openMP par processus MPI
-N Nombre de nœuds
-n Nombre de tâches MPI
--ntasks-per-node= Nombre de tâches MPI par nœud (doit correspondre au nombre de total de tâches MPI divisé par le nombre de nœuds)
--threads-per-core= Nombre de threads par core (pas d’utilisation de l’hyperthreading) (Valeur à laisser à 1)
--cpus-per-task= Nombre de threads par processus MPI
variable slurm SLURM_CPUS_PER_TASK contient le nombre défini pour —cpus-per-task

Définition de l’environnement du calcul (compilateur et librairie MPI) :

Obligatoire :

OMP_NUM_THREADS Nombre de threads OpenMP par processus(tâche) MPI
SLURM_CPUS_PER_TASK Variable SLURM définissant le nombre de core réservé par processus MPI
  • Ci-dessous nous utilisons le principe de masque (mask_cpu) afin d’attacher les threads OpenMP aux cores physiques du noeud.
  • ci-dessous après "mask_cpu :" il y a 10 masques qui sont définis pour chaque process MPI par noeud (dans ce cas 10). Les masques sont séparés par des virgules.
  • Il est possible de faire exactement la même chose mais de manière plus conviviale en utilisant la commande placement  :

Exemple 2

  • Job MPI+OpenMP avec 20 processus MPI en tout et 10 threads par processus MPI
  • On réserve 10 noeuds
  • 2 processus MPI par noeud et 10 threads openMP par processus MPI
  • Ci-dessous nous utilisons le principe de masque (mask_cpu) afin d’attacher les threads OpenMP aux cores physiques du noeud.
  • Il est possible de faire exactement la même chose mais de manière plus conviviale en utilisant la commande placement  :