Projet

Général

Profil

Jobs MPI

Note: avec le gestionnaire de travaux Slurm, la plupart des implémentations de MPI savent déterminer ne nombre de nœuds et de tâches à lancer sans qu'on ait besoin de le préciser dans la ligne de commande. D'où leur absence au niveau de la ligne de commande "mpiexec" dans les scripts d'exemple. Il suffira de les soumettre en précisant le nombre de nœuds, de tâches et de threads avec la commande sbatch.

Intel MPI

Charger le module:

module load mpi/intel/2018.5.274

Attention!
  • Pour compiler un programme avec gcc, utiliser la commande mpicc ou mpif90.
  • Pour compiler avec les compilateurs Intel, utiliser mpiicc ou mpiifort

Exemple de fichier job (testimpi.slurm):

#! /bin/bash

module load mpi/intel/2018.5.274

# l'executable doit etre dans le PATH ou bien etre un chemin relatif/absolu
mpiexec ./<executable>

On pourra le soumettre sur 64 cœurs (CPU) avec la commande suivante:

sbatch -n 64      testimpi.slurm

ou encore sur 64 cœurs concentrés sur 2 nœuds (au prix d'une attente beaucoup plus longue) :

sbatch -n 64 -N 2 testimpi.slurm

Attention: l'exécution de jobs IntelMPI en mode interactif (avec "srun --pty") ne fonctionne actuellement pas sur Curta. Un ticket est ouvert auprès du support Intel. La configuration de SLURM sur Curta induit un comportement particulier dans le cas des jobs interactifs. En effet, les tâches soumises pour un job sont confinées dans un cgroup. Chaque processus est donc fixé et limité à un CPU physique dès son lancement. Ainsi, lorsqu'on crée un job interactif avec une commande du type "srun --nodes=2 --tasks-per-node=2 --pty /bin/bash", un seul des processus bash est connecté à la console. De plus, ce processus sera confiné à un seul processeur. Donc si on lance un "mpiexec" il ne sera exécuté que sur le cœur courant.

OpenMPI

Exemple de fichier batch

#! /bin/bash

module purge
module load mpi/openmpi/3.1.3

mpiexec ./<executable>

MVAPICH2

Exemple de fichier batch:

#! /bin/bash

module purge
module load mpi/mvapich2/2.3

mpiexec ./mvapich-gcc

Note: Avec la version 2.3 de MVAPICH2, l'exécution indique un message de warning du type "Failed to automatically detect the HCA architecture.". Vous pouvez ignorer ce message.