Calcul parallèle => partitionner les données en sous-groupes associés aux processeurs. P0 P2 P1
Importance du partitionnement : P0 P1 P2 P0 P1 P2 P0 P1 P2
1) Un algorithme de partitionnement/repartitionnement parallèle. 2) Une méthode de parallélisation basée sur le repartitionnement et son application dans l’élaboration d ’un mailleur/r leur parallèle.
Qualité d ’une partition : - elle doit être équilibrée : le volume de calcul effectué par chaque processeur doit être sensiblement le même. - elle doit minimiser les interfaces entre les sous-domaines de façon à minimiser le temps passé dans les communications.
Exemple d ’une partition 2D La partition La charge des processeurs Les communications
Exemple d’une partition 3D La charge : La partition : Les communications :
La partition de maillage Sa vision simplifiée sous forme de graphe Un exemple
2 types de programmation : - programmation maître-esclave Un processeur dirige et donne du travail aux autres processeurs qui sont à ses ordres. - programmation SPMD Tous les processeurs exécutent le même programme. Il est cependant possible de simuler une programmation maître-esclave.
Principe général : équilibrer les paires formées, coupler les processeurs, Étant donnée une partition : Puis itérer
Algorithme Algorithme général Initialisation : un ensemble de personnes avec leur personnalité Une variable logique : espoir tant que ( espoir ) faire pour chaque personne faire construction de son entourage recherche d ’une âme sœur dans son entourage à l ’aide d ’une fonction amitié si âme sœur alors vie commune si pas de changement de sa personnalité alors déçu sinon déçu fin pour plus d ’espoir si toutes les personnes sont déçues fin tant que
Algorithme de couplage En entrée : - moi - mon entourage En sortie : une variable de situation (ma position) qui égale : - mon âme sœur si je suis marié(e) - seul(e) si je n’ai trouvé(e) personne. La preuve de cet algorithme repose sur le fait que : - amitié est symétrique ; - amitié a (b)=amitié(a,b) est injective ; - l’espace image de amitié est totalement ordonné.
Tests d ’efficacité avec une fonction coût simplifiée Avec comme fonction de couplage : où Ici on utilise une fonction coût basée uniquement sur la charge des différents domaines :
Vitesse de convergence de l’algorithme suivant différents paramètres
La fonction coût générale Avec comme fonction de couplage : où La fonction coût devient : Avec : et, : une fonction de dans
Précision sur la charge de travail : La charge de travail d ’un processeur correspond à : Où représente le nombre d ’opérations à effectuer, et la vitesse du processeur. Le nombre d ’opérations étant défini par : (resp. ) étant le nombre d ’opérations associé à un élément (resp. à un nœud)
R(e,n) est une relation élément-nœud donnant +/- de cohésion entre «e » et « n » n2n2 n1n1 n3n3 e R(e,n 1 ) R(e,n 2 ) R(e,n 3 ) Précision sur les communications : Les communications sont représentées par un coût de communication élément-nœud : Où E (resp N) représente l ’ensemble des éléments (resp nœuds) d ’un domaine. Et l ’ensemble des nœuds apparaissant dans l ’ensemble d ’éléments E.
illustrations S=1 S=8 S=4 S=2 S=1 P(e)=1000 P(e)=1
Suppression des composantes non connexes Une composante : Sélection des éléments nœuds à migrer : Redéfinition de amitié : -un ensemble d ’éléments et de nœuds ; -une taille (nb éléments + nb nœuds) ; -un processeur hôte et un d ’accueil. Rq : la composante la plus grande d ’un domaine représentera ce domaine
Exemple d ’application Vue des domaines non connexes.
Exemple d ’application Un cas où la demi étape est nécessaire, sinon inversion des corridors.
Suppression des corridors Un corridor : Sélection des éléments nœuds à migrer : Redéfinition de amitié : -un ensemble d ’éléments et de nœuds ; -une taille (nb éléments + nb nœuds) ; -un processeur hôte et un d ’accueil. Rq : un corridor de b dans a ne l ’est plus forcément après échange des corridors de a dans b, d’où l ’étape 1/2 Suivie par
Deux méthodes de parallélisation : - Une directe qui consiste à développé une version parallèle des opérateurs locaux ; - Une autre itérative qui modifie la partition de façon à rendre actifs les opérateurs n’ayant pu être exécutés tq
Méthode de parallelisation d ’algorithmes locaux L ’algorithme à paralléliser : où : est un opérateur élémentaire à support local. Soit une partition du domaine : les autres :
La seconde se termine lorsque : une illustration : 43 21
Utilisation du repartitionneur pour un mailleur/r leur parallèle Partitionner le domaine R ler à interfaces fixées chacun des sous-domaines But : repartitionner le domaine de façon à équilibrer les sous-domaines et à bouger les interfaces, puis itérer.
Un exemple 2D
Un test en 3D Raffinement uniforme par un facteur 2 d ’une barre. Le but est atteint : - la partition est identique ; - la taille de maille divisée par 2
En génération maillage et partition initiaux : un point relié à toutes les faces frontières. maillage et partition intermédiaires : la minimisation du volume n’est pas terminée. Maillage final conforme.
Un disque de frein ventilé
Un test et des comparaisons
Bibliographie Sur la programmation parallèle : - PVM : « PVM3 user’s guide and reference manual » (1994) - MPI : « The Complete Reference Vol 1 (1995) et Vol 2 (1998) » - open MP : « The OpenMp application program interface (API) specification » (1997) Sur les méthodes numériques parallèles utilisées au CEMEF - la thèse de Stéphane Marie « Un modèle de parallélisation SPMD pour la simulation numérique de procédés de mise en forme des matériaux » (1997) - la thèse d’Etienne Perchat « Mini-Elémént et factorisation incomplètes pour la parallélisation d’un solveur de Stokes 2D. Application au forgeage » (2000)