===== Librairies MPI disponibles, réseau Infiniband =====
Deux familles de librairies MPI sont mises à disposition : OpenMPI et Intel MPI
==== Avertissement ====
Une partie des noeuds du cluster est relié par un réseau haute performance Infiniband, de technologie //QLogic TrueScale// ou //Intel Infinipath//. Cette technologie a été abandonnée par Intel, et mal supportée à l'heure actuelle.
La meilleure façon de faire fonctionner ce réseau consiste à utiliser une API appelée ''psm''. Hors elle ne fonctionne pas sur CALI2-B. Il faut alors se "rabattre" soit sur l'API ''verbs'', soit sur le mode ''tcp''.
==== OpenMPI ====
Trois versions sont disponibles :
* celle livrée par AlmaLinux 8 -- à charger avec ''module load mpi/openmpi-x86_64''
* deux versions (3.1 et 4.1) recompilées -- à charger avec ''module load mpi/openmpi/3.1.6'' ou ''mpi/openmpi/4.1.2''
La configuration qui semble optimale avec OpenMPI est d'utiliser la couche PML ''ucx'' -- par exemple en positionnant la variable suivante dans vos jobs slurm :
export OMPI_MCA_pml=ucx
Si vous avez besoin de déboguer la couche OpenMPI, vous pouvez ajouter ces variables :
export OMPI_MCA_pml_base_verbose=10
export OMPI_MCA_mtl_base_verbose=10
export OMPI_MCA_btl_base_verbose=10
==== Intel MPI ====
__Avertissement__ La librairie Intel MPI semble moins efficace qu'OpenMPI en l'absence de support de psm. A tester pour votre code.
Plusieurs versions sont disponibles :
* les ancienns versions de CALI2 sont toujours disponibles -- voir les versions avec ''module avail mpi/impi''
* une version issue de OneAPI est aussi disponible : ''module load mpi/2021.3.0''
Pour utiliser ''verbs'', vous devez positionner la variable suivante (par exemple dans vos //jobs// slurm) :
export FI_PROVIDER=verbs
# Et si vous voulez avoir des informations de "debogage":
export FI_LOG_LEVEL=99
export I_MPI_DEBUG=4