ch2_Algorithmes_para..
ch2_Algorithmes_para..
ch2_Algorithmes_para..
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Université Du Havre, Master : Mathématiques-Informatique (Matis)<br />
MIS7 : Modèles discrets: évolution, auto-organisation<br />
2010/2011<br />
Nakechbandi M.<br />
moustafa.nakechbandi.univ-lehavre.fr<br />
Chapitre 2 : <strong>Algorithmes</strong> et environnement <strong>para</strong>llèle et distribué
1. Parallélisme<br />
2. La loi d'Amdahl<br />
3. Architecture Parallèle<br />
4. Algoritme systolique<br />
5. Algorithme <strong>para</strong>llèle<br />
6. Ordonnancement<br />
plan
1. Parallélisme : Introduction.<br />
Pour résoudre plus rapidement un problème donné, une idée naturelle consiste à faire<br />
coopérer simultanément plusieurs agents à sa solution, qui travaillerons donc en <strong>para</strong>llèle // :<br />
Si l’on veut monter plus rapidement un mur on fait appel à deux maçons a et b qui peuvent<br />
organiser leur travaille de plusieurs manières :
On remarques plusieurs problèmes ralentissant le travaille en <strong>para</strong>llèle, par exemple :<br />
- Les maçon se gênent mutuellement pour chercher les briques sur le même tas ou<br />
pour les poser.<br />
- Dans la méthode ci-dessus, les ils ne se gênent plus mais n’ont pas la même<br />
distance de briques. Donc a avance plus vite que b.<br />
- On remarque également un problème pour travailler sur la frontière commune.
Parallélisme : Exemple numérique, multiplication de deux matrices
Parallélisme : Pourquoi et Comment<br />
• Pourquoi Paralléliser ?<br />
– Gagner du temps<br />
– La modélisation <strong>para</strong>llèle est parfois évidente<br />
• Comment <strong>para</strong>lléliser ?<br />
– Question non triviale<br />
– Propre à chaque architecture<br />
– Propre à chaque problème
Granularité<br />
Comment découper les traitements ? Quelle sont les tailles des<br />
tâches (en temps d'exécution) ?<br />
Quand la tâche est petite (en temps d'exécution), on parle de <strong>para</strong>llélisme grain<br />
fin. Quand la tâche augmente de taille, on parle de grain moyen<br />
puis de gros grain.<br />
Cela peut se faire par décomposition de domaines : diviser les<br />
données, puis les calculs correspondants.<br />
Exemple : multiplication de matrices<br />
Cela peut aussi se faire par décomposition fonctionnelle : diviser les calculs,<br />
puis les données correspondantes.
2. La loi d’Amdahl.<br />
Soit A l’accélération apportée par un changement d'architecture.<br />
Dans l'hypothèse où un gain de puissance est apporté par ce<br />
changement d'architecture, quel est le gain espéré pour un<br />
programme particulier ?<br />
Hypothèses :<br />
• Ao = l’amélioration<br />
• Temps de calcul avant amélioration T = Tn + To<br />
• Temps de calcul après amélioration T’ = Tn + To’<br />
• T0, T0’ : durée de la partie modifiée<br />
• Tn : dur de la partie non modifiée<br />
• Fraction améliorée : F = To/T<br />
Accélération = A = T / T’ = 1 / (1-F + F/Ao)
La loi d'Amdahl : Exemples<br />
Exemple : Considérons un dispositif d'amélioration dix fois plus rapide que<br />
la machine de base, mais que l'on ne peut utiliser que 40% du temps.<br />
Déterminer l'accélération de la machine.<br />
Solution<br />
• Ao = 10<br />
• Ao = 10<br />
• F = 40/100 = 0.4<br />
• A = 1 / (( 1 - F) + F/Ao)<br />
= 1/ (0.6 + 0.4/10)<br />
= 1/0.64 = 1.56
Exemple : Filtrage d’une image numérique<br />
Le filtrage d’une image numérique passe par deux parties :<br />
partie 1 (intrinsèquement séquentielle)<br />
capture<br />
chargement sur le serveur<br />
Partie 2 (<strong>para</strong>llélisable)<br />
découpage<br />
calculs pour le<br />
traitement de l'image en <strong>para</strong>llele<br />
…<br />
Exercice : En supposant que la partie 1 prend 20% du temps d'exécution du<br />
programme précédent. L’introduction du <strong>para</strong>llélisme (utilisation d’une machine<br />
multiprocesseur avec un algorithme // efficace) peut amélioré 10 fois la partie 2.<br />
Déterminer l'accélération globale ?
3. Architectures <strong>para</strong>llèles : Motivation<br />
• Les besoins des applications en puissance de traitement;<br />
• Les limites de l'approche microprocesseur;<br />
- Limite dans la capacité d'accès à la mémoire.<br />
- La performance ne peut être résolue par un microprocesseur même<br />
si l'évolution des performances des microprocesseurs suit une courbe<br />
exponentielle dans le temps depuis 1985.<br />
• L'existence de la propriété du <strong>para</strong>llélisme dans les applications :<br />
- Parallélisme de données : la même opérations est réalisée par plusieurs<br />
processeurs sur des données différentes:<br />
exemple : addition de deux matrices;<br />
- Parallélisme de contrôle : des opérations différentes sont réalisées simultanément.<br />
indépendance/dépendance du flot<br />
(architecture pipeline : dupliquer les unités de traitements).
Architectures <strong>para</strong>llèles : Définition<br />
• Ordinateur <strong>para</strong>llèle : Ensemble de processeurs capables de travailler<br />
en coopération de manière à résoudre un problème donné .<br />
• Le <strong>para</strong>llélisme est une technique d'accroissement des performances<br />
d'un système fondé sur l'exécution en <strong>para</strong>llèle de plusieurs processus.
Architectures <strong>para</strong>llèles : Organisation<br />
• Construites à partir des ressources qui composent des architectures<br />
séquentielles: UT, UC, mémoire, entrée/sortie (disque, réseau, etc);<br />
• Durant l'exécution, toutes les unités échangent des informations à travers<br />
une ressource supplémentaire : le réseau de communication interne.
Architectures <strong>para</strong>llèles : Classification (Flynn)<br />
1 flux d'instructions >1 flux d'instructions<br />
1 flux de données Séquentielle MISD (Pipeline)<br />
> 1 flux de données SIMD MIMD
Architecture séquentielle: "de von Neuman"<br />
Données<br />
Données<br />
Unité de<br />
Traitement<br />
Mémoire<br />
Ordres<br />
Unité de<br />
Contrôle<br />
Processeur<br />
Instructions
Architecture MISD<br />
- Conserve la même structure, mais les UT et les UC sont découpés en étages;<br />
- Un seul flux de données reçoit plusieurs traitement simultanément;<br />
- Il ne s'agit pas de machines multiprocesseurs, mais le <strong>para</strong>llélisme se situe au<br />
niveau plus bas (au sein même du processeur)<br />
Données<br />
Étage 1 UT<br />
Étage n UT<br />
Données<br />
Mémoire<br />
Ordres<br />
UC1<br />
UC n<br />
Processeur<br />
Instructions
Exemple d’architecture MISD : Architecture pipeline<br />
le traitement des instructions par le processeur peut se décomposer en cinq étapes :<br />
< fetch > : recherche de la prochaine instruction à exécuter ;<br />
< decode > : décodage de l'instruction, avec calculs éventuels des adresses ;<br />
< read > : chargement des opérandes dans l'unit e d'exécution, par lecture à partir des<br />
registres ou de la mémoire ;<br />
< execute > : exécution proprement dite de l'instruction ;<br />
< write > : écriture du résultat vers les registres ou la mémoire.<br />
L’éxecution cette sequence d'instructions sur une machine pipelinee a cinq étages :
Le Modèle SIMD<br />
- Seules les UT sont dupliquées;<br />
- Une seule UC gère le séquencement du programme pour plusieurs UT;<br />
- Toutes les UT fonctionnent en synchronisme et reçoivent les mêmes instructions<br />
en même temps;<br />
- La même opération est appliquée à plusieurs données simultanément, puisque<br />
chaque UT calcule sur un flux de données différent.<br />
Données<br />
UTn UT1<br />
Mémoire<br />
Données<br />
Ordres<br />
Instructions<br />
UC
Exemple de fonctionnement d’une machine SIMD :<br />
Parfor i := 0, 3 //for <strong>para</strong>llèle<br />
Y[i]=Y[i]+T[i] ;<br />
Endpar for<br />
Y=Y+T<br />
Y[0] Y[1] Y[2]<br />
T[0] T[1] T[2] ADD Y, Y, T<br />
Y[0] Y[1] Y[2]<br />
UT1 UT2 UT3 Mémoire du<br />
programme
Le Modèle MIMD<br />
- L'architecture du processeur du modèle séquentiel est dupliquée;<br />
- Chaque processeur est libre d'exécuter des instructions qui lui sont propres sur<br />
un flux de données qui lui est propre;<br />
- Permet d'exécuter un programme différent sur tous les processeurs;<br />
Données<br />
Données<br />
UT UC<br />
ProcesseurN<br />
Mémoire<br />
Instructions<br />
Données<br />
UT UC<br />
Processeur1<br />
Instructions
Architecture MIMD à memoire distribuée
Grille de calcul<br />
C’est une variante de l’architecture MIMD à memoire distribuée<br />
Définition : Une grille de calcul est une infrastructure logicielle et matérielle(pc, supercalculateur,<br />
cluster) qui procure à un utilisateur final un accès à des capacités de<br />
calcul et de stockage de masse hautement distribué.<br />
C’ est une infrastructure virtuelle constituée d'un ensemble de ressources<br />
informatiques potentiellement partagées, distribuées, hétérogènes(l'hétérogénéité se<br />
manifeste aussi bien au sein d'un réseau qu'entre deux réseaux), dé-localisées et<br />
autonomes. L’utilisateur accède la grille à travers une interface standard. La<br />
complexité liée aux différences doit être invisible pour l’utilisateur final.<br />
L’idée : J’ai un accès, je me connecte, j’ai la ressource (stockage, base de données,<br />
puissance de calcul, graphique, instruments de mesure, ... ), je n’ai pas à savoir où<br />
elle est, je l’utilise.<br />
Une grille de calcul permet de faire du calcul distribué : elle exploite la puissance de calcul<br />
(processeurs, mémoires, ...) de milliers d'ordinateurs afin de donner l'illusion d'un<br />
ordinateur virtuel très puissant. Ce modèle permet de résoudre d'importants<br />
problèmes de calcul nécessitant des temps d'exécution très longs en environnement<br />
"classique".<br />
Grid’5000(Lyon, Grenoble), Grid’Mip(Toulouse)
Exemple d’une grille de calcul : Grid5000
Expression de <strong>para</strong>llélisme (architecture MIMD)<br />
Primitive d’expression de <strong>para</strong>llélisme :<br />
– On peux disposer de nouvelles primitives en pseudo code :<br />
• Démarrer(tache(arguments))<br />
Lance la tâche en <strong>para</strong>llèle, de manière non bloquante.<br />
• Envoyer(P, message) et Recevoir(P, message)<br />
Pour échanger des messages avec le processeur P.<br />
– L’implémentation effective de ces primitives dépend du modèle et de<br />
l’architecture :<br />
Exemple : L’environnement MPI qui permet de programmer un ensemble de<br />
PC connectés en reseau local ou d’etablissement.
4. Les algorithmes et réseaux systoliques. (Architecture mixte MISD<br />
SIMD)<br />
Il s'agit de réseaux d'automate cellulaire dont chacun effectue la même opération<br />
arithmétique simple permettant de réaliser en <strong>para</strong>llèle des tâches répétitives.<br />
L’exemple ci-dessous montre un réseau systolique pour la multiplication de matrices,<br />
chaque unité effectue le produit de deux des entrées et ajoute le résultat à la<br />
troisième entrée pour déterminer le signal de sortie.<br />
Ces réseaux permettent la réalisation aisée sur silicium (systèmes VLSI) d e<br />
processeurs dédiés (c'est-à-dire utilisables pour une seule fonction), extrêmement<br />
rapides grâce au <strong>para</strong>llélisme, que l'on utilise à partir d'un ordinateur hôte.<br />
Algoritme systolique : C’est le schema de controle permettant le fonctionnement<br />
d’un reseau systolique.
Exemple : Réseau Systolique pour la multiplication de matrices (3x3)<br />
alignments in time<br />
rows of a<br />
a 0,2 a 0,1 a 0,0<br />
a 1,2 a 1,1 a 1,0<br />
a 2,2 a 2,1 a 2,0<br />
b 2,0<br />
b 1,0<br />
b 0,0<br />
b 2,1<br />
b 1,1<br />
b 0,1<br />
b 2,2<br />
b 1,2<br />
b 0,2<br />
columns of b
Systolic Matrix Multiplication : Illustrated with two 3x3 matrices<br />
alignments in time<br />
a 0,2 a 0,1<br />
a 1,2 a 1,1 a 1,0<br />
a 2,2 a 2,1 a 2,0<br />
a 0,0<br />
b 2,0<br />
b 1,0<br />
a 0,0*b 0,0<br />
b 0,0<br />
b 2,1<br />
b 1,1<br />
b 0,1<br />
b 2,2<br />
b 1,2<br />
b 0,2
Systolic Matrix Multiplication : Illustrated with two 3x3 matrices<br />
alignments in time b 2,0<br />
a 0,2<br />
a 1,2 a 1,1<br />
a 2,2 a 2,1 a 2,0<br />
a 0,1<br />
a 1,0<br />
b 2,1<br />
b 1,1<br />
b 1,0 b 0,1<br />
a0,0*b0,0 +a0,1*b1,0 a0,0 a0,0*b0,1 b 0,0<br />
a 1,0*b 0,0<br />
b 2,2<br />
b 1,2<br />
b 0,2
Systolic Matrix Multiplication : Illustrated with two 3x3 matrices<br />
a 1,2<br />
a 2,2 a 2,1<br />
a 0,2<br />
a 0,0*b 0,0<br />
+a 0,1*b 1,0<br />
+a 0,2*b 2,0<br />
b1,0 a1,1 a1,0*b0,0 a1,0 +a1,1*b1,0 a 2,0<br />
a 2,0*b 0,0<br />
b 2,1<br />
b 2,2<br />
b 1,2<br />
b 2,0 b 1,1 b 1,0<br />
b 0,0<br />
a 0,1<br />
a 0,0*b 0,1<br />
+a 0,1*b 1,1<br />
b 0,1<br />
a 1,0*b 0,1<br />
a 0,0<br />
a 0,0*b 0,2
Systolic Matrix Multiplication : Illustrated with two 3x3 matrices<br />
a 2,2<br />
a 1,2<br />
a 2,1<br />
a 0,0*b 0,0<br />
+a 0,1*b 1,0<br />
+a 0,2*b 2,0<br />
a 1,0*b 0,0<br />
+a 1,1*b 1,0<br />
+a 1,2*b 2,0<br />
b 1,0<br />
a 2,0*b 0,0<br />
a 2,1*b 1,0<br />
a 0,2<br />
b 2,1<br />
a 0,0*b 0,1<br />
+a 0,1*b 1,1<br />
+a 0,2*b 2,1<br />
a 1,0*b 0,1<br />
+a 1,1*b 1,1<br />
b 0,1<br />
a 0,1<br />
b 2,2<br />
b 1,2<br />
a 0,0*b 0,2<br />
+a 0,1*b 1,2<br />
b 2,0 b 1,1 b 1,0<br />
a 1,1<br />
a 2,0 a 2,0*b 0,1<br />
a 1,0<br />
a 1,0*b 0,2
Systolic Matrix Multiplication : Illustrated with two 3x3 matrices<br />
a 2,2<br />
a 0,0*b 0,0<br />
+a 0,1*b 1,0<br />
+a 0,2*b 2,0<br />
a 1,0*b 0,0<br />
+a 1,1*b 1,0<br />
+a 1,2*b 2,0<br />
a 2,0*b 0,0<br />
+a 2,1*b 1,0<br />
+a 2,2*b 2,0<br />
a 1,2<br />
a 0,0*b 0,1<br />
+a 0,1*b 1,1<br />
+a 0,2*b 2,1<br />
b 2,1<br />
a 1,0*b 0,1<br />
+a 1,1*b 1,1<br />
+a 1,2*b 2,1<br />
a 0,2<br />
a 1,1<br />
b 2,2<br />
a 0,0*b 0,2<br />
+a 0,1*b 1,2<br />
+a 0,2*b 2,2<br />
b 2,0 b 1,1 b 1,0<br />
a 2,1<br />
a 2,0*b 0,1<br />
+a 2,1*b 1,1<br />
a 2,0<br />
b 1,2<br />
a 1,0*b 0,2<br />
+a 1,1*b 1,2<br />
a 2,0*b 1,0
Systolic Matrix Multiplication : Illustrated with two 3x3 matrices<br />
a 0,0*b 0,0<br />
+a 0,1*b 1,0<br />
+a 0,2*b 2,0<br />
a 1,0*b 0,0<br />
+a 1,1*b 1,0<br />
+a 1,2*b 2,0<br />
a 2,0*b 0,0<br />
+a 2,1*b 1,0<br />
+a 2,2*b 2,0<br />
a 2,2<br />
a 0,0*b 0,1<br />
+a 0,1*b 1,1<br />
+a 0,2*b 2,1<br />
a 1,0*b 0,1<br />
+a 1,1*b 1,1<br />
+a 1,2*b 2,1<br />
b 2,1<br />
a 2,0*b 0,1<br />
+a 2,1*b 1,1<br />
+a 2,2*b 2,1<br />
a 1,2<br />
a 2,1<br />
a a0,0*b 0,0*b 0,2<br />
+a +a0,1*b 0,1*b 1,2<br />
+a0,2*b2,2 b 2,2<br />
a 1,0*b 0,2<br />
+a 1,1*b 1,2<br />
+a 1,2*b 2,2<br />
b 1,2<br />
a 2,0*b 1,0<br />
+a 2,0*b 1,1
Systolic Matrix Multiplication : Illustrated with two 3x3 matrices<br />
a 0,0*b 0,0<br />
+a 0,1*b 1,0<br />
+a 0,2*b 2,0<br />
a 1,0*b 0,0<br />
+a 1,1*b 1,0<br />
+a 1,2*b 2,0<br />
a 2,0*b 0,0<br />
+a 2,1*b 1,0<br />
+a 2,2*b 2,0<br />
a 0,0*b 0,1<br />
+a 0,1*b 1,1<br />
+a 0,2*b 2,1<br />
a 1,0*b 0,1<br />
+a 1,1*b 1,1<br />
+a 1,2*b 2,1<br />
a 2,0*b 0,1<br />
+a 2,1*b 1,1<br />
+a 2,2*b 2,1<br />
a 0,0*b 0,0*b0,2 0,2<br />
+a 0,1*b 0,1*b1,2 1,2<br />
+a0,2*b2,2 a 1,0*b 0,2<br />
+a 1,1*b 1,2<br />
+a 1,2*b 2,2<br />
b 2,2<br />
a 2,2 a 2,0*b 1,0<br />
+a 2,0*b 1,1<br />
+a 2,2*b 2,2
Algoritme systolique : Exercices<br />
1. Proposer un circuit systolique permettant de multiplier un vecteur (1..3) par une<br />
matrice (1..3)*(1..3) dont la dimension est le plus petit possible et la<br />
performance est le maximum possible.<br />
Idem que l’exercice précédent pour un circuit permettant de comparer deux<br />
2. Idem que l’exercice précédent pour un circuit permettant de comparer deux<br />
mots (un mot est une chaîne de caractères)
5. Algorithme <strong>para</strong>llèle<br />
• Qu’est-ce qu’un algorithme <strong>para</strong>llèle ?<br />
Un algorithme <strong>para</strong>llèle est une méthode de résolution d’un problème dans<br />
laquelle le problème est découpé en sous problèmes de taille inférieure<br />
qui sont résolus de façon simultanée.<br />
• Les différentes approches pour générer un code <strong>para</strong>llèle<br />
– On peut soit <strong>para</strong>lléliser un code séquentiel existant en constituant un<br />
graphe de taches puis lui appliquer des procédures d’ordonnancement<br />
.<br />
– Une autre approche consiste à reprendre le problème à partir de<br />
l’énoncé puis concevoir un algorithme <strong>para</strong>llèle original solvant le<br />
problème.
Domaines de recherche de l’algorithmique <strong>para</strong>llèle<br />
• <strong>Algorithmes</strong> de recherche, de tri et de fusion, algorithmes génétiques.<br />
• <strong>Algorithmes</strong> à caractère numérique : Opérations matricielles, systèmes<br />
d'équations, méthodes directes et itératives<br />
• <strong>Algorithmes</strong> reliés au traitement des images : Transformation, filtrage,<br />
FFT <strong>para</strong>llèle.<br />
• Techniques utilisées en traitement <strong>para</strong>llèle : Équilibrage de la charge,<br />
ordonnancement, détection de fin du traitement.<br />
• Tolérance aux pannes.<br />
• Les outils de développement : Langage, environnement (MPI, PVM)<br />
• Développement pour les Grilles de calcul (GRID).<br />
• Étude de la complexité de calcul en <strong>para</strong>llèle(model théorique PRAM).
Notion de accélération (Speedup) et de d’efficacité<br />
• Accélération (speed-up) =gain de temps obtenu lors de la <strong>para</strong>llélisation<br />
du programme séquentiel.<br />
Soit T1 le temps nécessaire à un programme pour résoudre le problème A sur un<br />
ordinateur séquentiel et soit Tp le temps nécessaire à un programme pour<br />
résoudre le même problème A sur un ordinateur <strong>para</strong>llèle contenant p<br />
processeurs, alors l ’accélération (Speed-Up) est le rapport :<br />
S(p) = T1 / Tp<br />
• Efficacité : Soit T1(n) le temps nécessaire à l’algorithme pour résoudre<br />
une instance de problème de taille n avec un seul processeur, soit Tp(n)<br />
celui que la résolution prend avec p processeurs et soit s(n,p) = T1(n) /<br />
Tp(n) le facteur d’accélération. On appelle efficacité de l ’algorithme le<br />
nombre :<br />
E(n,p) = S(n,p) / p
Exemple : Efficacité / Accélération<br />
Multiplication de matrices ( A moins bon que B)<br />
Algorithme A<br />
Temps en séquentiel : 10 minutes<br />
Nombre de processeurs : 10<br />
Temps en // : 2 minutes<br />
Accélération : 10/2 = 5 (l'application va 5 fois plus vite)<br />
Efficacité : 5/10 = 1/2<br />
Algorithme B<br />
Temps en séquentiel : 10 minutes<br />
Nombre de processeurs : 3<br />
Temps en // : 4 minutes<br />
Accélération : 10/4 = 5/2 = 2,5 < 5<br />
Efficacité : (5/2)/3 = 0,8 > 0,5
6. Ordonnancement : Le model<br />
Le modèle simplifié que nous allons utiliser est le suivant. :<br />
• On part d'un ensemble de machines cible: Σ = {σ 1 , ..., σ s }<br />
• On a également un graphe G des tâches (T,
Ordonnancement : Objectif<br />
Ordonnancement : allocation de dates et de ressources aux tâches.<br />
Diminuer le temps global de calcul : Optimisation d’un critère, d’une fonction<br />
de coût :<br />
· minimisation de la date de fin d’exécution de la dernière tâche (makespan),<br />
. recherche du compromis entre équilibrage de la charge et minimisation du<br />
surcoût dû aux communications...<br />
Ordonnancement : statique, dynamique<br />
. L'ordonnancement statique est une répartition avant exécution,<br />
. alors que l'ordonnancement dynamique se fait pendant l'exécution<br />
· modèles stochastiques : lorsque les durées d’exécution ou les tailles des<br />
volumes communiqués sont des variables aléatoires définies par une<br />
distribution (loi statistique : normale, géométrique, …) ou par des valeurs<br />
avec probabilité.<br />
Le problème posé ici de minimise stochastiquement la durée<br />
d'ordonnancement .
Ordonnancement en présence de communications<br />
le coût de communication dépend<br />
de l'allocation des tâches en général.<br />
Exemple : Machines connectées<br />
par un réseau<br />
à multi niveaux
Ordonnancement avec communications (classification)
Algorithme d’ordonnancement optimal avec duplication autorisée<br />
(Colin, Chrétienne 1991: "Scheduling with Small Communication Delays and Task Duplication", P. C.P.M.<br />
Operations Research vol. 39, n o 4, 680-684, 1991.)<br />
- Lorsque les temps de communication sont plus grands que les durées d'exécution,<br />
le problème est NP-difficile.<br />
- Lorsque les temps de communications sont plus petits que les durées d'exécution,<br />
le problème est polynomial. Un algorithme de complexité O(n 2 ) fournit un<br />
ordonnancement au plus tôt.<br />
Cet algorithme opère par trois phases :<br />
La première phase détermine en parcourant les sommets du Graphe G dans l'ordre d'une<br />
liste topologique, des dates au plus tôt bj pour les copies de chaque tâche. Soit j le<br />
sommet en cours et s le prédécesseur de j tel que b s + p j+ c sj soit maximum. On a<br />
alors:<br />
où P RED(i) est l'ensemble des prédécesseurs de i dans G.
Algorithme d’ordonnancement optimal (suit)<br />
La deuxième phase construit un grophe critique vis-à.-vis des dates b i , qui est le graphe<br />
induit par les arcs (i,j) tels que b i + p i + c ij > b j . Si l'on veut en effet que deux<br />
copies de i et de j soient exécutées respectivement aux dates b i et b j , elles devront être<br />
exécutées sur un même processeur.<br />
La troisième phase utilise le fait que le graphe critique soit une forêt couvrante de G pour<br />
construire effectivement un ordonnancement où chaque copie est exécutée à sa date au<br />
plus tôt. Chaque processeur exécute alors le chemin de tâches menant de la racine à une<br />
feuille de la forêt critique. La figure ci-dessous montre les trois étapes de l'algorithme sur un<br />
exemple.
Notre activité de recherche dans le domaine d’ordonnancement :<br />
Notre projet de recherche porte sur l’impact des variations des <strong>para</strong>mètres de l’environnement<br />
d’exécution (réseau multi niveau ou hiérarchique, processeurs ou réseaux hétérogènes ) sur la<br />
qualité de l’ordonnancement avec communication :<br />
- Architectures hiérarchiques : Dans ces architectures distribuées, les processeurs sont réunis<br />
en clusters, avec des communications rapides entre les processeurs d’un même cluster, et des<br />
communications plus lentes entre clusters. Nous avons un résultat [6] basé sur l’algorithme de<br />
(Colin, Chrétienne 1991) qui a permis de proposer un algorithme polynomial optimal qui<br />
détermine quels sont les groupes de taches qui peuvent, sans perte de performance, être<br />
exécutés dans des clusters différents.<br />
- Les durées d’exécution sont aléatoires : Nous avons proposé un algorithme construisant<br />
efficacement un pré-ordonnancement statique pour ce type de problème [7].<br />
- Problèmes d’ordonnancement lorsque les serveurs d’un réseau ont des performances<br />
différentes ou lorsque le réseau lui-même est hétérogène : C’est typique des problèmes<br />
d’exécution d’un programme distribué sur une grille de calcul, sous certaines hypothèses sur<br />
les performances des serveurs, il était possible de calculer efficacement pour chaque tache sa<br />
date d’exécution au plus tôt sur chaque serveur. A partir de premier résultat, un algorithme<br />
polynomial construisant une solution optimale a été développé [8].<br />
- La prise en compte des risques de pannes : Une évolution de l’algorithme précédent vers une<br />
solution résistant à la panne d’un serveur dans un système de serveurs hétérogène est étudier<br />
dans [9] .
Annexe<br />
Machine <strong>para</strong>llèle : Un peu d’historique<br />
Génèse d'un domaine<br />
• 1950-70 : matériel. Challenge : construire une machine <strong>para</strong>llèle qui fonctionne.<br />
• 1970-80 : matériel maîtrisé, machines commerciales. Nouveau défi : le logiciel.<br />
• 1990 : programmation <strong>para</strong>llèle : affaire de spécialistes.<br />
Défi : faciliter et systématiser la programmation <strong>para</strong>llèle. Emergence des réseaux<br />
de stations et de PCs comme concurrents directs des machines massivement<br />
<strong>para</strong>llèles ==> développement de nouvelles méthodes rapprochement avec<br />
l'informatique distribuée.<br />
Parallélisme informatique distribuée<br />
• --> fin 80 : machines <strong>para</strong>llèles CM-2, CRAY XMP<br />
• fin 80 --> mi-90 : + environnements hétérogènes locaux pvm , IBM SP-x, Origin<br />
• mi-90 --> + environnements hétérogènes globaux ( metacomputing, grappes)<br />
• GRID
Des machines plus récentes (2004)<br />
SGI® Altix® ICE 8200 (2007) est un cluster de calcul sous un format de lames, dense et<br />
ultra-compact. Il est basé sur des processeurs Intel Xeon quadri-coeurs et un réseau<br />
d’interconnexion Infiniband.<br />
L’Altix ICE 8200 peut évoluer jusqu’à plusieurs dizaines de milliers de processeurs (32.768<br />
sockets) pour atteindre des performances au-delà du PetaFlops.<br />
Pour la puissance du calcul au niveau mondial voir : http://www.top500.org/
Références<br />
1. E. Garcia, Polycopié, LIFC Université de Franche Comté.<br />
2. N. Hameurlain, Polycopié, Université de Pau.<br />
3. H. El-Rewini (Auteur), Ted G. Lewis “Distributed and Parallel Computing”<br />
ed. Manning, 1998.<br />
4. M. Pérotin Synthèse des outils de <strong>para</strong>llélisation,, Polycopié, LI Tours<br />
5. A. Legrand - Y. Robert Algorithmique Parallèle, ed. Dunod, 2003.<br />
6. J.-Y. Colin, M. Nakechbandi., P. Colin, and F. Guinand "Scheduling Tasks with<br />
Communication Delays on Multi-Levels Clusters" , M., PDPTA'99 : Parallel and Distributed<br />
Techniques and Application, June 1999, Las Vegas, U.S.A.<br />
7. M. Nakechbandi, J.-Y. Colin , C. Delaruelle, "Bounding the makespan of best preschedulings<br />
of task graphs with fixed communication delays and random execution times on<br />
a virtual distributed system", OPODIS02, Reims, pp 225-233 (2002).<br />
8. M. Nakechbandi, J.-Y. Colin, P. Colin "A multi-valued DAG model and an optimal PERT-like<br />
Algorithm for the Distribution of Applications on Heterogeneous Computing Systems",.<br />
PDPTA'05, Las Vegas, Nevada, USA, pp 876-882 (2005).<br />
9. M. Nakechbandi, J.-Y. Colin, “An Algorithm and Some Numerical Experiments for the<br />
Scheduling of Tasks with Fault-Tolerancy Constraints on Heterogeneous Systems”,<br />
HPCS’08 Nicosia, June 2008, Cyprus.