OpenMPI

Il est nécessaire d’utiliser la version d’openmpi qui va avec le compilateur utilisé pour votre application : si vous compilez avec icc, utilisez une version icc d’Openmpi

Généralités

Quelque soit la version d’openmpi, il est souhaitable de modifier la taille dédiée à la pile :

ulimit -s 10240

Les versions installées


Versions 4 (recommandée)

Versions 4 (recommandée)

Il est maintenant recommandé d'utiliser openmpi version 4.

Les modules disponibles sont les suivants:

module load openmpi/gnu/4.1.4.2
module load openmpi/gnu/ilp64/4.1.4.2
module load openmpi/4.1.4.2
module load openmpi/intel/4.1.4.2
module load openmpi/intel/ilp64/4.1.4.2

Exemple d'utilisation:

module purge
module load openmpi/gnu/4.1.4.2
ulimit -s 10240

srun ./mon-appli

La communication entre GPUs (CUDA-Aware) a été testé pour tous ces modules.

En particulier les communication MPI_Send/MPI_Recv, MPI_Bcast et MPI_Allreduce avec un test qui peut être recuperé en bas.

Pour faire le test il suffit de commenter/decommenter l'environemment qu'on veut tester dans le script sbatch et dans le Makefile.

Versions 3

Versions 3

3 modules fournis : Un module par compilateur (gnu, icc, pgi). Tous les modules proposent une version "Multitheadée" d’openmpi. La version ilp64 n’est pas proposée dans cette version.

Mode d’utilisation cuda-aware mpi

Dans ce mode, disponible sur les versions 3 d’openmpi mais non activé par défaut, les gpus sont capables de communiquer directement entre eux sans passer par les cpus. A l’intérieur d’un nœud ces communications utilisent les liens nvlink. Les communications sont donc plus rapides et le code est plus performant. Pour utiliser ce mode, il est nécessaire de :

  1. désactiver le mode de communication mxm
  2. activer explicitement le mode "cuda-aware"
module purge
module load openmpi/gnu/3.0.2 cuda/9.1.85.3
ulimit -s 10240
export OMPI_MCA_mtl=^mxm
export OMPI_MCA_pml=^yalla
export OMPI_MCA_mpi_cuda_support=1
srun ./mon-appli-gpu

Version 2.0.2

Version 2.0.2

8 modules fournis : 2 compilateurs (gnu et icc) X multithreading on/off X ilp64 on/off

Exemple :

module purge
module load openmpi/gnu/mt/2.0.2.10
ulimit -s 10240
srun ...
Fichiers attachés

Voir aussi

FAQ

Questions fréquentes et messages d'erreurs

Comment demander de l’aide ?

Si votre job se plante sans que vous sachiez pourquoi, ou de manière générale si quelque chose ne fonctionne pas comme prévu, comment faire ?