Le calcul parallèle
Le calcul parallèle est un ensemble de techniques logicielles et matérielles permettant l’exécution simultanée de séquences d’instructions indépendantes, sur des processeurs différents.
Calcul parallèle à mémoire distribuée
Il s’agit de faire travailler ensemble plusieurs ressources, étant disjointes (ne partageant pas le même espace mémoire), comme des serveurs, des accélérateurs. Pour cela on peut utiliser une bibliothèque de calcul parallèle très répandue : MPI (Message Passing Interface).
Implémentation Intel MPI
Elle est accessible au travers de modules, de la forme intel/mpi/20xx.y.zzz.
On dispose de wrappers pour compiler plus facilement les programmes en Fortran C, C++. Les compilateurs (Intel uniquement) sont complétés par des options pour chercher les fichiers d’en-tête ou les bibliothèques à l’édition des liens. Il s’agit de :
-
mpiifort
: wrapper pour le Fortran -
mpiicc
: wrapper pour le C -
mpiicpc
: wrapper pour le C++
Implémentation OpenMPI
OpenMPI est une implémentation de la norme MPI et elle peut être compilée par n’importe quel compilateur. Pour cette raison, on a plusieurs sous-familles de modules selon les compilateurs utilisés : Intel, GNU, PGI. Leurs noms ont donc la forme openmpi/<reseau>/<compilateur>/<version>
.
-
<réseau>
désigne le matériel sous-jacent qui relie les serveurs : Omnipath, Roce, InfiniBand, … -
<compilateur>
désigne le compilateur utilisé pour compiler la bibliothèque MPI. -
<version>
désigne le numéro de version de la bibliothèque
Implémentation MPIVAPICH
MVAPICH est moins utilisée que les deux précédentes ; elle est une implémentation de la norme MPI et peut être compilée par n’importe quel compilateur. Pour cette raison, on a plusieurs sous-familles de modules selon les compilateurs utilisés : Intel, GNU, PGI. Leurs noms ont donc la forme mvapich/<reseau>/<compilateur>/<version>
.
-
<réseau>
désigne le matériel sous-jacent qui relie les serveurs : Omnipath, Roce, InfiniBand, … -
<compilateur>
désigne le compilateur utilisé pour compiler la bibliothèque MPI. -
<version>
désigne le numéro de version de la bibliothèque
Calcul parallèle à mémoire partagée
Il s’agit d’exploiter des ressources qui partagent le même espace mémoire, comme les cœurs au sein d’un seul serveur disposant d’un espace mémoire unique, accessible par tous ses cœurs.
On peut utiliser les threads avec des bibliothèques tierces.
On peut aussi utiliser OpenMP et s’appuyer directement sur les compilateurs.