Jean Zay : compilation d'un code parallèle MPI en Fortran, C/C++

Les librairies MPI disponibles sur Jean Zay sont les librairies Intel MPI et Open MPI.

Les librairies Open MPI sont compilées avec et sans le support MPI CUDA-aware. Pour une compilation MPI CUDA-aware, veuillez vous référer à la page MPI CUDA-aware et GPUDirect

Les différentes versions des librairies MPI disponibles sur Jean Zay sont visibles grâce à la commande module.

Il faut penser à activer également les compilateurs (Intel ou PGI) avant de lancer la compilation.

Exemples de chargement

  • Intel MPI :
$ module avail intel-mpi
-------------------------------------------------------------------------- /gpfslocalsup/pub/module-rh/modulefiles --------------------------------------------------------------------------
intel-mpi/5.1.3(16.0.4)   intel-mpi/2018.5(18.0.5)  intel-mpi/2019.4(19.0.4)  intel-mpi/2019.6  intel-mpi/2019.8  
intel-mpi/2018.1(18.0.1)  intel-mpi/2019.2(19.0.2)  intel-mpi/2019.5(19.0.5)  intel-mpi/2019.7  intel-mpi/2019.9
 
$ module load intel-compilers/19.0.4 intel-mpi/19.0.4
  • Open MPI (sans MPI CUDA-aware, il faudra sélectionner un module sans l'extension -cuda) :
$ module avail openmpi
-------------------------------------------------------- /gpfslocalsup/pub/modules-idris-env4/modulefiles/linux-rhel8-skylake_avx512 --------------------------------------------------------
openmpi/3.1.4       openmpi/3.1.5  openmpi/3.1.6-cuda  openmpi/4.0.2       openmpi/4.0.4       openmpi/4.0.5       openmpi/4.1.0       openmpi/4.1.1       
openmpi/3.1.4-cuda  openmpi/3.1.6  openmpi/4.0.1-cuda  openmpi/4.0.2-cuda  openmpi/4.0.4-cuda  openmpi/4.0.5-cuda  openmpi/4.1.0-cuda  openmpi/4.1.1-cuda     
 
$ module load pgi/20.4 openmpi/4.0.4

Compilation

La compilation et l'édition de liens d'un programme MPI se font en utilisant les wrappers MPI de compilateurs associés à la librairie choisie :

  • Intel MPI :
$ mpiifort source.f90
 
$ mpiicc source.c
 
$ mpiicpc source.C
  • Open MPI :
$ mpifort source.f90
 
$ mpicc source.c
 
$ mpic++ source.C

Remarque

  • L'exécution d'un programme MPI doit se faire en batch (via la commande srun ou un job Slurm) pour éviter de saturer la frontale.