Calcul parallèle : pourquoi et comment Fabrice Roy Journée du LUTH, 08 février 2008
Principes de calcul parallèle Pourquoi calculer en parallèle Exemple de parallélisation : code Particules- Grille Nouvelles infrastructures de calcul
Principes du calcul parallèle
Bases du parallélisme Utiliser plusieurs cœurs de calcul de manière coopérative Distribuer (éventuellement) les données entre différentes unités de calcul Utiliser une bibliothèque de fonctions permettant de répartir le travail entre les cœurs de calcul
Mémoire partagée et mémoire distribuée Plusieurs cœurs accédant à la même mémoire physique = mémoire partagée (OpenMP) Plusieurs cœurs accédant chacun à leur propre mémoire physique = mémoire distribuée (MPI) Situation standard actuelle : un mélange des deux Solution la plus portable : MPI
MPI : Message Passing Interface MPI est un standard décrivant des fonctions permettant la parallélisation en mémoire distribuée (et/ou partagée). Il existe beaucoup de distributions dont plusieurs sont libres. Plusieurs processus identiques ou non s exécutent sur plusieurs cœurs de calcul. Ces processus communiquent entre eux par envois de messages contenant des informations.
Début de l exécution (mpirun) Schéma de principe p0 p1 Qui suis-je? Je suis 0 Je suis 1 Je suis 2 Je suis 3 p2 p3 Quel travail dois-je faire? Travail = f(0) Travail = f(1) Travail = f(2) Travail = f(3) J ai besoin du résultat de mon voisin! Message vers 1 Message vers 2 Message vers 3 Message vers 0 Calcul global : synchronisation Communication collective Fin
Pourquoi paralléliser?
Un calculateur ne suffit pas Diminuer le temps de calcul pour un problème donné. Distribuer les données utilisées par le code entre plusieurs machines de manière à pouvoir augmenter la taille du problème étudié. Pour ces deux raisons.
Accélération et efficacité Accélération (speed up) : S p = T 1 T p Loi d Amdhal : S p 1 f + 1 f p Efficacité : E p = T 1 p T p
Autre raison On ne peut plus espérer d augmentation significative de la puissance de cœurs de calcul à court terme. La puissance des processeurs augmente avec le nombre de cœurs présents. Besoin de plus de puissance = besoin de parallélisme.
Exemple du code particule-grille (PM)
Algorithme du code PM (formation des grandes structures) Division de l espace en une grille cubique fixe. Des particules sont placées dans cet espace. Projection de la densité sur les points de grille. Calcul du potentiel gravitationnel dans l espace de Fourier ce qui permet de calculer le potentiel en J 3 log(j) opérations où J est le nombre de points de grille dans chaque direction (si on prend autant de particules que de points de grille, le calcul direct nécessite opérations). Interpolation du potentiel aux positions des particules pour obtenir leur accélération. J 6 Évolution de la vitesse et de la position des particules.
En parallèle (et en couleurs)
En parallèle (et en couleurs)
En parallèle (et en couleurs)
En parallèle (et en couleurs)
En parallèle (et en couleurs)
En pratique : Découpage du problème : répartition des particules et découpage de la grille, les particules restent associées au même processus mais les grilles tournent ; Calcul de la densité projetée en permutant les grilles des différents processus ; Calcul de la FFT en parallèle (utilisation de la bibliothèque fftw) ; Calcul l interpolation du potentiel en permutant les grilles ; Synchronisation et calcul de grandeurs macroscopiques ; Écriture des résultats par chaque processus dans son propre fichier.
Nouvelles infrastructures de calcul
Équipements à disposition immédiate ou à court/moyen terme Grappe de calcul du SIO Nouvel équipement du CNRS à l IDRIS Grille de calcul EGEE
Grappe de calcul du SIO Revente de MPOPM (16 processeurs, 64 Go de RAM). Achat de 7 serveurs bi-processeurs quadri-cœurs (56 cœurs au total) équipés de 16 Go de RAM chacun en remplacement. Ensemble de 100 cœurs de calcul et 256 Go RAM accessibles de façon transparente depuis une machine unique par soumission de jobs sur un système de files d attente (Torque / Maui).
IDRIS Équipement actuel de l IDRIS : Zahir : 1024 processeurs, 3136 Go RAM, 6.55 Tflops Brodie (vectorielle) : 80 processeurs, 640 Go RAM, 1.28 Tflops Nouvelles machines : Power6 : 3584 coeurs, 18 To RAM, 68 Tflops (8x448 coeurs, 2x3.6 To + 6x1.8 To) BlueGene : 40480 coeurs, 20 To RAM, 139 Tflops (10x4048 coeurs, 10x2 To RAM) Mise en service : mars 2008 pour BlueGene, été 2008 pour Power6
EGEE : Enabling Grids for E-sciences in Europe Mise en commun de moyens de calcul et de stockage, provenant de divers centres de calcul et laboratoires, au sein d une organisation. Utilisation d un middleware commun permettant l accès transparent à l une ou l autres des ressources. Regroupement des moyens par thématiques de recherche ou grands projets (Virtual Organisations).
EGEE : pour faire quoi? Du calcul massivement distribué : un grand nombre de jobs tous indépendants les uns des autres. Impossibilité technique de faire du calcul massivement parallèle. Il est préférable de soumettre des jobs courts dans la mesure du possible.