these_Daouda_presentation - TEL (thèses-en

publicité
Algorithmes parallèles auto-adaptatifs et
applications
Daouda TRAORÉ
Directeurs de thèse
Jean-Louis ROCH & Denis TRYSTRAM
Projet MOAIS
Laboratoire d’Informatique de Grenoble (UMR 5217), France
Vendredi 19 Décembre 2008
Motivations

Evolution des machines parallèles:
de machines avec processeurs identiques vers:
 Grilles de calcul
=> ressources hétérogènes et dynamiques
 Systèmes multi-processus (Processeurs multi-cœurs, SMP, MPsoc)
 applications concurrentes sur une même unité
=> les cœurs apparaissent comme de vitesses variables
 Processeurs graphiques : GPUs + CPUs
=> hétérogénéité, fréquences et opérations différentes
Questions: Est-ce qu’un algorithme parallèle peut fonctionner dans ce contexte?
Avec quelles garanties de performance ?
Sous quelles hypothèses?
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
2/52
Evolution de la programmation parallèle
 Initialement: processeurs identiques (MPI)
 Aujourd’hui: Interfaces de haut-niveau permettant d’abstraire l’architecture.
Grille
Multi-coeurs, SMP
GPU
Cuda
Google MapReduce
OpenMP, Cilk++, intel TBB
Athapascan/Kaapi
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
3/52
Objectif de la thèse
Construction d’algorithmes parallèles adaptatifs

S’adaptent à la plate-forme d’exécution
-

Inconscients du nombre de processeurs (en anglais, processor oblivious)
Adaptation à la charge de la plate-forme
Avec des garanties d’efficacité
-
Temps d’exécution si possible optimal p/r aux ressources (dynamiquement) allouées
Définition (algorithme auto-adaptatif)
Un algorithme auto-adaptatif est un algorithme qui est capable de changer
automatiquement son comportement en fonction de son contexte d‘exécution (données
manipulées, plate-forme d’exécution, occupation des processeurs, …).
• Contexte: LIG / EP INRIA Moais:
Thème sur la conception d’algorithmes adaptatifs [Roch&al gzip2001, TSI2005,...]
Master ROCO D. Traoré 2005 : un algorithme de préfixe adaptatif (mais clairvoyant…)
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
4/52
Plan du mémoire et contributions
1.
Introduction
2.
Programmation parallèle
3.
Algorithmes parallèles adaptatifs[définitions]
4.
Un algorithme adaptatif pour le calcul parallèle des préfixes
5.
Algorithmes adaptatifs de tri parallèle
6.
Schéma générique des algorithmes parallèles adaptatifs
7.
Application du schéma à la librairie standard STL
8.
Conclusion et perspectives
[objectifs et contributions, organisation]
[notions]
CARI’06]
Daouda Traoré
[EUROPAR’06,
[RENPAR’08]
[PDP’08, EUROPAR’08]
[EUROPAR’08, MSAS’08]
Algorithmes parallèles auto-adaptatifs et applications
5/52
Plan de la présentation

Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes

Ordonnancement par vol de travail

Schéma générique adaptatif

Algorithme adaptatif pour le calcul parallèle des Préfixes

Application du schéma à la STL

Conclusion et perspectives
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
6/52
Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes

Calcul des préfixes
– Entrée : x0, x1, …, xn
– Sortie : p0, p1, ..., pn
i
avec
p i =  xi
k =0

Applications : parallélisation de boucles, additions modulaires [Blelloch’89]

Algorithme séquentiel :
for(p[0]=x[0], i=1; i <= n; i++) p[i]=p[i-1]*x[i]; // n opérations

Borne inférieure sur p processeurs identiques :

Parallélisation optimale sur p processeurs identiques [Snir’86, Nicolau-Wang’96]
Daouda Traoré
 2n 
 p  1


[Fich’83]
Algorithmes parallèles auto-adaptatifs et applications
7/52
Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes
 Un nouvel algorithme optimal pour le calcul des préfixes [chap. 3, pages 27-36]
- Soit s et q le quotient et le reste de la division de n+1 par p+1:
n+1 = s(p+1) + q
 Division du tableau initial en p+1 blocs de taille éventuellement différentes
p+1 blocs
p-q+1 blocs
s+1
Daouda Traoré
…
q-1 blocs
s+1
s+2
…
s+2
Algorithmes parallèles auto-adaptatifs et applications
s-p+1
8/52
Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes
Algorithme statique en p+1 blocs
…
s+1
p-1
s+1
…
s+2
s+2
1
p-1 étapes
p-1
1
…
…
p-1
s+1-p
Daouda Traoré
s+1-p
s+2-p
1
s+2-p
Algorithmes parallèles auto-adaptatifs et applications
s+1-p
9/52
Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes
 Analyse théorique du temps d’exécution de l’algorithme proposé
Théorème [chap. 3, page 30]
Si 0 ≤ q ≤ 1 et (p+3)/2 ≤ q ≤ p, alors le temps d’exécution de l’algorithme (optimal) sur
p processeurs identiques vérifie
 2n 
Tp = 

 p  1
Théorème [chap. 3, pages 31 et 32]
Si 2 ≤ q ≤ (p+3)/2, alors le temps d’exécution de l’algorithme à 1 de l’optimal sur p
processeurs identiques vérifie
 2n 
Tp = 
 1
 p  1
et le nombre d’opérations vérifie :

 2np 
Wp = 

 p  1
Remarque: Une variante donne un temps toujours optimal, mais n’a pas été programmée
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
10/52
Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes

Machine AMD Opteron
4 processeurs
2,6
accélération
2,4
2,2
n grand, temps d’une opération
très petit (temps d’addition de deux
implantation "algo
proposé"
implantation "NicolauWang"
borne inférieure
2
1,8
1,6
Doubles par exemple).
Dans l’algorithme de Nicolau-Wang
On a 2n/(p+1) synchronisations
1,4
1,2
1
n=21
n=141
n=261
n=381
n=421
1 processeur
taille
0,14
temps
0,12
n petit, temps d’une opération assez élevé
0,1
implantation "algo
proposé"
implantation "NicolauWang"
implantation
"séquentielle"
0,08
0,06
0,04
0,02
0
n=100001
10000001
taille
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
11/52
Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes
 Inconvénients de la parallélisation sur des processeurs identiques
 Nombre d’opérations : toujours le même si les p processeurs initialement prévus
pour l’exécution ne sont pas disponibles.
 Exemple : si on suppose que
 Un seul processeur exécute l’algorithme parallèle
 Les autres étant mobilisés pour d’autres calculs
=> le nombre d’opérations effectuées par un seul processeur est
 2np 
 p  1


 L’algorithme optimal sur processeurs identiques n’est pas performant
 Si les processeurs sont de vitesses différentes (temps d’exécution final = temps
d’exécution du processeur le plus lent)
 Si le temps de l’opération * est variable
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
12/52
Plan de la présentation

Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes

Ordonnancement par vol de travail

Schéma générique adaptatif

Algorithme adaptatif pour le calcul parallèle des Préfixes

Application du schéma à la STL

Conclusion et perspectives
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
13/52
Ordonnancement par vol de travail
Principe
 Suit le principe glouton : à tout instant où il existe une tâche prête non encore
ordonnancée, tous les processeurs sont actifs.
 Algorithme distribué
 Chaque processeur gère localement une pile des tâches qu’il a rendues prêtes
(créées, ou débloquées).
steal
tâches
P0
P1
P2
[Blelloch’90, ], [Leiserson & Kuszmaul 2001]
 Lorsqu’un processeur devient inactif, il choisit (au hasard) un processeur
dont la pile en cours d’exécution contient une tâche prête et lui vole une tâche
(la plus ancienne, en haut de la pile (FIFO).
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
14/52
Modèle de coût associé au vol de travail (1/2)
Notations
• W = travail = le nombre d’opérations de l’algorithme parallèle sur 1
processeur
• Tp = la durée d’exécution de l’algorithme parallèle sur p processeurs
• D
= la profondeur de l’algorithme parallèle (le nombre d’opérations sur
T p
le chemin critique)
  P i (t)
• Pave = la vitesse moyenne des p processeurs : P ave = t=1 i=1
T.p
Théorème[Arora, Blumofe, Plaxton 02, Bender, Rabin 02]

Avec une grande probabilité;
 Le temps d’exécution Tp d’un programme utilisant l’ordonnancement par
vol de travail est majoré par :
W
D
Tp 
pP ave
 O(
P ave
)
 Le nombre de vols (réussis ou échoués) est inférieure à O(p.D)
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
15/52
Modèle de coût associé au vol de travail (2/2)
 Efficacité de la parallélisation
•
•
Wseq = travail de l’ algorithme séquentiel
Wseq
Tseq = temps d’exécution de l’algorithme séquentiel : Tseq =
P ave
 Intérêt : Si W ≈ Wseq et D très petit,
Tp =
Tseq
W
D
 O(
)
pP ave
P ave
p
 En général W ≥ c1Wseq, c1 mesure le surcoût dû à l’ordonnancement et au
parallélisme.
 Surcoût de parallélisme
 Gestion des tâches : tâches empilées dans une pile
 Exemple : algorithme récursif,
 Grain fin : surcoût arithmétique (récursivité)
 Minimisation du surcoût d’ordonnancement
 Principe du travail d’abord[Frigo et al98, Roch01]
Ce principe consiste à minimiser le surcoût de création de tâches de
l’ordonnancement par vol de travail.
 Appels de création de tâches traduits en appel local de fonction séquentielle.
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
16/52
Bibliothèques implémentant le vol de travail
 Cilk[ Frigo et al 98]
 Création de tâches : spawn
 Synchronisation : sync
 Architectures cibles : mémoires partagées
 Athapascan/Kaapi
 Athapascan [Roch et al, PACT 98] : interface applicative





cilk A () {
x = spawn C();
y = spawn B();
sync;
return (x+y);
}
A (Shared_w<int> res) {
shared<int> x;
shared<int> y;
Basé sur le graphe de flot de données
}
Création de tâches : Fork
Création de données : Shared
Architectures cibles : mémoires partagées et distribuées
Kaapi [Gautier et al 07] : moteur exécutif, qui supporte Athapascan
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
Fork<C>()(x);
Fork<B>()(y);
Fork<M>()(x, y, res);
17/52
Ordonnancement par vol de travail : limite
 Emulation séquentielle de l’algorithme parallèle
 Nombre d’opérations arithmétiques supérieur à celui de l’algorithme
séquentiel
 Exemple : Calcul des préfixes, optimal avec n opérations !
: x0, x1, …, xn
- Sortie : p0, p1, ..., pn
- Entrée
i
avec
p i =  xi
k =0
 Un algorithme parallèle récursif (Diviser Pour Régner) :
pref(n/2)
pref(n/2)
…
final(n/2)
W(n) = 2W(n/2) + n/2 = (1/2) n*log(n)
=> l’émulation séquentielle de l’algorithme parallèle fait plus
d’opérations que l’algorithme séquentiel optimal !
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
18/52
Plan de la présentation

Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes

Ordonnancement par vol de travail

Schéma générique adaptatif

Algorithme adaptatif pour le calcul parallèle des Préfixes

Application du schéma à la STL

Conclusion et perspectives
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
19/52
Schéma générique adaptatif
 Ordonnancement par vol de travail: amélioration
 Principe de base
[Roch&al TSI 2005]
Remplacer l’émulation séquentielle de l’algorithme parallèle par un « vrai »
algorithme séquentiel plus efficace.
=>Utiliser le couplage de deux algorithmes :
 Un séquentiel: qui minimise le travail (nombre d’opérations) W
 Un parallèle: qui minimise la profondeur parallèle D
 Points clefs:
 À tout instant, chaque processus actif exécute un algorithme
séquentiel, mais peut être volé par un processus inactif
 Un processus « suit » l’algorithme séquentiel (optimal)
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
20/52
Couplage adaptatif de deux algorithmes

Un processeur occupé a une tâche et l’exécute avec un algorithme
séquentiel
Ps
T0.Run_seq()
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
21/52
Couplage adaptatif de deux algorithmes

Un processeur devient libre et exécute une opération d’extraction de travail
chez un processeur actif sans l’interrompre.
Ps
T0.Run_seq()
steal
Pv
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
21/52
Couplage adaptatif de deux algorithmes

Un processeur devient libre et exécute une opération d’extraction de travail
chez un processeur actif (victime) sans l’interrompre.
Ps
T0.Run_seq()
Pv
T’0.Run_seq()
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
21/52
Couplage adaptatif de deux algorithmes

La victime a fini sa tâche et préempte son voleur
Ps
Pv
T’0.Run_seq()
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
21/52
Couplage adaptatif de deux algorithmes

La victime effectue un saut (jump) sur le travail déjà fait par le voleur, le
voleur finalise éventuellement ses calculs grâce aux résultats de la victime.
Ps
Ps
T0.Run_seq()
jump
Pv
T’0.Finalize
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
21/52
Couplage adaptatif : Amortissement des
synchronisations (extraction séquentielle du travail)

A la fois les processeurs victime et voleur peuvent modifier les informations sur
le travail en cours de traitement
 Nécessité de se synchroniser ( pour la cohérence des données)
Côté victime
work extract_seq() {
lock(); //verrouiller
ws = NextWorkSeq();
unlock(); //déverrouiller
return ws;
}
Côté voleur
work extract_par() { //Micro-loop
lock(); //verrouiller
wv = WorkToSteal();
unlock(); //déverrouiller
return wv;
}
Côté victime
Run_seq() {
While((ws= extract_seq())≠Ø) {
local_run(ws) // Nano-loop
}
}
Daouda Traoré
- Si taille(ws) est petite => surcoût élévé.
- Choix de taille (ws) :
taille (ws) = profondeur (wrest);
=> travail arithmétique ≈ Wseq
Algorithmes parallèles auto-adaptatifs et applications
22/52
Couplage adaptatif : Amortissement des
synchronisations (extraction séquentielle du travail)
Exemple : transform STL : boucle avec n calculs indépendants
f1
ni=l-fi
f2
alog(n1) alog(n2)
l
1,4
1,2
1
Temps[s]
Machine utilisée :
AMD Opteron Opteron 875
2,2 Ghz,
Compilateur gcc, option –O2
transform
STL
transform
adapt
0,8
0,6
0,4
0,2
0
1,00E 1,00E 1,00E 1,00E 1,00E
+05
+06
+07
+08
+09
taille
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
23/52
Schéma adaptatif : Amortissement du surcoût
arithmétique

Pour Certains d’algorithmes:
–
–

Wseq n’est pas connu d’avance
W > Wseq
Exemple: algorithme find_if qui permet de trouver le premier élément d’une séquence
vérifiant un predicat
P0
P1
P2
P3
position ou se trouve l’élément
 Le temps séquentiel de l’algorithme est Tseq = 2
 Le temps final de l’algorithme parallèle est le temps final du processeur ayant
terminé le dernier. Donc T4 = 6
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
24/52
Schéma adaptatif : Amortissement du surcoût
arithmétique
 Pour s’adapter : division dynamique du travail global en des étapes
(Macro-loop [Danjean, Gillard, Guelton, Roch, Roche, PASCO’07]),
avec synchronisation après chaque pas schéma de type algorithme de Floyd
n_cur elts
n_cur / log(n_cur)
 Exemple : find_if
P0, P1, P2
P0, P1, P2
B1
Daouda Traoré
B2
P0, P1, P2
B3
Algorithmes parallèles auto-adaptatifs et applications
25/52
Schéma adaptatif : Amortissement du surcoût
arithmétique

Exemple : find_if STL
 Comparaison avec find_if parallèle MPTL [Baertschiger 06]
Machine utilisée :
AMD Opteron (16 cœurs);
Données : doubles;
Taille tableau : 106;
Position élément : 105;
Temps STL : 3,60 s;
Temps prédicat ≈ 36μ
Accélération inférieure à 1
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
26/52
Schéma adaptatif : Amortissement du surcoût
arithmétique

Exemple : find_if STL
 Accélération par rapport au temps STL en fonction de la position où se
trouve l’élément
16
Machine utilisée :
AMD Opteron (16 cœurs);
Données : doubles;
Taille tableau : 106;
Temps prédicat ≈ 36μ
accélération
14
12
pos=100
pos=1000
10
pos=10000
pos=100000
8
pos=500000
6
pos=1000000
accélération idéale
4
2
0
1
3
5
7
9
11 13 15
Nombre de processeurs
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
27/52
Schéma adaptatif : Analyse théorique

Trois niveaux de boucles utilisés dans l’algorithme du du schéma
 nano-loop => limite le surcoût de synchronisation
 micro-loop => permet le vol de travail et la préemption
 macro-loop => limite le surcoût arithmétique
 Analyse de la complexité de l’algorithme du schéma
Théorème [chap. 6, pages 89 et 90]
Si le temps parallèle d’exécution d’un algorithme sur un nombre infini de processeurs
fait (1+)Wseq opérations avec  ≥ 0, alors avec une grande probabilité,
Tp 
Daouda Traoré
 1
Wseq  ( D log 2 Wseq )
p
Algorithmes parallèles auto-adaptatifs et applications
28/52
Spécification et implantation du Schéma
Interface C++ sur Kaapi



Suit le schéma de l’algorithme adaptatif
Classes à instancier : WorkAdapt, JumpWork, FinalizeWork
Les fonctions à instancier :
Fonctions
Spécifications
bool extract_seq()
extrait une partie du travail local
bool extract_par()
appelée lors du vol (extraction du parallélisme
void local_run()
exécution séquentielle efficace
void join(const WorkAdapt stolenwork)
fusionne les résultats
void jump(JumpWork* &)
construit le travail à sauter
void after_jump(const JumpWork* )
donne les informations sur le travail sauté
bool extract_nexmacro_work()
extrait la taille d’une macro-étape
bool get_finalize_work (FinalizeWork*&)
donne le travail à finaliser
void get_main_result()
retourne le résultat de la victime
void get_thieft_result()
retourne le résultat du voleur
void must_jump()
autorise le saut
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
29/52
Spécification et implantation du Schéma
Interface C++ sur Kaapi
Pour construire un algorithme adaptatif, l’utilisateur remplit les fonctions nécessaires

Class MyWorkAdapt : public WorkAdapt {
…
bool extract_seq() {
….
}
bool extract_par() {
….
}
void local_run() {
}
void join(const WorkAdapt stolenwork) {
….
}
…
}

Lancement du moteur adaptatif sur le travail construit
void MyalgoAdapt (… ) {
MyWorkAdapt my_work = new MyWorkAdapt(….);
adapt::run(my_work);
}
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
30/52
Spécification et implantation du schéma
Gestion des vols

Implémentation « sans pile » du couplage séquentiel-parallèle


Mais le parallélisme récursif sans surcoût peut rester géré par Kaapi avec sa pile
Gestion des vols:
 Remplacer la pile distribuée de tâches créées par une liste distribuée de tâches
volées
 Intérêt : peu de vols => peu de tâches insérées dans la liste; les surcoûts de
création sont aussi limités.
 Gestion lors de la préemption :
w
w
v11
v1
v12
v2
v11
v3
(a) avant préemption de v1
Daouda Traoré
v12
v2
(b) après préemption de v1
v3
v31
v31
v12
v12
Algorithmes parallèles auto-adaptatifs et applications
31/52
Plan de la présentation

Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes

Ordonnancement par vol de travail

Schéma générique adaptatif

Algorithme adaptatif pour le calcul parallèle des Préfixes

Application du schéma à la STL

Conclusion et perspectives
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
32/52
Algorithme adaptatif du calcul parallèle des préfixes (1/7)

Calcul des préfixes
–
–
Entrée : x0, x1, …, xn
Sortie : p0, p1, ..., pn
i
avec
p i =  xi
k =0

Algorithme séquentiel :
for(p[0]=x[0], i=1; i <= n; i++) p[i]=p[i-1]*x[i]; // n opérations

Borne inférieure sur p processeurs identiques :  2n 
p 1

Parallélisation optimale sur p processeurs identiques [Snir’86, Nicolau-Wang’96]


[Fich’83]
 Ne sont pas adaptés si le temps de l’opération * varie ou si les processeurs
sont à vitesse variable

Parallélisation sur un nombre non borné de processeurs [Ladner-Fischer’80, LinSu’02]
 Peuvent être émulés par vol de travail mais effectuent plus de 2n opérations

But : trouver un algorithme adaptatif qui se comporte optimalement
[EUROPAR’2006, CARI’2006]
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
33/52
Algorithme adaptatif du calcul parallèle des préfixes (2/7)
a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13
Ps
p1 p2 p3
pi=a0*…ai
a4 a5 a6
ai=a4*…*ai
Pv
a5 a6
Pv
pi=a0*…ai
Ps
1ère étape de la
macro-loop
1 2 3 4 5 6 7 8
temps
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
34/52
9
Algorithme adaptatif du calcul parallèle des préfixes (2/7)
a1 a2 a3
a6 a7 a8 a9 a10 a11 a12 a13
Ps
p1 p2 p3
pi=a0*…ai
a6
p3
a4 a5
ai=a4*…*ai
Pv
a5 a6
Pv
pi=a0*…ai
Ps
1ère étape de la
macro-loop
1 2 3 4 5 6 7 8
temps
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
34/52
9
Algorithme adaptatif du calcul parallèle des préfixes (2/7)
a1 a2 a3
a6 a7 a8 a9 a10 a11 a12 a13
Ps
p1 p2 p3 jump p6 p7 p8 p9
pi=a0*…ai
a4 a5
p4 a
p54
i=a10*…*ai
ai=a4a*…*a
i
a10 a11 a12
Pv
a11 a12
Pv
pi=a0*…ai
1ère étape de la
macro-loop
Ps
2ème étape de la
macro-loop
1 2 3 4 5 6 7 8
temps
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
34/52
9
Algorithme adaptatif du calcul parallèle des préfixes (2/7)
a1 a2 a3
a6 a7 a8 a9
a13
Ps
p1 p2 p3 jump p6 p7 p8 p9
pi=a0*…ai
a12
p9
a4 a5
p4 p5
ai=a10*…*ai
a10 a11 a12
Pv
a11 a12
Pv
pi=a0*…ai
1ère étape de la
macro-loop
Ps
2ème étape de la
macro-loop
1 2 3 4 5 6 7 8
temps
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
34/52
9
Algorithme adaptatif du calcul parallèle des préfixes (2/7)
a1 a2 a3
a6 a7 a8 a9
p1 p2 p3 jump p6 p7 p8 p9
a12 a13
jump
Ps
p12 p13
pi=a0*…ai
T2 = 9
temps optimal = 9
a4 a5
a10 a11
p4 p5
p10 a
p11
ai=a10*…*ai
Pv
Pv
pi=a0*…ai
1ère étape de la
macro-loop
Daouda Traoré
2ème étape de la
macro-loop
Ps
3ème
étape de la
macro-loop
Algorithmes parallèles auto-adaptatifs et applications
1 2 3 4 5 6 7 8
temps
34/52
9
Algorithme adaptatif du calcul parallèle des préfixes (3/7)
 Analyse théorique du temps d’exécution
Théorème [chap. 4, pages 53 et 54]
Le temps Tp sur p processeurs du calcul n+1 préfixes par l’algorithme adaptatif vérifie
Avec une grande probabilité :
Tp 
Daouda Traoré
2n
 (log 3 n)
( p  1)P ave
Algorithmes parallèles auto-adaptatifs et applications
35/52
Algorithme adaptatif du calcul parallèle des préfixes (4/7):
validation expérimentale
Taille des données : n=3.105, temps d’une opération ≈ 1ms
accélération

4,5
9
4
3,5
3
8
7
6
5
accélération
optimale
préfixe
adaptatif
2,5
2
1,5
1
0,5
0
1
2
3
4
5
6
7
4
3
2
1
0
1
8
2
4
6
8 10 12 14 16
Nombre de processeurs
Nombre de processeurs
Machine Itanium-2 (8 cœurs)
Daouda Traoré
accélération
optimale
préfixe
adaptatif
Machine AMD Opteron (16 cœurs)
Algorithmes parallèles auto-adaptatifs et applications
36/52
Algorithme adaptatif du calcul parallèle des préfixes (5/7):
validation expérimentale
Taille des données : n= 108, temps d’une opération = addition de deux
doubles
Temps d’exécution

3,5
1,8
3
1,6
2,5
prefixe
statique
prefixe
adaptatif
2
1,5
1,4
prefixe
statique
prefixe
adaptatif
1,2
1
0,8
1
0,6
0,5
1
2
3
4
5
6
7
8
0,4
1
2
3
4
5
6
7
8
Nombre de processeurs
Machine Itanium-2 (8 cœurs)
Daouda Traoré
Machine AMD Opteron (16 cœurs)
Algorithmes parallèles auto-adaptatifs et applications
37/52
Algorithme adaptatif du calcul parallèle des préfixes (6/7):
validation expérimentale
Taille des données : n= 104, temps d’une opération ≈ 2ms

45
1
1760 Mhz
2
550 Mhz
40
35
3
1100 Mhz
30
4
1650 Mhz
5
660 Mhz
6
440 Mhz
7
1320 Mhz
8
880 Mhz
9
550 Mhz
10
1760 Mhz
Temps [s]
fréquence
processeur
théorique
 2Tseq 


 ( p  1) ave 
temps minimum de
préfixe adaptatif
temps moyen de préfixe
adaptatif
temps maximum de
préfixe adaptatif
temps moyen de préfixe
statique (SWARM)
25
20
15
10
5
0
1
2
3
4
10
Nombre de processeurs
[Simulateur CpuBurning /Cérin]
Dix Machines de fréquences différentes AMD Opteron
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
38/52
Algorithme adaptatif du calcul parallèle des préfixes (7/7):
validation expérimentale
Taille des données : n=5120000, temps d’une opération ≈ 1ms
5
4,5
accélération

4
Accélération
théorique
optimale
prefixe
adaptatif en
distribué
3,5
3
2,5
2
1,5
1
1
2
3
4
5
6
7
Nombre de processeurs
8
8 Machines distribuées AMD Opteron
[accès des données paginé via mmap]
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
39/52
Plan de la présentation

Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes

Ordonnancement par vol de travail

Schéma générique adaptatif

Algorithme adaptatif pour le calcul parallèle des Préfixes

Application du schéma à la STL

Conclusion et perspectives
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
40/52
Applications du schéma à la librairie standard C++
 La librairie STL (Standard Template Library) :
 Fournit : conteneurs, algorithmes, itérateurs
 Avantage : généricité
 Parallélisation de la STL






PSTL (Parallel Standard Template Library) [Johnson et al 97]
STAPL (Standard Adaptive Parallel Libary) [Thomas et al 88 ]
MPTL (Multi-Processing Template Library) [Baertschiger 06 ]
MCSTL (Multi-Core Standard Template Library) [Singler et al 07 ]
Intel TBB (Thread Building Blocks) [Reinders 07]
PaSTeL [Saule & Videau, RENPAR’08]
 KASTL (Kaapi Adaptive Standard Template Library)
 Implémenté sur le noyau exécutif kaapi
 Basé le schéma adaptatif
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
41/52
Applications du schéma à la librairie standard C++
 Classification des algorithmes de la STL
Classe
Algorithmes implémentés
Algorithmes sans fusion de résultats
copy, copy_bacward, fill, fill_n, for_each,
generate, generate_n, replace, replace_if,
replace_copy, replace_copy_if, swap_ranges,
transform
Algorithmes avec fusion de résultats
count, count_if, accumulate, inner_product,
partial_difference
Algorithmes avec terminaison anticipée
find, find_if, find_end, find_first_of,
adjacent_find, search_n
Algorithmes avec surcoûts de
parallélisme
partial_sum, remove_copy_if, unique_copy
Algorithmes de partition et de tri
merge, stable_sort, partition, sort
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
42/52
Applications du schéma à la librairie standard C++
 Algorithmes sans fusion de résultats
 Fonctions : extract_seq, extract_par, local_run
(1)
 Algorithmes avec fusion de résultats
 Fonctions : (1) et join, jump (2)
 Algorithmes avec terminaison anticipée
 Fonctions : (2) et extract_nextmacro_work (3)
 Algorithmes avec surcoûts de parallélisme
 Fonction et classe : (3) et la classe FinalizeWork
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
43/52
Applications du schéma à la librairie standard C++:
partition

« Partition »: primitive de base dans un tri de type « quicksort »

Soit un tableau T[0..n], et un élément quelconque appelé pivot pris dans le
tableau. Le but de l’algorithme de partition est d’arriver à la situation suivante :
1.
2.
T[i] < pivot pour i appartenant à [0..k[
T[i] >= pivot pour j appartenant à [k..n[
Exemple : soit T = [10, 5, 2, 8, 20, 6, 32, 3, 7 ] et pivot = 8;
T_partionné = [7,5,2,3,6, 20, 32, 8,10]
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
44/52
Applications du schéma à la librairie standard C++:
partition adaptative
 Tableau initial
P1
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 Initialement P1 commence le calcul
P1
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 P2 vol du travail chez P1
P1
P2
steal
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 P1 et P2 font la partition dans leurs intervalles respectifs
P1
P2
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 P3 vol du travail chez P1
P1
P3
steal
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 Les trois processeurs font la partition dans leurs intervalles respectifs
P1
P2
P3
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 P4 vol du travail chez P2
P2
P4
steal
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 Les quatre processeurs font la partition dans leurs intervalles respectifs
P1
P2
P3
P4
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 Les quatre processeurs font la partition dans leurs intervalles respectifs
P1
P2
P3
P4
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 Les quatre processeurs font la partition dans leurs intervalles respectifs
P1
P2
P3
P4
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 Les quatre processeurs font la partition dans leurs intervalles respectifs
P1
P2
P3
P4
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 Les quatre processeurs font la partition dans leurs intervalles respectifs
P1
P2
P3
P4
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 P1 a fini sa partie droite et préempte P3
P1
P2
P3
P4
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 P1 a fini sa partie droite et préempte P3
P1
P2
P4
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 Les processeurs continuent les calculs en parallèle
P1
P2
P4
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 P1 a fini sa partie droite et préempte P2
P1
P2
P4
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 P1 a fini sa partie droite et préempte P2
P1
P4
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 P1 a fini sa partie droite et préempte P4
P1
P4
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 P1 a fini sa partie droite
P1
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++:
partition adaptative
 Réarrangement des blocs non terminés
P1
Réarrangement des blocs mal
placés
Daouda Traoré
Tous les éléments qui sont
dans cette partie sont
supérieurs au pivot
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++ :
partition adaptative

Réarrangement des blocs non terminés
P1
Tous les éléments qui sont dans cette partie
sont inférieurs au pivot
Tous les éléments qui sont dans cette partie
sont supérieurs au pivot
Appel à partition adaptive sur ce
intervalle
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
45/52
Applications du schéma à la librairie standard C++
: validations expérimentales

sort
22
Machine : Opteron (16 cœurs )
Données : Doubles
Taille
: 108
Temps [s]
18
sort STL
sort adaptatif
sort TBB
14
10
6
2
1
3
5
7
9
11 13 15
Nombre de processeurs
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
46/52
Applications du schéma à la librairie
standard C++ : validation expérimentales

unique_copy : supprime dans une séquence des éléments contigus égaux
 Exemple :
1 1 2 3 0 0 10 15 15 15
1 2 3 0 10
=>
10
15
6
Machine : Opteron (16 cœurs )
Données : Doubles
Taille
: 108
Temps [s]
0,7
unique_cop
y adaptatif
unique_cop
y de MCSTL
0,5
0,3
0,1
1
3
5
7
9
11
13
15
Nombre de processeurs
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
47/52
Applications du schéma à la librairie
standard C++ : validation expérimentales
partial_sum : identique au calcul des préfixes
Machine : Opteron (16 cœurs )
Données : Doubles
Taille
: 3.105
Temps [s]

50
45
40
35
30
25
20
15
10
5
partial_sum adaptatif
2n/p
partial_sum de TBB
(grain adaptatif)
partial_sum de TBB
(grain=100)
partial_sum de TBB
(grain=1875)
2n/(p+1)
1
3
5
7
9
11 13 15
Nombre de processeurs
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
48/52
Applications du schéma à la librairie standard C++
: validations expérimentales

merge
8 processeurs
6
Machine : Opteron (16 cœurs )
Données : Doubles
accélération
5
4
Merge adaptatif
Merge MCSTL
Merge STL
3
2
1
0
1,E+05
1,E+06
1,E+07
1,E+08
taille
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
49/52
Plan de la présentation

Algorithmes pour processeurs identiques: illustration sur le
calcul parallèle des préfixes

Ordonnancement par vol de travail

Schéma générique adaptatif

Algorithme adaptatif pour le calcul parallèle des Préfixes

Application du schéma à la STL

Conclusion et perspectives
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
50/52
Conclusion
 Spécification d’un schéma générique qui permet de développer des
programmes parallèles adaptatifs
 Garanties théoriques prouvées
 Interface C++ sur Kaapi développée
 Validation expérimentales sur plusieurs exemples
 Calcul parallèle des préfixes
 Fusion de listes triées, partition, tri par fusion et tri introspectif
 Algorithmes de la STL : unique_copy, remove_copy_if, transform,
accumulate, ….
 Bonnes performances expérimentales obtenues par rapport à
d’autres algorithmes implantés dans d’autres librairies (MCSTL,
TBB, SWARM)
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
51/52
Perspectives

Optimisation de l’interface développée
 Supprimer les verrous : important pour un travail de petite taille
 Expérimenter et améliorer en contexte distribué (calcul automatique des seuils)
 Implémenter le schéma sur d’autres bibliothèques
 Comme : Cilk, Cilk++, intel Tbb
 Comparer les performances
 Avoir des algorithmes caches et processeurs inconscients (vrai pour
plusieurs algorithmes (préfixe, partition, …), mais reste sort adaptatif?)
 Utilisation pour des applications de simulations 3D (SOFA, Everton)
-> ressources hétérogènes: CPU/GPU [Soares et al 07]
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
52/52
Daouda Traoré
Algorithmes parallèles auto-adaptatifs et applications
Téléchargement