Compilation de code parallèle MPI (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.
remarque
Il faut penser à activer également les compilateurs (Intel ou NVIDIA/PGI) avant de lancer la compilation.
Exemples de chargement
- Intel MPI :
$ module avail intel-mpi
----------------- /lustre/fshomisc/sup/hpe/pub/module-rh/modulefiles -----------------
intel-mpi/5.1.3(16.0.4) intel-mpi/2019.2(19.0.2) intel-mpi/2019.6 intel-mpi/2019.9
intel-mpi/2018.1(18.0.1) intel-mpi/2019.4(19.0.4) intel-mpi/2019.7 intel-mpi/2021.9
intel-mpi/2018.5(18.0.5) intel-mpi/2019.5(19.0.5) intel-mpi/2019.8
$ 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
----- /lustre/fshomisc/sup/hpe/pub/modules-idris-env4/modulefiles/linux-rhel9-skylake_avx512 -----
openmpi/3.1.4 openmpi/4.0.1-cuda openmpi/4.0.5 openmpi/4.1.1-cuda openmpi/4.1.6-cuda
openmpi/3.1.4-cuda openmpi/4.0.2 openmpi/4.0.5-cuda openmpi/4.1.4-cuda openmpi/4.1.8
openmpi/3.1.5 openmpi/4.0.2-cuda openmpi/4.1.0 openmpi/4.1.5 openmpi/4.1.8-cuda
openmpi/3.1.6 openmpi/4.0.4 openmpi/4.1.0-cuda openmpi/4.1.5-cuda
openmpi/3.1.6-cuda openmpi/4.0.4-cuda openmpi/4.1.1 openmpi/4.1.6
$ 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 du compilateur associé à 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
info
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.