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
  • Ce réseau est basé sur l'architecture Intel True Scale
  • 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

Configurer votre environnement

  • 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