Intel MPI
En partie obsolète suite à la migration CALI2-B (2022)
L'implémentation Intel MPI est était la version MPI à utiliser préférentiellement sur CALI. La version utilisée par défaut est la version 5.0, qui implémente la norme MPI 3.0.
Références
Concernant la librairie Intel MPI :
Réseau Infiniband
Pour comprendre pourquoi il est était préférable d'utiliser Intel MPI, il faut connaître le réseau Infiniband de notre cluster
Les cartes de connexion au réseau Infiniband sont des Host Channel Adapter (HCA) QLogic IBA7322 QDR
et le commutateur est un Intel True Scale 12300
-
Pour obtenir la meilleure performance sur ce réseau, il faut utiliser la couche logicielle Performance Scaled Messaging (PSM)
La librairie Intel MPI est configurée pour utiliser PSM (voir article
Fabric)
Depuis la migration en version CALI2-B (2022), les cartes Infiniband sont mal supportées et le mode PSM
optimisé n'est plus disponible
Avantages de l'architecture True Scale
Fonctionne en mode non connecté, assurant ainsi une plus faible latence
Optimisation grâce à PSM, plus performant que la librairie verbs traditionnelle utilisée précédemment en Infiniband
L'environnement pour utiliser les librairies MPI est paramétré sur CALI à travers des
modules
Vous ne devez donc pas suivre la documentation d'Intel concernant la configuration de votre environnement (n'utilisez pas mpivars.sh
)
Le module pour la dernière version stable d'Intel MPI est automatiquement chargé quand vous vous connectez à CALI
Compiler
Pour compiler votre programme MPI, il faut utiliser les commandes mpixxxx
, où xxxx
est le nom du “vrai” compilateur que vous désirez utiliser. Exemples :
mpiifort
pour utiliser le compilateur Intel Fortran ifort
mpiicc
pour utiliser le compilateur Intel C/C++ icc
mpigcc
pour utiliser le compilateur GNU C
Thread ou pas threads ?
La compilation est faite par défaut avec la librairie MPI threadée.
Avec OpenMP
Vous pouvez utiliser des appels MPI à l'intérieur de sections OpenMP
Mais vous devez dans ce cas précis utiliser la version thread-safe de la librairie MPI via -mt_mpi
Notez bien que ce cas ne concerne pas les codes ayant des sections OpenMP dans des processus MPI sans appel MPI à l'intérieur de ces sections
Exécuter
Sur notre cluster, l'exécution du code MPI est prise en charge par la commande srun
Au sein d'un fichier batch, la commande trouvera automatiquement le nombre adéquat de processus à lancer, en fonction des ressources demandées
L'environnement est configuré via les module pour qu'Intel MPI utilise la librairie PMI (Process Management Interface) de slurm (variable I_MPI_PMI_LIBRARY
)
Fichier batch
Un exemple de fichier batch est disponible sur slurm-mpi
Plus de détails
L'article
Fabric indique comment la librairie Intel MPI sélectionne la Fabric