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.274Attention!
- Pour compiler un programme avec gcc, utiliser la commande
mpicc
oumpif90
. - Pour compiler avec les compilateurs Intel, utiliser
mpiicc
oumpiifort
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.