Deux familles de librairies MPI sont mises à disposition : OpenMPI et Intel MPI
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
.
Trois versions sont disponibles :
module load mpi/openmpi-x86_64
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
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 :
module avail mpi/impi
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