===== 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