Table des matières
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.