Title: Algorithmes parall
1Algorithmes parallèles auto-adaptatifs et
applications
- Daouda TRAORÉ
- Directeurs de thèse
- Jean-Louis ROCH Denis TRYSTRAM
- Projet MOAIS
- Laboratoire dInformatique de Grenoble (UMR
5217), France - Vendredi 19 Décembre 2008
2Motivations
- Evolution des machines parallèles de machines
avec processeurs identiques vers - Grilles de calcul
- gt ressources hétérogènes et dynamiques
- Systèmes multi-processus (Processeurs
multi-cœurs, SMP, MPsoc) - applications concurrentes sur une même unité
- gt les cœurs apparaissent comme de vitesses
variables - Processeurs graphiques GPUs CPUs
- gt hétérogénéité, fréquences et
opérations différentes - Questions Est-ce quun algorithme parallèle peut
fonctionner dans ce contexte? - Avec quelles garanties de performance ?
- Sous quelles hypothèses?
-
2/52
3Evolution de la programmation parallèle
- Initialement processeurs identiques (MPI)
- Aujourdhui Interfaces de haut-niveau
permettant dabstraire larchitecture.
Grille
Multi-coeurs, SMP
GPU
Cuda
Google MapReduce
OpenMP, Cilk, intel TBB
Athapascan/Kaapi
3/52
4Objectif de la thèse
-
-
- Construction dalgorithmes parallèles adaptatifs
- Sadaptent à la plate-forme dexécution
- Inconscients du nombre de processeurs (en
anglais, processor oblivious) - Adaptation à la charge de la plate-forme
- Avec des garanties defficacité
- Temps dexécution si possible optimal p/r aux
ressources (dynamiquement) allouées - Contexte LIG / EP INRIA Moais
- Thème sur la conception dalgorithmes adaptatifs
Rochal gzip2001, TSI2005,... - Master ROCO D. Traoré 2005 un algorithme de
préfixe adaptatif (mais clairvoyant)
4/52
5Plan du mémoire et contributions
- Introduction objectifs et contributions,
organisation - Programmation parallèle notions
- Algorithmes parallèles adaptatifsdéfinitions
- Un algorithme adaptatif pour le calcul parallèle
des préfixes EUROPAR06, CARI06 - Algorithmes adaptatifs de tri parallèle
RENPAR08 - Schéma générique des algorithmes parallèles
adaptatifs PDP08, EUROPAR08 - Application du schéma à la librairie standard
STL EUROPAR08, MSAS08 - Conclusion et perspectives
5/52
6Plan 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
6/52
7Algorithmes 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 avec
- Applications parallélisation de boucles,
additions modulaires Blelloch89 - Algorithme séquentiel
- for(p0x0, i1 i lt n i)
pipi-1xi // n opérations - Borne inférieure sur p processeurs identiques
- Parallélisation optimale sur p processeurs
identiques Snir86, Nicolau-Wang96
Fich83
7/52
8Algorithmes 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 n1 par p1 - n1 s(p1) q
- Division du tableau initial en p1 blocs de
taille éventuellement différentes
8/52
9Algorithmes pour processeurs identiques
illustration sur le calcul parallèle des préfixes
Algorithme statique en p1 blocs
s1
s1
s2
s2
9/52
10Algorithmes pour processeurs identiques
illustration sur le calcul parallèle des préfixes
- Analyse théorique du temps dexécution de
lalgorithme proposé -
- et le nombre dopérations vérifie
- Remarque Une variante donne un temps toujours
optimal, mais na pas été programmée -
Théorème chap. 3, page 30
Si 0 q 1 et (p3)/2 q p, alors le temps
dexécution de lalgorithme (optimal) sur p
processeurs identiques vérifie
Théorème chap. 3, pages 31 et 32
Si 2 q (p3)/2, alors le temps dexécution de
lalgorithme à 1 de loptimal sur p processeurs
identiques vérifie
10/52
11Algorithmes pour processeurs identiques
illustration sur le calcul parallèle des préfixes
4 processeurs
n grand, temps dune opération très petit (temps
daddition de deux Doubles par exemple). Dans
lalgorithme de Nicolau-Wang On a 2n/(p1)
synchronisations
accélération
1 processeur
taille
temps
n petit, temps dune opération assez élevé
taille
11/52
12Algorithmes pour processeurs identiques
illustration sur le calcul parallèle des préfixes
- Inconvénients de la parallélisation sur des
processeurs identiques - Nombre dopérations toujours le même si les p
processeurs initialement prévus pour lexécution
ne sont pas disponibles. - Exemple si on suppose que
- Un seul processeur exécute lalgorithme parallèle
- Les autres étant mobilisés pour dautres calculs
- gt le nombre dopérations
effectuées par un seul processeur est - Lalgorithme optimal sur processeurs identiques
nest pas performant - Si les processeurs sont de vitesses différentes
(temps dexécution final temps dexécution du
processeur le plus lent) - Si le temps de lopération est variable
12/52
13Plan 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
13/52
14Ordonnancement 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 quil a rendues prêtes (créées, ou
débloquées).
steal
tâches
P0
P1
P2
Blelloch90, , Leiserson Kuszmaul 2001
- Lorsquun processeur devient inactif, il choisit
(au hasard) un processeur dont la pile en cours
dexécution contient une tâche prête et lui vole
une tâche (la plus ancienne, en haut de la pile
(FIFO).
14/52
15Modèle de coût associé au vol de travail (1/2)
- Notations
- W travail le nombre dopérations de
lalgorithme parallèle sur 1 processeur - Tp la durée dexécution de lalgorithme
parallèle sur p processeurs - D la profondeur de lalgorithme parallèle
(le nombre dopérations sur le chemin critique) - Pave la vitesse moyenne des p processeurs
-
- ThéorèmeArora, Blumofe, Plaxton 02, Bender,
Rabin 02 - Avec une grande probabilité
- Le temps dexécution Tp dun programme utilisant
lordonnancement par vol de travail est majoré
par - Le nombre de vols (réussis ou échoués) est
inférieure à O(p.D)
15/52
16Modèle de coût associé au vol de travail (2/2)
- Efficacité de la parallélisation
- Wseq travail de l algorithme séquentiel
- Tseq temps dexécution de lalgorithme
séquentiel - Intérêt Si W Wseq et D très petit,
- En général W c1Wseq, c1 mesure le surcoût
dû à lordonnancement 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 dordonnancement
- Principe du travail dabordFrigo et al98,
Roch01 - Ce principe consiste
à minimiser le surcoût de création de tâches de
- lordonnancement par
vol de travail. - Appels de création de tâches traduits en appel
local de fonction séquentielle. -
16/52
17Bibliothè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 - 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
17/52
18Ordonnancement par vol de travail limite
- Emulation séquentielle de lalgorithme parallèle
- Nombre dopérations arithmétiques supérieur à
celui de lalgorithme séquentiel - Exemple Calcul des préfixes, optimal avec n
opérations ! - - Entrée x0, x1, , xn
- - Sortie p0, p1, ..., pn avec
- Un algorithme parallèle récursif (Diviser Pour
Régner) -
W(n) 2W(n/2) n/2 (1/2) nlog(n) gt
lémulation séquentielle de lalgorithme
parallèle fait plus dopérations que lalgorithme
séquentiel optimal !
18/52
19Plan 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
19/52
20Schéma générique adaptatif
- Ordonnancement par vol de travail amélioration
- Principe de base Rochal TSI 2005 Remplacer
lémulation séquentielle de lalgorithme
parallèle par un vrai algorithme séquentiel
plus efficace. - gtUtiliser le couplage de deux algorithmes
- Un séquentiel qui minimise le travail (nombre
dopé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 lalgorithme séquentiel
(optimal)
20/52
21Couplage adaptatif de deux algorithmes
- Un processeur occupé a une tâche et lexécute
avec un algorithme séquentiel
Ps
T0.Run_seq()
21/52
22Couplage adaptatif de deux algorithmes
- Un processeur devient libre et exécute une
opération dextraction de travail chez un
processeur actif sans linterrompre.
Ps
T0.Run_seq()
steal
Pv
21/52
23Couplage adaptatif de deux algorithmes
- Un processeur devient libre et exécute une
opération dextraction de travail chez un
processeur actif (victime) sans linterrompre.
Ps
T0.Run_seq()
Pv
T0.Run_seq()
21/52
24Couplage adaptatif de deux algorithmes
- La victime a fini sa tâche et préempte son voleur
Ps
Prempts
Pv
T0.Run_seq()
21/52
25Couplage 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
jump
T0.Run_seq()
gets
Pv
T0.Finalize
21/52
26Couplage 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
Côté voleur
work extract_seq() lock() //verrouiller
ws NextWorkSeq() unlock()
//déverrouiller return ws
work extract_par() //Micro-loop lock()
//verrouiller wv WorkToSteal()
unlock() //déverrouiller return wv
- Si taille(ws) est petite gt surcoût élévé. -
Choix de taille (ws) taille (ws) profondeur
(wrest) gt travail arithmétique Wseq
22/52
27Couplage adaptatif Amortissement des
synchronisations (extraction séquentielle du
travail)
Exemple transform STL boucle avec n calculs
indépendants
nil-fi
l
f1
f2
alog(n1)
alog(n2)
Machine utilisée AMD Opteron Opteron 875 2,2
Ghz, Compilateur gcc, option O2
Tempss
taille
23/52
28Schéma adaptatif Amortissement du surcoût
arithmétique
- Pour Certains dalgorithmes
- Wseq nest pas connu davance
- W gt Wseq
- Exemple algorithme find_if qui permet de
trouver le premier élément dune séquence
vérifiant un predicat
- Le temps séquentiel de lalgorithme est Tseq 2
- Le temps final de lalgorithme parallèle est le
temps final du processeur ayant terminé le
dernier. Donc T4 6
24/52
29Schéma adaptatif Amortissement du surcoût
arithmétique
- Pour sadapter division dynamique du travail
global en des étapes (Macro-loop Danjean,
Gillard, Guelton, Roch, Roche, PASCO07),avec
synchronisation après chaque pas schéma de type
algorithme de Floyd
P0, P1, P2
P0, P1, P2
P0, P1, P2
B1
B2
B3
25/52
30Sché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
26/52
31Sché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
Machine utilisée AMD Opteron (16
cœurs) Données doubles Taille tableau
106 Temps prédicat 36µ
accélération
Nombre de processeurs
27/52
32Schéma adaptatif Analyse théorique
- Trois niveaux de boucles utilisés dans
lalgorithme du du schéma - nano-loop gt limite le surcoût de synchronisation
- micro-loop gt permet le vol de travail et la
préemption - macro-loop gt limite le surcoût arithmétique
- Analyse de la complexité de lalgorithme du
schéma
Théorème chap. 6, pages 89 et 90
Si le temps parallèle dexécution dun algorithme
sur un nombre infini de processeurs fait
(1s)Wseq opérations avec s 0, alors avec une
grande probabilité,
28/52
33 Spécification et implantation du Schéma
Interface C sur Kaapi
- Suit le schéma de lalgorithme 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 dune 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
29/52
34Spécification et implantation du Schéma
Interface C sur Kaapi
- Pour construire un algorithme adaptatif,
lutilisateur remplit les fonctions nécessaires - Class MyWorkAdapt public WorkAdapt
-
- bool extract_seq()
- .
-
- bool extract_par()
- .
-
- void local_run()
-
- void join(const WorkAdapt stolenwork)
- .
-
30/52
35Spé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 gt 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
v1
v2
v3
(a) avant préemption de v1
31/52
36Plan 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
32/52
37Algorithme adaptatif du calcul parallèle des
préfixes (1/7)
- Calcul des préfixes
- Entrée x0, x1, , xn
- Sortie p0, p1, ..., pn avec
- Algorithme séquentiel
- for(p0x0, i1 i lt n i)
pipi-1xi // n opérations - Borne inférieure sur p processeurs identiques
- Parallélisation optimale sur p processeurs
identiques Snir86, Nicolau-Wang96 - Ne sont pas adaptés si le temps de lopération
varie ou si les processeurs sont à vitesse
variable - Parallélisation sur un nombre non borné de
processeurs Ladner-Fischer80, Lin-Su02 - Peuvent être émulés par vol de travail mais
effectuent plus de 2n opérations - But trouver un algorithme adaptatif qui se
comporte optimalement EUROPAR2006, CARI2006
Fich83
33/52
38Algorithme 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
pia0ai
Steal request
?ia4ai
a4 a5 a6
Pv
a5
a6
pia0ai
1ère étape de la macro-loop
9
1
2
8
3
5
4
6
7
temps
34/52
39Algorithme 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
pia0ai
a6
preempt
p3
?ia4ai
a4 a5
Pv
a5
a6
pia0ai
1ère étape de la macro-loop
9
1
2
8
4
6
7
3
5
temps
34/52
40Algorithme 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
pia0ai
Steal request
?ia10ai
?ia4ai
a4 a5
a10 a11 a12
Pv
a4
p4
a11
p5
a12
pia0ai
1ère étape de la macro-loop
2ème étape de la macro-loop
9
1
2
8
4
6
3
5
7
temps
34/52
41Algorithme 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
pia0ai
preempt
a12
p9
?ia10ai
a4 a5
a10 a11 a12
Pv
p5
p4
a11
a12
pia0ai
1ère étape de la macro-loop
2ème étape de la macro-loop
9
1
2
8
4
6
3
5
7
temps
34/52
42Algorithme adaptatif du calcul parallèle des
préfixes (2/7)
a1 a2 a3
a6
a7 a8 a9
a12
a13
Ps
p1
p2
p3
jump
p6
p7
p8
p9
jump
p12
p13
pia0ai
T2 9 temps optimal 9
?ia10ai
a4 a5
a10 a11
Pv
p5
p4
a11
p10
p11
pia0ai
1ère étape de la macro-loop
3ème étape de la macro-loop
2ème étape de la macro-loop
9
1
2
8
4
6
3
5
7
temps
34/52
43Algorithme adaptatif du calcul parallèle des
préfixes (3/7)
- Analyse théorique du temps dexécution
Théorème chap. 4, pages 53 et 54
Le temps Tp sur p processeurs du calcul n1
préfixes par lalgorithme adaptatif vérifie Avec
une grande probabilité
35/52
44Algorithme adaptatif du calcul parallèle des
préfixes (4/7) validation expérimentale
- Taille des données n3.105, temps dune
opération 1ms
accélération
Nombre de processeurs
Nombre de processeurs
Machine Itanium-2 (8 cœurs)
Machine AMD Opteron (16 cœurs)
36/52
45Algorithme adaptatif du calcul parallèle des
préfixes (5/7) validation expérimentale
- Taille des données n 108, temps dune
opération addition de deux doubles
Temps dexécution
Nombre de processeurs
Machine Itanium-2 (8 cœurs)
Machine AMD Opteron (16 cœurs)
37/52
46Algorithme adaptatif du calcul parallèle des
préfixes (6/7) validation expérimentale
- Taille des données n 104, temps dune
opération 2ms
processeur fréquence
1 1760 Mhz
2 550 Mhz
3 1100 Mhz
4 1650 Mhz
5 660 Mhz
6 440 Mhz
7 1320 Mhz
8 880 Mhz
9 550 Mhz
10 1760 Mhz
Temps s
Nombre de processeurs
Simulateur CpuBurning /Cérin
Dix Machines de fréquences différentes AMD Opteron
38/52
47Algorithme adaptatif du calcul parallèle des
préfixes (7/7) validation expérimentale
- Taille des données n5120000, temps dune
opération 1ms
8 Machines distribuées AMD Opteron accès des
données paginé via mmap
39/52
48Plan 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
40/52
49Applications 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, RENPAR08
- KASTL (Kaapi Adaptive Standard Template Library)
- Implémenté sur le noyau exécutif kaapi
- Basé le schéma adaptatif
41/52
50Applications 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
42/52
51Applications 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
43/52
52Applications du schéma à la librairie standard
C partition
- Partition primitive de base dans un tri de
type quicksort -
- Soit un tableau T0..n, et un élément quelconque
appelé pivot pris dans le tableau. Le but de
lalgorithme de partition est darriver à la
situation suivante - Ti lt pivot pour i appartenant à 0..k
- Ti gt 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
44/52
53Applications du schéma à la librairie standard
C partition adaptative
P1
45/52
54Applications du schéma à la librairie standard
C partition adaptative
- Initialement P1 commence le calcul
P1
45/52
55Applications du schéma à la librairie standard
C partition adaptative
- P2 vol du travail chez P1
P1
P2
steal
45/52
56Applications du schéma à la librairie standard
C partition adaptative
- P1 et P2 font la partition dans leurs intervalles
respectifs
P1
P2
45/52
57Applications du schéma à la librairie standard
C partition adaptative
- P3 vol du travail chez P1
P1
steal
P3
45/52
58Applications du schéma à la librairie standard
C partition adaptative
- Les trois processeurs font la partition dans
leurs intervalles respectifs
P1
P2
P3
45/52
59Applications du schéma à la librairie standard
C partition adaptative
- P4 vol du travail chez P2
P2
P4
steal
45/52
60Applications du schéma à la librairie standard
C partition adaptative
- Les quatre processeurs font la partition dans
leurs intervalles respectifs
P1
P2
P3
P4
45/52
61Applications du schéma à la librairie standard
C partition adaptative
- Les quatre processeurs font la partition dans
leurs intervalles respectifs
P1
P2
P3
P4
45/52
62Applications du schéma à la librairie standard
C partition adaptative
- Les quatre processeurs font la partition dans
leurs intervalles respectifs
P1
P2
P3
P4
45/52
63Applications du schéma à la librairie standard
C partition adaptative
- Les quatre processeurs font la partition dans
leurs intervalles respectifs
P1
P2
P3
P4
45/52
64Applications du schéma à la librairie standard
C partition adaptative
- Les quatre processeurs font la partition dans
leurs intervalles respectifs
P1
P2
P3
P4
45/52
65Applications du schéma à la librairie standard
C partition adaptative
- P1 a fini sa partie droite et préempte P3
P1
P2
préemption
préemption
P3
P4
45/52
66Applications du schéma à la librairie standard
C partition adaptative
- P1 a fini sa partie droite et préempte P3
P1
P2
P4
45/52
67Applications du schéma à la librairie standard
C partition adaptative
- Les processeurs continuent les calculs en
parallèle
P1
P2
P4
45/52
68Applications du schéma à la librairie standard
C partition adaptative
- P1 a fini sa partie droite et préempte P2
P1
préemption
préemption
P2
P4
45/52
69Applications du schéma à la librairie standard
C partition adaptative
- P1 a fini sa partie droite et préempte P2
P1
P4
45/52
70Applications du schéma à la librairie standard
C partition adaptative
- P1 a fini sa partie droite et préempte P4
P1
préemption
préemption
45/52
71Applications du schéma à la librairie standard
C partition adaptative
- P1 a fini sa partie droite
P1
45/52
72Applications du schéma à la librairie standard
C partition adaptative
- Réarrangement des blocs non terminés
P1
Réarrangement des blocs mal placés
Tous les éléments qui sont dans cette partie sont
supérieurs au pivot
45/52
73Applications 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
supérieurs au pivot
Tous les éléments qui sont dans cette partie sont
inférieurs au pivot
Appel à partition adaptive sur ce intervalle
45/52
74Applications du schéma à la librairie standard
C validations expérimentales
Machine Opteron (16 cœurs ) Données
Doubles Taille 108
Temps s
Nombre de processeurs
46/52
75Applications du schéma à la librairie standard
C validation expérimentales
- unique_copy supprime dans une séquence des
éléments contigus égaux - Exemple
gt
Machine Opteron (16 cœurs ) Données
Doubles Taille 108
Temps s
Nombre de processeurs
47/52
76Applications 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
2n/p
Temps s
2n/(p1)
Nombre de processeurs
48/52
77Applications du schéma à la librairie standard
C validations expérimentales
8 processeurs
Machine Opteron (16 cœurs ) Données Doubles
accélération
taille
49/52
78Plan 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
50/52
79Conclusion
- Spécification dun 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 à dautres algorithmes implantés dans
dautres librairies (MCSTL, TBB, SWARM)
51/52
80Perspectives
- Optimisation de linterface 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 dautres 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) - -gt ressources hétérogènes CPU/GPU Soares
et al 07
52/52
81MERCI DE VOTRE ATTENTTION! QUESTIONS ?