Ceci est une ancienne révision du document !
Intel MPI
En cours de rédaction
L'implémentation Intel MPI est la version MPI à utiliser préférentiellement sur CALI. La version actuellement installée est la version 5.0, qui implémente la norme MPI 3.0.
Réseau Infiniband
Pour comprendre pourquoi il est 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
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
Références
Concernant la librairie Intel MPI :
Environnement pour MPI
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
mpiicc
pour utiliser le compilateur Intel C/C++
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
TODO
Thread safe version de la lib MPI : -mt_mpi . A utiliser avec la MKL par exemple ⇒ à vérifier
Fabric utilisées :
$ echo $I_MPI_FABRICS
shm:tmi
PSM est un TMI Provider. Sélectionné via la configuration du fichier /opt/software/intel/impi_latest/etc64/tmi.conf