10.08.2013 Views

ch2_Algorithmes_para..

ch2_Algorithmes_para..

ch2_Algorithmes_para..

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!