Conception des algorithmes parallèles Professeur: Nilo STOLTE Chargé de Cours: Mohammed ELKANOUNI Département de génie logiciel et des TI
Sommaire Méthodologie de conception Partitionnement Communication Agglomération Répartition Exemple de conception
Méthodologie de conception Partitionnement Définition des tâches Communication Identifier les exigences Agglomération Regroupement des tâches Répartition des tâches Placer les tâches
Partionnement Objectif: identifier les tâches concurrentes Décomposition en granularité fine Partitionnement basé sur les données: décomposition par domaine Partitionnement basé sur les fonctions: décomposition par fonction
Décomposition par domaine Utilisée lorsque les mêmes traitements sont appliqués sur différentes données Décomposer les données en région de façon â minimiser le transfert de données entre les tâches
Décomposition par fonction Basée sur les fonctions à exécuter Augmente la modularité Communication entre les modules
Grille du partitionnement Y-a-t-il plus de tâches que le nombre de processeurs alloués? Y-a-t-il de calcul ou de stockage redondant ? Les tâches sont de tailles comparables?
Communication Identifier les exigences de la communication Si une tâche à besoin de donnée d’une autre tâche la communication est essentielle
Structure de la communication Locale (vs. globale) Si le nombre des voisins est petit Structurée (vs. non structurée) Si les tâches forment une structure régulière (arbre, grille) Statique (vs. dynamique) Si la structure ne change pas en fonction du temps Synchrone (vs. asynchrone) Si l’émetteur et le récepteur participent
Communication locale Chaque tâche communique avec un nombre petit de tâches Ex. problème de différence fini 2D: Xi,j(t+1) = 4Xi,j(t) + Xi-1,j(t) + Xi+1,j(t) + Xi,j-1(t) + Xi,j+1(t) 8
Communication locale –suite- L’algorithme Pour t = 0 à T Envoyer Xi,j(t) aux quatre tâches voisines recevoir Xi-1,j(t) , Xi+1,,j(t) , Xi,j-1(t) , Xi,,j+1(t) Calculer Xi,,j(t+1) Fin tâche
Communication globale Communication demande la participation d’un grand nombre de tâches Exemple: Calcul de la somme
Communication globale: Solution 1 N tâches pour calculer les Xi Une tâche pour calculer S Tâche S risque d’avoir trop de communication
Communication globale: Solution 2 N tâches pour calculer les Xi et la somme partielle: Si= Xi + Si-1 N-1 pas de calcul pour le calcul de S N-1 communications série
Communication globale: Solution 3 Diviser pour conquérir Chaque sous-tâche est divisée en 2 sous-tâches log2N pas de calcul (Ex: pour 1024Xi 10 pas)
Communication non structuré et dynamique Exemple: problème des éléments finis Le nombre des voisins sont différents La structure de communication peut être modifiée si la pièce subit des forces
Communication synchrone-asynchrone Communication de façon ordonnée et prévue L’émetteur et le récepteur sont bien identifiés Asynchrone: L’émetteur ne sait pas quand le récepteur a besoin de l’information Le récepteur peut ne pas avoir d'idée sur l'émetteur
Grille de communication Équilibre: une tâche doit communiquer beaucoup plus que les autres? Une tâche doit communiquer avec trop de tâches? La communication peut se faire en parallèle avec le calcul?
Agglomération Agglomération: regroupement des tâches pour former des tâches plus grandes But: optimiser l’algorithme Coût des communications Coût des latentes de communications
Agglomération idéale Chaque processeur a une tâche agglomérée Les tâches ont des charges égales Minimum de communication inter-processeur L’agglomération se fait de façon paramétrique (pour la portabilité, la dimensionabilité) Éviter de réécrire le code à cause de l’agglomération
Les stratégies de l’agglomération Réduire la dimension Augmenter la granularité Fusionner des sous-arbres
Facteurs à considérer lors de l’agglomération Conserver la flexibilité, la dimensionnabilité pour s’adapter au: changement de l’ordinateur changement du nombre de processeurs la capacité de calculer et de communiquer de façon concurrentielle Coût de développement: Éviter une nouvelle conception, la réécriture de code. Considérer tout l’ensemble du projet Une stratégie peut être bonne pour une partie du projet mais mauvaise pour d’autres parties
Grille d’agglomération On a réduit la communication et augmenté la localité? La duplicité de calcul (si il y en a) vaut-elle le coût? Les tâches ont-elles des charges équivalentes? Les tâches peuvent-elles encore s’exécuter en parallèle (concurrence) ? L’agglomération demande-t-elle une nouvelle conception ou réécriture de code?
Répartition des tâches Distribution des tâches entre les processeurs: Maximiser la concurrence Minimiser la communication Techniques: Problèmes réguliers: agglomérer en P tâches Problèmes irréguliers: utiliser la répartition par le balancement de charge statique Problèmes irréguliers dans le temps: balancement de charge dynamique
Techniques de balancement de charge Balancement de charge statique Bissection récursive Algorithmes locaux Algorithmes probabilistes Répartition cyclique Balancement de charge dynamique (Ordonnancement des tâches) Patron employé (manager-worker, master-slave) : centralisé et hiérarchique Arrangement décentralisé
Bissection récursive Méthode bissection récursive: applicable typiquement aux problèmes de type grille diviser d’abord en 2 groupes de tâches de charge approx. égale et le nombre de communications minimal chaque groupe est divisé en d’autres sous-groupes avec les même critères principe diviser pour conquérir simple mais non optimisé pour la communication Variance de la bissection récursive diviser d’abord en deux de charge 1/P et (P-1)/P (P = nombre de processeurs) diviser ensuite en deux de charge 2/P et (P-2)/P. Le groupe 2/P inclut le groupe 1/P de la première division
Algorithmes locaux Les tâches sont réparties d’une façon quelconque initialement Les processeurs se communiquent périodiquement pour s’informer de leur charge de travail. Les processeurs qui ont trop de charge déchargent vers ceux qui ont moins de charge (vases communicantes). Bonne méthode pour le cas où les tâches sont créées / détruites dynamiquement
Algorithmes probabilistes Distribuer au hasard les tâches entre les processeurs Bonne chance de balancement de charge quand le nombre de tâches >> nombre de processeurs Mauvaise pour la communication
Répartition cyclique Peut adresser la dé balancement de charge dynamique et statique
Structure patron-employé Le patron donne l’ordre de l’exécution des tâches aux travailleurs Un employé peut demander au patron l’exécution d’une tâche par un autre employé Inconvénients: gestionnaire peut devenir un goulot d’étranglement
Patron-employé hiérarchique un patron de haut niveau Les employés sont divisés en groupes, chaque groupe a un patron Cette organisation peut avoir plusieurs niveaux Avantage: diminuer la charge des patrons
Arrangement décentralisé Pas de patron Chaque employé en attente demande du travail des autres employés.
Exemples: simulation de la chaleur Considérons une plaque métallique rectangulaire de longueur L et largeur l
Description du problème Soit T(x,y,t) la température du point de coordonnées (x,y) à l’instant t On suppose que la conductivité C de la plaque est uniforme dans toute la plaque métallique L'équation de transfert de la chaleur en 2D est donnée par la formule d’Euler suivante:
Description du problème Les conditions aux limites sont fixées aux frontières de la plaque (x= 0, x=l, y=0, y=L) : T(0,y,t)=f1(y) T(L,y,t)=f2(y) T(x,0,t)=f3(x) T(x,l,t)=f4(x) Les conditions initiales à l'instant t=0 T(x,y,0)=f(x,y)
Partitionnement On partitionne la plaque en petites subdivisions (mn) On suppose que ces subdivisions sont assez petites pour considérer que la chaleur est uniforme dans chaque subdivision n m
Passage du continu au discret On discrétise également le temps La simulation s’effectue toutes les td secondes. U(i,j,k) est la température de la subdivision (i,j) à l’instant ktd (i varie de 0 à m-1 et j varie de 0 à n-1) : U(i,j,k)=T(iL/m, jl/n, k td)
Passage du continu au discret Pour simplifier, on prend L/m=l/n=h et C=1 On suppose que h et td sont assez petites On démontre que la formule discrétisée d’Euler est la suivante : U(i,j,k+1)=(1-4 td /h²)U(i,j,k)+( td/h²) [U(i-1,j,k)+U(i+1,j,k)+U(i,j-1,k)+U(i,j+1,k)]
Exemple des conditions initiales On s'arrange de sorte que le centre de la plaque soit plus chaud que toute autre subdivision et plus on s’éloigne du centre, plus la température diminue jusqu’à s’annuler aux frontières : Les températures aux frontières sont gardées nulles pendant toute la simulation
Questions Si on considère que le calcul d'une subdivision de la plaque constitue une tâche. Que peut-on dire sur la communication des tâches constituées du calcul de la température de la subdivision (i,j)?
Questions On affecte une tâche à chaque calcul de la température d'une subdivision de la plaque métallique On dispose de P processeurs, on veut distribuer ces tâches sur les processeurs disponibles, de sorte à équilibrer les charges sur les processeurs. Donner la moyenne des tâches par processeur. Expliquer comment on va agglomérer et répartir les tâches sur les processeurs Combien de messages les processeurs vont-ils échanger au total ? Pour chaque pas de temps, combien de messages chaque processeur va t-il échanger avec ses voisins? Est ce que tous les processeurs vont avoir des charges de travail égaux ?