Phd Thesis

Transcription

Phd Thesis
N d'ordre :
THESE
presentee a
L'UNIVERSITE PARIS VI { Pierre et Marie Curie
pour obtenir le titre de
DOCTEUR DE L'UNIVERSITE PARIS VI
specialite :
INFORMATIQUE
par
Bertrand LE CUN
Sujet de la these :
Des
structures de donnees
paralleles
soutenance prevue le 16 janvier 1996 devant le jury compose de :
MM. Michel
COSNARD
Rapporteurs
Jean-Marc
Arie
Claude
Gerard
Ivan
Nelson
Gautam
Catherine
GEIB
de BRUIN
GIRAULT
KINDERVATER
LAVALLE E
MACULAN
MITRA
ROUCAIROL
Examinateurs
Directeur
a mes parents,
a Laurence,
et Gregoire.
Remerciements
Je tiens avant tout a exprimer ma plus sincere gratitude a Catherine Roucairol, Professeur a l'Universite de Versailles-Saint Quentin et conseiller scientique a l'INRIA.
L'inter^et qu'elle a accorde a la direction de mes recherches, les conseils avises qu'elle m'a
apportes et les encouragements amicaux qu'elle m'a sans cesse prodigues se sont montres
determinants.
J'aimerais aussi adresser de chaleureux remerciements a Jean-Marc Geib, Professeur
au Laboratoire d'Informatique fondamentale de Lille pour avoir accepte d'^etre rapporteur
de ma these et pour l'inter^et qu'il a bien voulu porter a mon travail.
normale superieure de Lyon,
Que soit remercie le Professeur Michel Cosnard de l'Ecole
qui a largement contribue a l'avancee de la recherche en algorithmique parallele, et qui fait
l'honneur d'^etre rapporteur de ce travail.
Que Ivan Lavallee, Professeur a l'Universite Paris 8 et conseiller scientique a l'INRIA,
au sein de l'Action Paradis, trouve ici l'expression de ma plus profonde sympathie.
Je suis egalement tres heureux de la presence, parmi ce jury, des Professeurs Gerard
Kindervater et Arie De Bruin de l'Universite Erasmus de Rotterdam (Pays-Bas). Qu'ils
en soient tres sincerement remercies.
Que Gautam Mitra, Professeur a l'universte de Brunel de Londres trouve ici mes
sinceres remerciements pour l'inter^et qu'il a porte a cette these.
Je suis tres reconnaissant envers Claude Girault Professeur a l'Universite Paris VI et
Nelson Maculan, Professeur a l'Universte Federale de Rio (Bresil) d'avoir accepte de faire
partie de ce jury, qu'ils en soient ici remercies.
Enn, en dehors de ce jury, je voudrais d'abord remercier l'ensemble de l'equipe qui
m'a accueilli a l'INRIA: la defunte Action ParaDis ou la bonne humeur et la joie de vivre
ont su rencontrer la rigueur de la science, puis l'equipe PNN du PRiSM Versailles qui a
contribue a l'elaboration de BOB.
Un grand merci a Laurence pour sa patience et son aide morale et a Gregoire, qui
pendant la periode de redaction n'a pas oublie qu'il avait un pere.
i
Table des matieres
Table des matieres
Table des gures
Introduction
1 Structures de donnees paralleles
1.1 Introduction du parallelisme dans les structures de donnees : : : : :
1.1.1 Parallelisme interne : Structures de donnees paralleles accelerees
1.1.2 Parallelisme "externe" : : : : : : : : : : : : : : : : : : : : : :
1.1.3 Les structures de donnees a execution sequentielle : : : : : :
1.1.4 Les structures de donnees a capacite parallele : : : : : : : : :
1.2 Structures de donnees a donnees paralleles : : : : : : : : : : : : : : :
1.2.1 Exemple : la liste cha^nee a donnees paralleles : : : : : : : : :
1.2.2 Proprietes et co^uts de la methode : : : : : : : : : : : : : : :
1.2.3 File d'attente de Cheng : : : : : : : : : : : : : : : : : : : : :
1.2.4 Les les de priorite : : : : : : : : : : : : : : : : : : : : : : : :
1.2.5 Les structures de recherche : : : : : : : : : : : : : : : : : : :
1.3 Structures de donnees a operations paralleles : : : : : : : : : : : : :
1.3.1 Exemple : la liste cha^nee : : : : : : : : : : : : : : : : : : : :
1.3.2 Capacite et surco^ut de la methode synchrone : : : : : : : : :
1.3.3 Capacite et surco^ut de la methode asynchrone : : : : : : : :
1.3.4 Memoire partagee : : : : : : : : : : : : : : : : : : : : : : : :
1.3.5 Memoire distribuee : : : : : : : : : : : : : : : : : : : : : : : :
1.4 Structures de donnees a operations et a donnees paralleles : : : : : :
1.4.1 Exemple : la liste cha^nee : : : : : : : : : : : : : : : : : : : :
1.4.2 Limitation et co^ut de la methode : : : : : : : : : : : : : : : :
1.4.3 Files de priorite : : : : : : : : : : : : : : : : : : : : : : : : : :
1.4.4 Les structures de recherche : : : : : : : : : : : : : : : : : : :
1.5 Conclusion : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
2 Les structures a donnees paralleles
2.1 Files de priorite synchrones : : : : : : : : : : : : : : : : : : : :
2.1.1 Le 2-heap parallele : : : : : : : : : : : : : : : : : : : : :
2.1.2 La methode Fusion&Recopie : : : : : : : : : : : : : : :
2.1.3 Le 2-Heap : : : : : : : : : : : : : : : : : : : : : : : : : :
2.1.4 Le Skew-Heap parallele : : : : : : : : : : : : : : : : : :
2.1.5 Le Pairing-Heap parallele : : : : : : : : : : : : : : : : :
2.1.6 Conclusion : : : : : : : : : : : : : : : : : : : : : : : : :
2.2 Files de priorite asynchrones : : : : : : : : : : : : : : : : : : : :
2.2.1 E quilibrage de charge et machine a memoire distribuees
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
i
iv
1
4
6
6
7
8
9
11
11
11
13
14
18
19
20
21
21
22
24
27
27
28
29
30
30
33
33
33
38
41
42
45
46
47
47
These Paris VI, Janvier 1996
Table des matieres
ii
2.2.2 Une le de priorite "virtuelle" ou systeme : : : : : : : : : : : 49
2.3 Conclusion : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 49
3 Structures de donnees a operations paralleles
3.1 Verrouillage partiel : : : : : : : : : : : : : : : : : : : : : : : : : :
3.2 Verrouillage partiel pour les structures de donnees arborescentes
3.2.1 Protocole avec verrou : : : : : : : : : : : : : : : : : : : :
3.2.2 Protocole avec marquage : : : : : : : : : : : : : : : : : :
3.3 Extension de la methode aux machines a memoire distribuee : :
3.3.1 Simulation de l'espace global, et modes operatoires : : : :
3.3.2 Gestion de la coherence : : : : : : : : : : : : : : : : : : :
3.3.3 Exemple : le Skew-Heap : : : : : : : : : : : : : : : : : : :
3.3.4 Performances de la methode : : : : : : : : : : : : : : : : :
3.4 Conclusion : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
4 Les structures a donnees et operations paralleles
4.1 Performances : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
4.1.1 La capacite : : : : : : : : : : : : : : : : : : : : : : : : : : : :
4.1.2 Les co^uts : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
4.2 Quels algorithmes SDODP ? : : : : : : : : : : : : : : : : : : : : : : :
4.3 Quelles valeur de D pour un nombre d'elements xe ? : : : : : : : :
4.3.1 Inuence de l'application : : : : : : : : : : : : : : : : : : : :
4.3.2 Inuence de l'architecture de la machine : : : : : : : : : : : :
4.4 Structures SDODP ou SDOP a deux niveaux : : : : : : : : : : : : :
4.4.1 Algorithme SDDP : : : : : : : : : : : : : : : : : : : : : : : :
4.4.2 Algorithme SDODP : : : : : : : : : : : : : : : : : : : : : : :
4.5 Un algorithme SDODP dynamique pour un nombre d'elements variables : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
4.5.1 Consequence de la modication de D : : : : : : : : : : : : : :
4.5.2 Valeur de D initiale et nale, regime susant : : : : : : : : :
4.6 Conclusion : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
51
52
52
52
58
59
60
61
62
67
70
71
71
71
73
74
75
75
75
76
76
76
77
77
79
80
5 E tude de structures de donnees pour l'exploration d'espace de
recherche en RO/IA
82
5.1 L'algorithme de Branch and Bound : : : : : : : : : : : : : : : : : : :
5.1.1 Algorithme general de Branch and Bound : : : : : : : : : : :
5.1.2 Les les de priorites sequentielles : : : : : : : : : : : : : : : :
5.1.3 Files de priorites SDOP : : : : : : : : : : : : : : : : : : : : :
5.1.4 Experimentations : Simulation de Branch and Bound : : : : :
5.1.5 Experimentations : Le probleme de l'aectation quadratique :
5.2 L'algorithme A* : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
5.2.1 Structures de donnees pour l'algorithme : : : : : : : : : : : :
5.2.2 Experimentations : : : : : : : : : : : : : : : : : : : : : : : : :
82
82
85
86
89
92
95
96
99
6 BOB : une bibliotheque d'aide au developpement d'applications
utilisant la methode Branch and Bound
103
6.1 Motivations : : : : : : : : : : : : : : : : : : : : : : :
6.2 Principe de fonctionnement de la bibliotheque : : : :
6.2.1 Programme Branch and Bound : : : : : : : :
6.2.2 Le parallelisme : : : : : : : : : : : : : : : : :
6.2.3 Les composantes critiques d'une application :
6.3 Structure conceptuelle de la bibliotheque : : : : : : :
6.4 Types et fonctions des applications : : : : : : : : : :
6.4.1 Les types et fonctions denis par l'utilisateur
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
103
105
105
106
106
108
109
109
These Paris VI, Janvier 1996
Table des matieres
iii
6.4.2 Les types, variables et fonctions fournis par la bibliotheque : 110
6.5 Moniteur : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 111
6.5.1 Activite des processus : : : : : : : : : : : : : : : : : : : : : : 112
6.5.2 Etat des les de priorite locales ou partagees : : : : : : : : : 113
6.6 Architecture de la Librairie : : : : : : : : : : : : : : : : : : : : : : : 113
6.6.1 Organisation des repertoires : : : : : : : : : : : : : : : : : : : 113
6.6.2 Le repertoire Bob : : : : : : : : : : : : : : : : : : : : : : : : : 113
6.6.3 Les repertoires d'architecture : ArchSEQ, ArchSHARED, ArchDISTRIB 114
6.6.4 La portabilite de la bibliotheque : : : : : : : : : : : : : : : : 114
6.6.5 La compilation et l'execution : : : : : : : : : : : : : : : : : : 115
6.7 Le developpement d'une application : : : : : : : : : : : : : : : : : : 116
6.7.1 Le chier d'ent^ete typedef.h : : : : : : : : : : : : : : : : : : 116
6.7.2 Le(s) chier(s) source(s) : : : : : : : : : : : : : : : : : : : : : 117
6.7.3 Le chier makefile : : : : : : : : : : : : : : : : : : : : : : : 118
6.8 Conclusion et perspectives : : : : : : : : : : : : : : : : : : : : : : : : 118
6.8.1 Developpements a venir : : : : : : : : : : : : : : : : : : : : : 118
6.8.2 Fusion avec une bibliotheque de metaheuristiques : : : : : : : 118
6.8.3 Bibliotheque pour parcours d'espace de recherche : : : : : : : 119
6.8.4 Diusion : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 120
7 Conclusion
A Des structures de donnees sequentielles
A.1 Les structures de recherche : : : : : : : : : :
A.1.1 Les listes : : : : : : : : : : : : : : : :
A.1.2 Les arbres binaires : : : : : : : : : : :
A.1.3 Les arbres n-aires : : : : : : : : : : : :
A.2 Les les de priorite : : : : : : : : : : : : : : :
A.2.1 Les tas : : : : : : : : : : : : : : : : : :
A.2.2 Les structures speciques : : : : : : :
A.2.3 Les structures de recherche modiees :
Bibliographie
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
121
124
125
125
125
129
131
131
140
142
146
These Paris VI, Janvier 1996
iv
Table des gures
1.1 Interpretation de la parallelisation d'une application du point de vue
de la structure de donnees : : : : : : : : : : : : : : : : : : : : : : : :
1.2 Parallelisation par l'approche SDDP : : : : : : : : : : : : : : : : : :
1.3 Exemple d'execution pour une le d'attente parallele. : : : : : : : :
1.4 Parallelisation par l'approche SDOP : : : : : : : : : : : : : : : : : :
1.5 Repartition de l'arbre de recherche : : : : : : : : : : : : : : : : : : :
1.6 Parallelisation par l'approche SDODP : : : : : : : : : : : : : : : : :
1.7 File de priorite de Fan et Cheng : : : : : : : : : : : : : : : : : : : :
7
11
13
20
25
27
29
2.1
2.2
2.3
2.4
2.5
2.6
Exemple de tas parallele : : : : : : : : : : : : : : : : : : : : : : : : :
Exemple de deux oe d'insertion dans le tas parallele : : : : : : : : :
Exemple d'une oe de parcours d'une suppression : : : : : : : : : : :
Exemple d'une oe d'insertion : : : : : : : : : : : : : : : : : : : : : :
Exemple d'une oe de suppression : : : : : : : : : : : : : : : : : : : :
Exemple d'une operation elementaire de fusion de deux Skew-Heaps
en parallele : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
34
35
37
42
43
44
3.1
3.2
3.3
3.4
3.5
Exemple de fen^etre pour le schema 1. : : : : : : : : : : : : : : : : :
Exemple de fen^etre pour le schema 2 : : : : : : : : : : : : : : : : :
Exemple de repartition de la structure : : : : : : : : : : : : : : : :
Exemple d'insertion dans un Skew-Heap en mode Gestion de cache
Exemple d'insertion sur un Skew-Heap en mode acces a distance :
:
:
:
:
:
54
57
60
64
66
4.1
4.2
4.3
4.4
Parallelisation par l'approche SDODP : : : : : : : :
Structure SDODP par deux SDOP : : : : : : : : : :
Structure SDODP par deux SDOP : : : : : : : : : :
Passage de D a 2D sous-structures, puis de 2D a D.
:
:
:
:
73
77
78
79
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
5.1 Exemple d'arbre de GBB : : : : : : : : : : : : : : : : : : : : : : : : 84
5.2 Test de les de priorite sequentielles sur un Sparc. BInf= 100 et
MaxIncr= 150. : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 90
5.3 SIM : Comparaison verrou-marquage sur une Sequent Balance : : : : 91
5.4 SIM : Comparaison verrou-marquage-priorite sur une Ksr1 : : : : : : 91
5.5 SIM : Comparaison de toutes les fp SDOP, sur Sequent Balance : : : 91
5.6 SIM : Comparaison de toutes les fp SDOP, sur la KSR1 : : : : : : : 92
5.7 SIM : Comparaison de fp SDDP, sur la KSR1 : : : : : : : : : : : : : 92
5.8 QAP: Test de plusieurs les de priorite SDOP (KSR1, Nugent15). : 94
5.9 QAP: Test des strategies d'equilibrage de charge (Skew-Heap,Ksr1,Nugent12). 94
5.10 La structure combinee le de priorite+structure de recherche. : : : : 97
5.11 Taquin: Resultats en secondes de l'algorithme SDOP sur une Sequent
Balance 8000. : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 100
5.12 Taquin: Resultats en secondes de l'algorithme SDOP sur une KSR1. 101
These Paris VI, Janvier 1996
Table des gures
v
5.13 Taquin: Accelerations sur la KSR1. : : : : : : : : : : : : : : : : : : : 101
6.1
6.2
6.3
6.4
Vue d'un B&B parallele. : : : : : :
Structure fonctionnelle de BOB. :
Synoptique des fonctions de BOB.
Schema des repertoires. : : : : : :
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
A.1 Les dierentes rotations (a) ZIG, (b) ZIG-ZIG, (c) ZIG-ZAG. Les cas
symetriques ont ete omis. : : : : : : : : : : : : : : : : : : : : : : : :
A.2 La construction nale de l'arbre dans l'operation de Splay. Le nud
x contient la valeur recherchee. : : : : : : : : : : : : : : : : : : : : :
A.3 ZIG-ZIG modie du Semi-Splay. Le cas symetrique est omis. : : : : :
A.4 (a)!(b) Insertion (7,2) : : : : : : : : : : : : : : : : : : : : : : : : : :
A.5 D-Heap 2 Fils : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
A.6 D-Heap 3 Fils : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
A.7 D-Heap 4 Fils : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
A.8 Leftist Heap : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
A.9 Skew-Heap : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
A.10 Pairing Heap : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
A.11 Semi-Splay Tree : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
A.12 Simple-Semi-Splay Tree : : : : : : : : : : : : : : : : : : : : : : : : :
A.13 Single-Semi-Splay Tree : : : : : : : : : : : : : : : : : : : : : : : : : :
A.14 Single-Simple-Semi-Splay Tree : : : : : : : : : : : : : : : : : : : : : :
107
109
112
113
126
126
127
128
134
134
135
136
138
140
143
143
144
145
These Paris VI, Janvier 1996
1
Introduction
Pour faire face a la demande toujours accrue en puissance de calcul d'applications
traitant des problemes de plus en plus grands et complexes, le parallelisme s'est
revele un outil puissant. Son introduction, si elle a deja ete etudiee dans des methodes
et algorithmes, de traitement des applications, n'a souvent ete consideree que comme
un sujet de second plan dans les structures de donnees.
Or, une application n'est qu'un traitement particulier sur des donnees, et au
cur de la parallelisation de l'application, se trouve l'etude de structures de donnees
adaptees a l'environnement parallele.
Les performances de la parallelisation vont largement dependre des algorithmes
gerant l'acces aux donnees, assurant la coherence de la structure.
C'est pourquoi, nous avons choisi de nous interesser a l'introduction du parallelisme dans les structures de donnees.
Nous proposons une conception unitaire de la structure de donnees utilisee
par la parallelisation d'une application. Elle ne prend pas en compte directement
l'architecture de la machine parallele utilisee.
Une application utilisant en sequentiel une structure de donnees utilise en parallele, une structure de donnees parallele, qui en est une version parallelisee.
Les dierences entre structures de donnees paralleles vont donc provenir de la
facon dont est envisagee leur parallelisation. Trois grandes familles de structures
peuvent ^etre denies.
Les structures accelerees correspondent a une parallelisation "interne", chaque
operation est acceleree par l'utilisation de plusieurs processeurs.
Les structures a execution sequentielle orent la possibilite a plusieurs processeurs d'eectuer des operations, mais a un instant donne une seule operation
est executee par un processeur.
Les structures a capacite parallele: acceptent l'execution simultanee de plusieurs
operations, eectuees par plusieurs processeurs.
Cette derniere famille de structures la plus souvent utilisee peut a son tour, ^etre
classee en dierentes approches suivant la facon dont sont realisees les executions
simultanees.
Les structures a donnees paralleles denotent des structures paralleles composees
de plusieurs sous-structures sur chacune desquelles seront eectuees les operations.
Les structures a operations paralleles acceptent des operations concurrentes
sur une unique representation de la structure,
Les structures a donnees et operations paralleles sont les structures qui combinent les deux approches precedentes,
These Paris VI, Janvier 1996
Introduction
2
Un autre avantage de cette vision uniee de la structure de donnees parallele,
quelle que soit l'architecture de la machine ou sera implante l'algorithme, est d'en
proposer une interface identique en sequentiel ou en parallele.
Les operations, ou methodes, auront les m^emes noms pour gerer l'objet "structure de donnees". Seules en fait vont changer les implantations des operations et
des donnees.
Les fonctions de la "structure de donnees parallele globale" peuvent donc ^etre
identiees et ont servi a constituer une bibliotheque dont l'emploidegagera l'utilisateur,
de la gestion du parallelisme. C'est la une retombee importante de cette vision globale de "structure de donnees paralleles".
La notion de "structure de donnees globale" qui a preside a nos travaux, induit
egalement le plan de leur presentation.
Le chapitre 1 commence par une denition de la notion de structure de donnees
parallele, et indique les dierentes facons de faire entrer du parallelisme dans une
structure de donnees.
Les trois familles, les structures de donnees accelerees, celles a execution sequentielle,
et celles a capacite parallele, sont illustrees et analysees.
Les structures a capacite parallele regroupant les trois approches, les structures
a donnees paralleles, celles a operations paralleles, et enn celles a operations et
donnees paralleles, sont illustrees par des exemples de structures de listes, et evaluees
par rapport aux co^uts mis en jeu et a un nouveau parametre introduit, "la capacite".
Les trois chapitres suivants (2, 3, 4) sont consacres a chacune des trois approches
de parallelisme pour les les de priorite.
Les les de priorite sont les structures les plus employees dans les methodes
utilisees pour notre champ d'applications privilegie, celui des problemes d'optimisation.
En eet, la plupart des algorithmes de parcours d'espace de recherche comme le
Branch and Bound ou A* se servent de telles structures.
Le chapitre 2 etudie plus particulierement l'approche a donnees paralleles. Nous
y proposons une methode originale dite de fusion&recopie dans le cas des les de
priorite representees par des tas. Cette methode impliquant une execution synchrone des operations, resout strictement les problemes d'equilibrage de charge et
de semantique de l'operation de suppression.
Puis, nous discutons brievement de l'inuence de notre conception de structure
de donnees globale sur les strategies d'equilibrage de charge sur machine a memoire
distribuee.
Le chapitre 3 s'interesse aux structures de donnees a operations paralleles. Il
elabore une methode d'acces aux les de priorite arborescentes, reduisant les co^uts
dus aux primitives d'exclusion mutuelle ou aux envois de messages, suivant qu'il
s'agit d'une machine a memoire partagee ou distribuee.
Au chapitre 4, l'inter^et de l'approche a donnees et operations paralleles pour les
les de priorite est discute.
Le chapitre 5 teste experimentalement sur machine a memoire physiquement ou
virtuellement partagee, plusieurs de ces structures de donnees paralleles, dans le
cadre de la resolution de problemes d'optimisation combinatoire diciles par des
methodes Branch and Bound ou A*.
Au chapitre 6, la notion de structure de donnees parallele globale est la notion cle
utilisee pour la construction d'une bibliotheque d'aide au developpement de B&B :
BOB.
Elle permet d'avoir une gestion uniee de la structure de donnees au travers de
l'utilisation de fonctions en sequentiel et en parallele. La gestion du parallelisme
These Paris VI, Janvier 1996
Introduction
3
n'est ainsi plus prise en compte par l'utilisateur. Le parallelisme devient en quelque
sorte "transparent" pour l'utilisateur. Ce dernier peut benecier de ses avantages
sans avoir a se soucier de ses "contraintes", en se contentant de faire appel aux
fonctions de la bibliotheque.
Le chapitre 7, enn, degage les extensions possibles de la bibliotheque et les
autres travaux que peuvent susciter notre vision et notre classement des structures
de donnees paralleles.
These Paris VI, Janvier 1996
4
1
Structures de donnees
paralleles
Chapitre
Ce chapitre presente, classe et compare les dierentes approches de parallelisation
des structures de donnees de la litterature.
Ce classement repose sur une conception de la parallelisation d'une application
du point de vue des structures qu'elle utilise.
Cette approche permet de reporter tous les problemes de gestion du parallelisme
dans la gestion de la structure de donnees dite parallele.
Ainsi, nous proposons trois grandes familles de structures de donnees paralleles :
celles a execution sequentielle, les "accelerees", et enn celles a capacite parallele.
Cette derniere famille represente la plus grande partie des structures proposees
dans la litterature. Elle peut ^etre subdivisee en structures a donnees paralleles, a
operations paralleles et enn a operations et donnees paralleles.
Nous comparons et illustrons ces types de structures de donnees paralleles, en
degageant les problemes generes.
En sequentiel, une application utilise une ou plusieurs structures de donnees
pour stocker et acceder aux informations. Ces structures de donnees peuvent ^etre
simples, comme les variables, les tableaux, les enregistrements, mais aussi tres
complexes comme les structures de recherches, les les de priorites, etc.
Convention: Dans le terme de structure de donnees (SD), nous englobons la
representation memoire des donnees et les operations qui peuvent ^etre eectuees sur
cette representation.
Pour une simple variable, une operation peut donc ^etre la lecture, l'ecriture ou
le test sur un petit bloc memoire. Ces operations sont simples a mettre en uvre
et a utiliser. Leur complexite est constante en temps et en espace.
En revanche, si la SD est complexe, sa representation est une composition de
structures simples appelees elements. Une operation sur une structure complexe engendre donc un parcours de la memoire selon la representation, avec eventuellement
des modications de cette representation. La complexite des operations depend alors
de la taille et de la forme de la representation.
Il existe beaucoup de categories de SD complexes en sequentiel. Elles peuvent
^etre classees selon les types d'operations qu'elles supportent; un sous-classement
These Paris VI, Janvier 1996
1 : Structures de donnees paralleles
5
peut ^etre obtenu selon leur representation en memoire. Nous citons ci-dessous
quelques exemples de telles structures.
Les structures de recherche gerent des elements composes d'une clef et
d'une information.
{ les operations portent sur la clef pour :
1. rechercher un element,
2. inserer un element,
3. supprimer un element.
{ les representations classiques sont :
1. les listes (simplement cha^nees [AhHU74], doublement cha^nees [AhHU74],
les Skip-list [Pugh90], ...),
2. les arbres binaires (AVL [AhHU74], Red-Black [SlTa83], Splay [TaSl85],
Random search tree ou Treap [Crei85, ArSe89], ...),
3. les arbres n-aires (les arbres 2-3-, les B-arbres, les B+-arbres, ...),
4. les tables de hachage, etc.
Les les de priorites gerent des elements composes d'une priorite et d'une
information.
{ les operations sont les suivantes :
1. insertion d'un element de priorite quelconque,
2. suppression de l'element ayant la plus forte priorite,
3. suppression de tous les elements de priorite inferieure a une valeur
(operation specique a certaines applications).
{ les representations possibles sont :
1. les tas (d-Heap ou implicit-Heap[Will64, AhHU74], leftist-Heap [AhHU74],
Skew-Heap [SlTa86], Pairing-Heap [StVi87], binomial-queue [Brow78,
Vuil78], etc),
2. toutes les structures de recherche detournees de leurs fonctions initiales,
3. les structures speciques (Funnel-Tree [MaRo90], Funnel-Table [MaRo90],
Calendar-queue [Brow88]), etc.
Nous avons reporte en annexe A, la presentation d'un certain nombre de structures
de donnees complexes.
Si on considere une application comme un traitement iteratif sur des donnees,
la procedure de traitement obtient des donnees par des demandes d'operations a la
structure, puis les modie ou les combine. Les donnees nouvellement creees peuvent
^etre reinserees dans la SD.
Une structure de donnees complexe n'a de raison d'^etre que par l'application qui
l'utilise. Elle ne represente pas une application a elle seule, mais elle est au service
d'une application.
Le contexte d'execution de la SD (valeur possible de clefs pour les structures de recherche, valeurs possibles des priorites pour les les de priorite, nombre
et ordres des dierentes operations, nombre d'elements) est donc deni par le comportement du traitement. Ce dernier est tres important car il va orienter le
choix vers telle ou telle SD orant les operations les mieux adaptees.
Dans la suite, nous ne nous interessons qu'aux structures de donnees complexes.
Par simplication, nous employons donc le terme de structures de donnees (SD)
pour des structures de donnees complexes.
These Paris VI, Janvier 1996
1.1. Introduction du parallelisme dans les structures de donnees
6
1.1 Introduction du parallelisme dans les
structures de donnees
Deux types de parallelisations du couple traitement+structure sont envisageables.
Une premiere consiste a paralleliser le traitement et la structure en "interne".
Chaque traitement et chaque operation sont executes par plusieurs processus cooperants.
Une deuxieme dite "externe" consiste a modier le couple (traitement, structure)
en (P traitements, structure). Plusieurs procedures de traitement sont executees par
plusieurs processus, chacune d'elles travaille sur des donnees dierentes provenant
d'une structure de donnees globales.
1.1.1 Parallelisme interne : Structures de donnees paralleles
accelerees
Du point de vue de la structure, ce modele entra^ne une acceleration de chacune
des operations. Il conduit a la denition de : structures de donnees paralleles
dites accelerees (SDPA).
Denition 1 Une structure de donnees parallele acceleree est une structure
de donnees (representation + operations) dont chaque operation est acceleree par
l'utilisation de plusieurs processus.
Ce type de parallelisation denit generalement une parallelisation a grain n.
Les processus executent une procedure tres courte entre deux synchronisations ou
communications.
Pinotti et Pucci [PiPu92] ont presente une le de priorite parallele de ce type,
le Min-Path-heap. Cette structure est une version modiee de la plus classique des
les de priorite, le d-heap [Will64] (voir le paragrapheA.2).
Le Min-Path-Heap a pour objet d'assurer la connaissance a priori du chemin que
doivent prendre les operations d'insertion et de suppression d'un element dans une
representation de d-Heap. L'algorithme des operations se reduit a l'insertion d'un
element dans un "tableau" de longueur logn ou n est le nombre d'elements stockes.
Cette insertion peut ^etre faite par un algorithme ecace (complexite en log logn
avec log n processus) ou optimal (complexite en loglog n avec logloglogn n processus).
Chaque operation doit maintenir la connaissance a priori du chemin que doit
prendre l'operation suivante. La complexite d'une operation devient donc O( logp n +
log logn) [PiPu92]. Cette complexite a des performances inferieures a celles des SDP
que nous presentons dans la suite.
D'autres parallelisations de ce type ont ete proposees pour le HeapSort [Will64].
Les travaux de Olariu et Wen [OlWe91], Rao et Zhang [RaZh91], Pinotti et Pucci [PiPu92]
et Dietz [Diet92] concernent alors la construction du d-heap en parallele.
L'approche SDPA n'est applicable qu'a tres peu de SD, car, bien souvent, la suite
d'operations elementaires composant une operation doit ^etre executee sequentiellement .
Pour une structure de recherche sous forme d'arbre par exemple, le chemin n'est
pas connu a l'avance mais est construit tout au long du parcours.
hh
ii
En revanche, plusieurs parallelisations d'application ont ete proposees sur ce
modele. Par exemple, Pekny et Miller [PeMi92], Dehne Ferreira et Rau-Chaplin [DeFR90],
Kindervater et Trienekens [KiTr88] en ont propose pour le Branch and Bound.
Trienekens et de Bruin [TrBr92] ont qualie ce modele de parallelisation d'algorithme
de Branch and Bound, de parallelisme de bas niveau.
These Paris VI, Janvier 1996
1.1. Introduction du parallelisme dans les structures de donnees
7
1.1.2 Parallelisme "externe"
Une seconde approche consiste a executer P procedures de traitement de l'application
sur P processus, chacun d'eux accedant a une SD "globale". Cela signie que chacun des P processus executant la procedure de traitement, realise ses operations sur
une seule SD (gure 1.1). Cette approche est actuellement la plus utilisee. La raison
majeure reside dans le modele de parallelisme sur lequel sont fondees les machines
paralleles commerciales actuelles. Ce modele etant dit a gros grain, cette seconde
approche y est plus adaptee.
Cette approche conduit a la denition suivante, du point de vue de la SD.
Denition 2 Une structure de donnees parallele (SDP) est une structure
de donnees (representation + operations) supportant des operations pouvant ^etre
demandees par plusieurs processus qui auront potentiellement acces a tout element
de la structure.
Structure
de
données
(SD)
Demandes et retours
d’opérations
Procédure
de traitement
PARALLELISATION
Structure
de
données
GLOBALE PARALLELE
(SDP)
Demandes et retours
d’opérations
Procédure
de traitement
Procédure
de traitement
...
Procédure
de traitement
Figure 1.1 : Interpretation de la parallelisation d'une application du point de vue
de la structure de donnees
Le parallelisme n'a souvent ete inclus dans les SD qu'indirectement. Paralleliser
une application, revient a introduire du parallelisme dans les SD qu'elle utilise.
Par exemple, l'etude de la parallelisation d'un systeme de gestion de base de
donnees (SGBD) a ete a l'origine de celle des structures de recherche. La parallelisation des algorithmes de recherche arborescente et de simulation d'evenements
discrets a conduit a l'introduction du parallelisme dans les les de priorite. De m^eme
qu'en sequentiel, ou le choix d'une SD est deni par le contexte d'execution, en parallele, le comportement de l'application denit un contexte d'execution de la SDP,
et donc denit aussi des choix de parallelisation.
These Paris VI, Janvier 1996
1.1. Introduction du parallelisme dans les structures de donnees
8
La performance d'une parallelisation est generalement exprimee en terme d'acceleration
(temps sequentiel divise par le temps parallele avec P processeurs [CoTr93]). Pour
eectuer cette etude du point de vue de la SD, nous exprimons le temps pris par
l'execution d'une application par le temps pris par l'execution des procedures de
traitement, plus le temps pris par l'execution des dierentes operations sur la SD.
Soit Tseq le temps d'execution de l'application sequentielle :
t + Ts ;
Tseq = Tseq
seq
t est le temps d'execution des traitements et ou T s est le temps d'execution
ou Tseq
seq
des nop operations sur la SD executees par l'application.
Le temps Tpara d'execution de l'application parallelisee sur P processeurs est
t + Ts :
Tpara = Tpara
para
Dans la mesure ou notre etude porte sur les SDP, nous nous placons dans le cas
le plus favorable pour la parallelisation de la procedure de traitement:
t
t = Tseq :
Tpara
P
1.1.3 Les structures de donnees a execution sequentielle
Rendre parallele une structure est chose aisee sur les machines MIMD actuelles.
Si la memoire de la machine parallele est distribuee, il sut de specialiser un
processus dans la gestion de la structure. Les P processus executant les traitements
demandent au processus specialise d'executer leurs operations pour eux.
En revanche, si la machine dispose d'une memoire partagee, la SDP reside en
memoire commune; chacun des P processus realise ses operations en section critique
en utilisant une primitive d'exclusion mutuelle. Cette forme de parallelisation peut
^etre vue comme un serveur d'operations sur une SD sequentielle.
Nous appelons le resultat de cette forme de parallelisation, structure de donnees
paralleles a execution sequentielle (SDPES),
Denition 3 Une structure de donnees parallele a execution sequentielle
est une structure de donnees (representation + operations) dont une seule operation
peut ^etre executee a la fois sur la representation, par un seul processeur.
Les operations des SDPES sont donc executees sequentiellement. Il n'y a donc
s est
aucun parallelisme possible du point de vue de la structure. Dans ce cas, Tpara
exprime par :
s = Ts + Ts ;
Tpara
seq
gp
s
ou Tgp represente le temps d'execution de l'algorithme de gestion du parallelisme
de la structure. Nous pouvons remarquer que Tgps est une fonction dependante du
nombre d'operations executes (nop ).
En distribue, le co^ut Tgps represente le temps pris par tous les envois de message;
en memoire partagee, il represente le temps d'execution des primitives d'exclusion
mutuelle.
Si le comportement de l'application parallele denit un faible taux d'utilisation
de la SD par rapport aux calculs locaux, le temps total pris par les operations sur
la SDP est negligeable par rapport a la somme des calculs locaux :
a >> T s
Tseq
seq
These Paris VI, Janvier 1996
1.1. Introduction du parallelisme dans les structures de donnees
9
et donc, cet etat de fait est aussi vrai en parallele:
a >> T s :
Tpara
para
D'ou l'expression du temps d'execution en parallele:
Ta
Tpara ' Pseq ;
et donc
Tpara ' TPseq :
Cette forme de SDP sut donc, pour ce comportement, a obtenir une acceleration
lineaire.
Dans le cadre des les de priorite, l'inter^et de cette methode est d'assurer que
chaque processus obtienne l'element de plus forte priorite lors des operations de
suppression. Ainsi, Roucairol [Rouc87a, Rouc87b], Plateau and Roucairol [PlRo89],
Quinn [Quin90], McKeown [McKe91], et Gendron et Crainic [GeCr93], Kindervater [KiTr88, Kind94], Eckstein [Eck94a, Eck94b], Authie [AGFR+95] ont propose
des gestions de SDP sur ce modele, dans le contexte d'algorithmes de Branch and
Bound.
Malheureusement, les SDPES ne repondent pas aux comportements de la plupart
des applications paralleles. Car si le temps d'execution des operations de la structure
n'est plus negligeable par rapport a la somme des calculs locaux, les processus
demandeur sont la plupart de temps arr^etes dans l'attente d'elements.
Authie [AGFR+95] a propose une solution pour reduire le surco^ut. Lors d'une
suppression, la structure n'envoie pas qu'un seul element au processus demandeur
(client) mais plusieurs. Le nombre de communications s'en trouve donc reduit. Un
probleme appara^t alors : les elements etant envoyes en groupe, a un instant donne
un processus client travaille sur des elements qui ne sont s^urement plus ceux de
plus forte priorite. Cette solution bien que creant un plus faible surco^ut n'assure
plus la semantique de l'operation de suppression des les de priorite (voir le paragraphe A.2).
En distribue, la SDPES etant geree par un seul processeur, sa taille est limitee
par les m^emes contraintes qu'en sequentiel. Elle ne prote pas de l'ensemble des
memoires disponibles sur chacun des processeurs de la machine. Sa taille peut ^etre
augmentee, si la SDP est distribuee sur tous les processeurs.
Des que l'application necessite un grand nombre d'operations, ou des que le
nombre de processus clients est trop important, les operations sur la SDP doivent
pouvoir ^etre executees en parallele.
1.1.4 Les structures de donnees a capacite parallele
Les SDPES ne pouvant pas supporter toutes les demandes d'operations en un temps
raisonnable, les operations peuvent ^etre parallelisees entre elles. A un instant donne,
plusieurs operations sont realisees par plusieurs processus sur la SDP. Ce nombre
d'operations simultanees denit la capacite de la SDP.
Denition 4 La capacite C d'une structure de donnees parallele designe le nombre maximal d'operations pouvant ^etre en cours de realisation a un instant donne.
L'acceleration du point de vue de la structure est exprimee par :
s
s = Tseq :
Tpara
C
These Paris VI, Janvier 1996
1.1. Introduction du parallelisme dans les structures de donnees
10
s doit ^etre :
Or, pour obtenir une acceleration optimale, Tpara
s
s = Tseq :
Tpara
P
Nous introduisons donc la notion de capacite optimale.
Denition 5 La capacite C d'une structure est dite optimale, lorsque C processus
sont utilises pour l'obtenir.
Pour pouvoir comparer les dierentes structures de donnees, nous exprimons
s sous la forme:
Tpara
s
s = Tops + T s
Tpara
gp
C
s est le temps pris par l'execution de la partie sequentielle des nop operations
ou Tops
s
et ou Tgp est le surco^ut engendre par la gestion du parallelisme.
Dans la suite, nous distinguons les parallelisations de SDCP par leur capacite C,
par le co^ut qu'elles entra^nent en gerant le parallelisme (Tgps ), et par la complexite
des operations qu'elles supportent.
Nous nous proposons de caracteriser les dierentes SDCP suivant la facon dont le
parallelisme y est introduit. Nous pouvons ainsi classer plus clairement les dierentes
SDP proposees dans la litterature.
Une structure de donnees etant denie d'une part par sa representation et d'autre
part par les operations qu'il est possible d'y eectuer, le parallelisme peut ^etre
introduit dans ses deux composantes : sa representation memoire et ses operations.
La premiere approche consiste a paralleliser la representation. La SDP est composee de plusieurs representations. Chacune d'elles a une capacite de un.
Denition 6 Les structures de donnees a donnees paralleles (SDDP), designent
les structures de donnees, pour lesquelles la parallelisation porte sur la representation
de la structure.
La deuxieme approche consiste a paralleliser les operations et donc le parcours de
la structure, la representation restant conceptuellement la m^eme qu'en sequentiel.
Denition 7 Les structures de donnees a operations paralleles (SDOP)
designent les structures pour lesquelles la parallelisation porte sur les operations.
Ces deux approches ne sont pas incompatibles entre elles. Comme nous le verrons
par la suite, certaines parallelisations combinent les deux, d'ou leur nom.
Denition 8 Les structures de donnees a operations et a donnees paralleles (SDODP) designent les structures pour lesquelles la parallelisation porte
sur les operations et sur la representation de la structure.
Dans les algorithmes realisant les operations, ces trois approches donnent lieu
a des algorithmes speciques de gestion de l'environnement parallele. Le temps
d'execution de ces algorithmes sera pris en compte dans le terme Tgps .
Les trois paragraphes suivants expliquent en detail les trois approches que nous
venons de denir. Nous illustrons chacune d'elles en presentant les parallelisations
d'une structure de recherche representee par une liste cha^nee. Nous degageons
les problemes speciques aux methodes de parallelisation, que devraient gerer les
algorithmes paralleles sur les operations. Finalement, nous illustrons ce classement
par des exemples de SDP tirees de la litterature.
These Paris VI, Janvier 1996
1.2. Structures de donnees a donnees paralleles
11
1.2 Structures de donnees a donnees paralleles
Considerons une SD sequentielle notee S, de representation Rs.
Paralleliser S par l'approche SDDP, consiste a creer D representations Rs distinctes. Les n elements de la structure sequentielle originelle sont repartis sur les D
representations Rs.
Structure
séquentielle. S
Parallélisation
SDDP
1
2
D
D structures S
Figure 1.2 : Parallelisation par l'approche SDDP
1.2.1 Exemple : la liste cha^nee a donnees paralleles
Dans le contexte d'une structure de recherche sous forme de liste cha^nee, cette
approche consiste a decouper l'intervalle de recherche en D sous-intervalles. Une
liste cha^nee est associee a chacun d'eux. Les D listes sont notees Li , i 2 0::D ? 1.
Un processus qui desire realiser une operation d'insertion, de suppression ou de
recherche d'un element de clef v, accede a la liste Li susceptible de contenir v.
1.2.2 Proprietes et co^uts de la methode
Theoriquement, la capacite C de la structure parallele est egale a D, car D operations
peuvent ^etre executees en parallele (1 operation par Rs). Toutefois, si n est inferieur
a D et si, par hypothese, les n elements sont idealement repartis, la capacite de la
structure ne pourra ^etre que de n.
Propriete 1 La capacite d'une SDDP est telle que
C = min(n; D):
Chacune des D Rs doit contenir le m^eme nombre d'elements, pour assurer :
un nombre minimal de structures vides si n D,
un equilibre du temps necessaire a la realisation d'une operation,
un equilibre du nombre d'operations par representation.
These Paris VI, Janvier 1996
1.2. Structures de donnees a donnees paralleles
12
En eet, dans le cas ideal, chaque Rs contient Dn elements. Si la complexite
d'une des operations depend du nombre d'elements contenus dans la structure, les
operations sur une des sous-structures ont un temps d'execution reduit par rapport
au cas sequentiel.
Propriete 2 Si la complexite d'une operation sur une structure sequentielle S est
O(f(n)), la complexite d'une operation sur la structure S parallelisee par l'approche
SDDP sera egale a O(f( Dn )).
Si les Rs sont parfaitement bien equilibrees, il s'en suit que :
s Ts :
Tops
seq
Ce qui tendrait a prouver que cette forme de parallelisation aboutit a une acceleration
surlineaire. Le probleme est que toute cette etude se fonde sur le fait que chacune
des Rs contient le m^eme nombre d'elements. Or les operations de modication tendent a desequilibrer la quantite d'elements entre les D Rs . L'algorithme de gestion
du parallelisme doit donc inclure une strategie d'equilibrage de charge, pour assurer ce bon equilibre.
Dowaji dans [Dowa95] a exprime la necessite d'une strategie d'equilibrage de
charge en introduisant la notion de "puissance de calcul perdu". Si le travail
detenu par chacun de processus vient a se desequilibrer, il en resulte une perte
de puissance de calcul. En eet du point de vue de la SD, si un processus a une
structure tres chargee par rapport aux autres, il perdra de la puissance de calcul
dans la realisation des operations sur sa structure locale.
L'approche SDDP implique aussi une gestion specique pour assurer la m^eme
semantique des operations en parallele et en sequentiel. En eet, dans l'exemple de
parallelisation des listes cha^nees presente ci-dessus, l'equilibrage de charge entra^ne
des modications de la taille des intervalles. Les frontieres entre chaque liste bougent
donc au cours du temps. Une strategie permettant d'informer les processus clients
d'operations, des mises a jours de ces frontieres est alors necessaire.
En ce qui concerne les les de priorite, si l'operation de suppression concerne
une seule des Rs representations, on ne peut ^etre s^ur que l'element obtenu soit celui
ayant la plus forte priorite de la le de priorite globale. La semantique de l'operation
de suppression sequentielle n'est plus respectee. Si le comportement d'une application demande la m^eme semantique sur l'operation de suppression en parallele et en
sequentiel, il faut donc utiliser une strategie permettant de garder la connaissance
globale de la le contenant l'element de plus forte priorite.
Il est a noter ici que, m^eme si la FP respecte la semantique de l'operation
de suppression, l'execution de l'application ne sera pas la m^eme qu'en sequentiel.
Le modele de parallelisation entra^ne un sequencement dierent des elements supprimes, si l'algorithme de l'application consiste a generer des elements a partir d'un
element supprime de la le de priorite. Lorsque nous parlons de semantique stricte
de l'operation de suppression, cela ne concerne que les elements stockes dans la le
de priorite globale a un instant donne.
Maintenir un equilibrage parfait et assurer pour les operations paralleles la m^eme
semantique qu'en sequentiel revient donc a maintenir une connaissance globale. Or,
la complexite d'un algorithme maintenant une connaissance globale est une fonction
dependante de D et des caracteristiques de la machine. Soit l'expression du temps
parallele d'execution d'une application:
s
s = Tops + T s :
Tpara
gp
C
These Paris VI, Janvier 1996
1.2. Structures de donnees a donnees paralleles
13
s doit ^etre petit, plus T s doit ^etre grand
Deux termes sont contradictoires. Plus Tops
gp
et vice versa. Il faut donc trouver le juste milieu .
Beaucoup de strategies ont ete proposees dans la litterature pour resoudre les
problemes d'equilibrage de charge et de connaissance globale. Nous les exposons
dans la suite en dissociant celles utilisees pour les les de priorite de celles utilisees
pour les structures de recherche. Pour illustrer la diculte entra^nee par la gestion
de la semantique d'une operation, nous commencons par exposer la parallelisation
d'une le d'attente proposee par Cheng [Chen90].
hh
ii
1.2.3 File d'attente de Cheng
Cette parallelisation donne un tres bon exemple de ce qu'il faut mettre en uvre
pour assurer la semantique des operations. Car bien qu'en sequentiel la complexite
des operations d'insertion et de suppression dans une le d'attente soit O(1), en
parallele il n'en est pas de m^eme.
Dans la description de Cheng [Chen90], D processus peuvent acceder a D les
d'attente sequentielles simultanement par l'utilisation d'un reseau multi-couches
d'interconnexion. Le reseau est compose de logD couches, chaque couche etant
geree par D processus specialises. Les processus specialises sont donc au nombre de
D log D.
0
0
0
0
x
x
x
x
1
x
x
x
x
1
x
x
x
x
x
x
2
x
1
1
x
2
2
2
3
3
3
3
File avec une Valeur
File sans Valeur
Figure 1.3 : Exemple d'execution pour une le d'attente parallele.
L'algorithme consiste a trouver un chemin dans le reseau d'un point d'acces d'un
processus vers une des les sequentielles, en prenant en compte le nombre de valeurs
restantes dans les les, le nombre d'insertions et le nombre de suppressions pour un
ensemble donne de demandes.
Le calcul est eectue par vagues successives. Les processus d'une couche travaillent sur un ensemble d'operations de facon synchrone, ils aiguillent leur demande
vers un processus particulier du niveau superieur en fonction des resultats du niveau
inferieur.
An de garder la propriete des les d'attente, les les sont remplies et videes a
tour de r^ole. Sur l'exemple de la gure 1.3, il ne reste qu'une valeur dans chacune des
cinq premieres les. Nous avons ici quatre valeurs a inserer, trois d'entre elles sont
These Paris VI, Janvier 1996
1.2. Structures de donnees a donnees paralleles
14
inserees dans les trois les vides du bas, la quatrieme est inseree dans la premiere
le.
La complexite de cette structure pour l'insertion et la suppression est O(1) avec
D log D processus specialises.
La structure parallele etant representee par D les d'attente, elle correspond
donc tout a fait a notre modele de parallelisation SDDP.
L'inter^et de cette structure est d'illustrer la problematique posee par la semantique
des operations et donc celle de la connaissance globale. Si en sequentiel, la complexite des operations sur une le d'attente est O(1), en parallele, elle peut executer
D operations en O(1) mais avec D log D processus.
1.2.4 Les les de priorite
Comme nous l'avons dit precedemment, paralleliser une le de priorite par l'approche
SDDP pose deux problemes:
1. l'equilibrage de charge,
2. la semantique de l'operation de suppression.
Nous exposons les SDP en commencant par celles qui assurent en parallele une
semantique stricte, puis celles assurant une semantique de plus en plus rel^achee.
1.2.4.a Structures de donnees a operations synchrones
Si les sous-structures doivent ^etre parfaitement equilibrees, il est indispensable que
chaque operation de modication realise un equilibrage a chacune de ses executions.
Il devient donc legitime dans ce cas de considerer que les D operations sur les D
sous-structures sont realisees en m^eme temps, et qu'elles cooperent de facon a garder
un equilibre parfait des sous-structures. Il en decoule une execution synchrone des
D operations, d'ou le nom de structures de donnees a operations synchrones. Bien
souvent, m^eme s'il n'y a que D ? j (1 < j < D) operations, D processus doivent
^etre presents.
Deo et Prasad [DePr92], ont presente une le de priorite parallele a operations
synchrones fondee sur la structure de 2-Heap ou implicit-Heap (voir annexe A). Leur
proposition est d'utiliser une structure de 2-Heap, ou chaque nud de l'arbre peut
contenir D elements. Dans chacun des nuds du tas, les elements sont maintenus
tries dans l'ordre decroissant des priorites. Ils ont etendu l'invariant du tas sequentiel
a leur tas parallele.
Denition 9 L'invariant du tas parallele est :
les D elements d'un nud i ont une priorite inferieure aux D elements du nud
j , pere de i.
Une operation parallele est constituee de D operations synchrones, eectuees
par D processus. Les D operations parcourent la structure en empruntant le m^eme
chemin. A chaque etape de l'algorithme (en chacun des nuds du parcours), il y a un
echange d'information entre les processus, pour garder l'invariant du tas parallele.
Le chemin choisi par tous les processus permet de garder le tas parallele parfaitement
equilibre. De plus, si parmi les D operations constituant une operation parallele, il
y a s operations de suppression, ces s operations retournent les s elements de plus
forte priorite. La semantique sequentielle de l'operation de suppression des les de
priorite est donc respectee dans son sens le plus strict.
L'algorithme de gestion du parallelisme realisant l'equilibrage de charge et assurant la connaissance globale est donc interne aux operations sur la structure,
il est intimement lie a la representation des D sous-structures.
hh
ii
These Paris VI, Janvier 1996
1.2. Structures de donnees a donnees paralleles
15
Cette structure est detaillee dans le chapitre 2, ou nous proposons une generalisation
de la methode a toutes les les de priorite de la litterature representees par des tas.
Elle correspond a notre denition de SDDP, car elle peut ^etre representee par
une for^et de D 2-Heaps.
La capacite de la SDP est donc de D. Le co^ut s'exprime non seulement en fonction de D mais aussi en fonction du nombre d'elements contenus dans la structure.
A chaque pas de l'algorithme, chaque processus eectue un algorithme de fusion.
Cet algorithme a une complexite de O(log D). Le co^ut genere pour chaque groupe
de D operations est donc de :
n logD:
D
Le maintien de la connaissance globale et de l'equilibrage parfait co^ute donc ici
tres cher.
1.2.4.b Structures de donnees a operations macro-synchrones
Certaines applications comme le Branch and Bound, ont un comportement particulier, qui permet de proposer une solution moins chere que le 2-Heap parallele
de Deo et Prasad. En eet, les priorites des elements generes par ces applications
ont des proprietes interessantes comme:
beaucoup d'elements ont une priorite egale,
si tout les elements de priorite v ont ete supprimes, la priorite des elements
qui seront inseres par la suite, ne peut ^etre que superieure a v.
Ce comportement assure une connaissance de l'evolution des valeurs de priorites
des elements qui sont supprimes dans un groupe de D suppressions.
hh
ii
Diderich et Gengler [DiGe94] ont presente une le de priorite protant de ce
comportement. La cooperation n'existe que pour l'operation de suppression et que
pour une valeur donnee de priorite. Un groupe de D suppressions retire D elements
de priorite egale en log D avec D processeurs. La valeur de priorite choisie pour un
groupe de D suppressions est deduite des valeurs precedentes de priorite.
Les operations d'insertion sont asynchrones, c'est-a-dire que chaque processus
insere ses elements dans sa le locale.
Si strategie d'equilibrage il y a, elle ne concerne que la qualite des elements. Les
elements ne sont repartis que lors d'un groupe d'operations de suppression. Le critere
est la valeur de priorite des elements et non pas le nombre d'elements contenus dans
chacune des les locales. Cette structure parallele respecte strictement la semantique
de l'operation de suppression parallele mais neglige l'equilibrage de charge en terme
de nombre d'elements. Les auteurs ont montre sur des experimentations que cette
methode est adaptee au comportement d'applications telles que le Branch and
Bound, car le fait d'assurer la semantique de l'operation de suppression, sut a
garder un bon equilibrage. Le probleme resolu est le voyageur de commerce.
1.2.4.c Structures de donnees a operations asynchrones
Dans les deux solutions precedentes, la semantique stricte de l'operation de suppression est assuree soit au prix d'un co^ut eleve soit en utilisant un comportement
specique et connu de l'application. De plus, ces deux solutions necessitent une
execution synchrone de groupes de D operations de suppression.
Si l'application accepte un rel^achement de la semantique de l'operation de suppression, les operations peuvent s'executer de maniere asynchrone. Une strategie
d'equilibrage de charge est alors mise en uvre pour equilibrer le travail entre les
dierentes les.
These Paris VI, Janvier 1996
1.2. Structures de donnees a donnees paralleles
16
Il faut repondre a plusieurs questions pour concevoir une strategie d'equilibrage
de charge.
Quelle est l'unite de charge associee a une SD locale?
Quand faut-il eectuer un equilibrage de charge ? ou autrement dit quel est
le critere de declenchement de la procedure d'equilibrage ?
Quelle region concerne l'equilibrage? Toutes les les sans exception ou un
sous-ensemble de les ? Dans une region, existe-t-il un ma^tre ?
Quel est l'algorithme de repartition ? Est-il exact ou approche sur la region ?
S'execute-t-il en synchrone ou en asynchrone ?
Unite de charge L'unite de charge est sans nul doute le parametre le plus important dans l'elaboration d'une strategie d'equilibrage.
Si la charge rattachee a une le locale n'est representee que par la quantite
d'elements qu'elle contient, la semantique de l'operation de suppression n'est pas
du tout respectee.
En revanche, si la charge n'est representee que par la qualite des elements, la
semantique de l'operation de suppression est mieux respectee mais il n'y a aucun
contr^ole sur le nombre d'elements contenus dans chacune des les de priorite.
L'unite de charge doit tenir compte de ces deux aspects pour s'approcher de la
semantique sequentielle et pour assurer un bon equilibre de la charge.
Remarquons que ces deux aspects n'impliquent qu'un calcul instantane de la
charge. Dans les applications qui utilisent une le de priorite, les elements supprimes
servent bien souvent a generer de nouveaux elements. La charge attachee a un
element doit donc aussi contenir un travail qui pourra ^etre potentiellement eectue
plus tard.
Dowaji [Dowa95] a introduit la notion de potentialite de travail dans le cas particulier de l'algorithme de Branch and Bound. Les resultats de ses experimentations
montrent, que d'une part les D les sont mieux equilibrees, et que d'autre part
l'unite de charge etant plus precise, la procedure d'equilibrage est appelee moins
souvent.
Critere de declenchement Il en existe plusieurs.
Un premier est de realiser un equilibrage lorsqu'une des les devient vide. Un
deuxieme consiste a utiliser une strategie a double seuil : un seuil minimal et un
seuil maximal. Si la charge devient inferieure (respectivement superieure) au seuil
minimal (respectivement maximal), il faut soit declencher la procedure d'EC soit
remettre a jour la valeur des seuils qui etait erronee.
Selon le critere utilise, la procedure d'equilibrage peut ^etre debutee a l'initiative
d'un processus sous-charge, ou a celle d'un processus sur-charge ou des deux.
Region Si la procedure d'EC doit repartir la charge sur F les, sa complexite
depend tres fortement de ce nombre F. En eet, la procedure d'EC est composee
de deux phases :
1. calculer la charge moyenne sur les F les,
2. repartir les dierentes charges sur les F les.
Chacune de ces deux phases impliquent des communications entre les F processus associes aux F les. Or si F est tres grand, ces deux phases representent un
coup qui peut-^etre trop eleve. Le gain apporte par l'equilibrage de charge est eace
par le temps d'execution de l'equilibrage de charge.
Une solution est de n'executer la procedure d'EC que sur une partie de l'ensemble
de D les que nous appelons region. Une region peut ^etre :
These Paris VI, Janvier 1996
1.2. Structures de donnees a donnees paralleles
17
les D les,
une grappe (cluster) de les,
un ensemble de les connectees par des liens directs selon la topologie du
reseaux d'interconnexion,
Sur certaines strategies, un ma^tre est utilise pour recolter toutes les informations relatives a la charge de processus appartenant a sa region, et donc calculer la
charge moyenne (phase 1). Ce ma^tre peut aussi prendre les decisions concernant
l'equilibrage (phase 2).
Algorithme de repartition Selon l'eloignement des dierentes les dans la
region choisie, il est interessant de prendre des algorithmes de repartition exacts
ou approches.
En eet, si la taille et la topologie de region font que les temps de communication
sont grands, l'utilisation d'un algorithme exact entra^nerait un co^ut trop important
s ) serait eace par le temps pris pour realiser
(Tgps ). Le gain d^u a l'equilibrage (Tops
un equilibrage parfait.
En revanche, si le voisinage denit des les tres rapprochees, les temps de communication sont moins importants. Le temps perdu par l'utilisation d'un algorithme
exact de repartition, est compense par le gain obtenu en puissance de calcul.
Benachouche dans [Bena95a, Bena95b] denit ainsi une structure hierarchique
pour realiser un equilibrage ecace. Un equilibrage fort est realise dans les grappes
de les, alors que l'equilibrage entre les grappes est tres rel^ache. Ceci permet une
extensibilite du systeme.
L'algorithme peut s'executer de facon synchrone ou asynchrone. Dans la strategie
synchrone, si l'algorithme de repartition est declenche, tout les processus de la
region consideree sont arr^etes en attente d'ordre de repartitions. Si la strategie est
asynchrone, les processus recoivent les ordres ou decident de realiser l'equilibrage
independamment des autres processus. Ils ne sont pas arr^etes tous en m^eme temps
pour realiser l'algorithme de repartition.
Par exemple, la structure de donnees de Authie [AGFR+95] dans sa premiere
version est une SDPES. L'evolution proposee permettant de reduire les surco^uts des
messages en nombre trop important, fait glisser la structure de donnees vers la classe
des SDDP. Chaque esclave possedant une representation locale, les communications
ma^tre-esclaves peuvent ^etre assimilees a une execution d'un equilibrage de charge
tres stricte utilisant un ma^tre.
Beaucoup de propositions ont ete faites, sur machine a memoire distribuee.
Elles dierent par la strategie d'equilibrage de charge qui est concue Luling et
Monien [LuM89, LuMR91, LuMo95], Mans [Mans92], Hajian, Hai et Mitra [HHM94],
Gendron et Crainic [GeCr93], Dowaji et Roucairol [DoRo95b].
Bien que cette approche ait la plupart du temps ete utilisee dans un contexte de
machines distribuees, il existe des parallelisations de cette forme sur des machines
a memoire partagee.
Pardalos [Pard94] a propose une parallelisation sur ce modele pour un Branch
and Bound parallele.
Rao et Kumar [RaKu88] ont aussi parallelise le d-Heap sous cette forme. Chacun des P processus maintient la le qui leur est associee. L'equilibrage de charge
et la semantique de l'operation de suppression sont assures par un mecanisme de
tableau noir (BlackBoard). A chaque operation de suppression, chacun des processus met dans le tableau noir, un element qu'il a supprime. De cette facon, les autres
processus peuvent puiser dans le tableau, des elements qui sont meilleurs que ceux
These Paris VI, Janvier 1996
1.2. Structures de donnees a donnees paralleles
18
contenus dans leur le.
Huang [Huan91b] propose une Binomial Queue SDDP. Pour eviter les problemes
de serialisation d'acces a une le de priorite n-aire (la Binomial Queue), Huang
propose d'avoir une structure sans racine. Les processus accedent aleatoirement a
l'un des ls de la racine virtuelle . La strategie d'equilibrage de charge utilisee est
donc aleatoire.
Proposer un equilibrage de charge ecace demande une connaissance approfondie de son contexte d'execution. Il faut precisement degager le comportement
caracteristique de l'application qui utilise la SDP.
hh
ii
1.2.5 Les structures de recherche
Deux domaines utilisent des structures de recherche paralleles : celui des BD avec
les structures utilisees pour stocker les index ou les relations, et celui des machines
dictionnaires.
M^eme si le but recherche est le m^eme dans ces deux domaines c'est-a-dire paralleliser des structures de recherche, les hypotheses posees et par suite les contraintes
retenues ne sont pas les m^emes.
Le parallelisme dans les structures utilisees en Bases de Donnees pose des problemes
lies aux transactions, aux reprises sur erreurs et a la tolerance aux pannes. La consistance ne concerne pas une seule SD mais un ensemble de structures de donnees.
En revanche, une machine dictionnaire, se compose d'une seule structure. Le
but est de construire sur une machine parallele un algorithme de structures de
recherche orant des temps de reponse et une capacite interessants. La specication
y est quelque fois exprimee en terme de VLSI, plut^ot qu'en terme d'algorithme.
1.2.5.a Les Bases de Donnees
Dans le contexte des Bases de Donnees, la parallelisation des SD dans un environnement distribue utilise beaucoup l'approche SDDP. Elle est alors appelee, partitionnement des donnees. L'inter^et d'une SDDP est d'accro^tre la quantite d'information
stockee, tout en repartissant la charge sur dierents processus.
L'introduction du parallelisme dans les SD pose des problemes lies aux transactions. En eet, une transaction est une composition de plusieurs operations sur
plusieurs (ou une seule) SD. Or si une des operations echoue, il faut pouvoir rendre inoperantes les operations deja eectuees. L'eet de toute operation doit donc
pouvoir ^etre annule, pour recuperer l'ancienne version de la SD.
Deux methodes resolvent ce probleme.
La premiere consiste a introduire de nouvelles operations : abort, commit. Elles
ont pour eet de rendre valide ou de faire echouer une operation. La deuxieme est
de considerer des SD multi-versions. Une SD stocke un historique de ces versions.
La structure etant representee par plusieurs sous-representations distinctes, chaque
valeur de clef doit avoir une sous-representation associee.
Si le comportement de l'application est susamment connu une association
peut ^etre decidee a priori. Les donnees sont placees statiquement.
Si aucune hypothese sur les valeurs des clefs ne peut ^etre posee, la mise en
uvre d'equilibrage de charge dynamique est necessaire.
Placement statique De bonnes informations statistiques sur les valeurs des clefs
les plus accedees sont parfois disponibles. Le placement des elements peut donc ^etre
fait a priori (placement statique de la structure sur D processus).
Cette methode est appelee dans ce contexte "Declustering" [KiTM84].
hh
ii
These Paris VI, Janvier 1996
1.3. Structures de donnees a operations paralleles
19
Le placement statique des donnees est aussi possible lorsque plusieurs structures
de donnees (tables ou index) sont utilisees. Lors d'une interrogation, plusieurs structures sont accedees en m^eme temps, donnant lieu a des transferts de donnees entre
le processus ayant demande la requ^ete et les processus stockant les donnees. Le
meilleur placement d'un ensemble de structures de donnees est celui qui minimise
les temps de communications entre les dierents processus (voir Li, Srivastava et
Rotem [LiSR92].
Placement dynamique Lorsque ces informations statistiques ne sont pas connues, un placement dynamique devient obligatoire. Un partitionnement des valeurs
de clefs est xe initialement. Puis, en fonction du nombre d'acces, du nombre de
donnees sur chacun des processus, les donnees sont aectees a d'autres processus.
Dans certains cas, l'unite de charge est un seul element, dans d'autres, le nombre
d'elements est trop important. L'ensemble des valeurs de clefs est partitionne en d
ensembles, avec d >> D. L'algorithme de repartition s'occupe maintenant d'un
nombre plus restreint d'unites a equilibrer. Cette methode a l'inter^et de reduire la
taille du probleme.
1.2.5.b Les machines dictionnaires
Gastaldo par exemple dans [Gast93] utilise l'approche SDDP pour l'implementation
d'une machine dictionnaire sur machine parallele SIMD. L'espace des clefs est
decoupe en D intervalles. La sous-representation utilisee est celle des arbres binaires
bicolores, pouvant supporter les operations des arbres 2-3-4.
Dans une premiere version, une seule instruction (operation) etait envoyee a la
machine dictionnaire. La capacite n'etait donc que de un.
La seconde version propose d'envoyer des groupes d'instructions. Le fait que
l'execution des operations soit synchrone est plus lie a l'architecture de la machine
(SIMD) qu'a des problemes algorithmiques dus au parallelisme.
L'auteur ne faisant aucune hypothese sur les valeurs des clefs, il devient donc
obligatoire de mettre en place un algorithme d'equilibrage de charge entre les
dierentes sous-representations. L'algorithme d'EC considere comme region, les
voisins immediats (gauche et droit) de la sous-representation consideree. La charge
locale est denie en terme de nombre d'elements. Une fonction de repartition assure l'equilibrage des sous-representations au bout d'un certain nombre de groupes
d'operations synchrones.
Une autre machine dictionnaire reprenant les m^emes principes a ete denie sur
machine MIMD par Duboux et Ferreira [DuFe94].
L'architecture de la machine (Volvox) ne permet pas la diusion des instructions. Une seule structure recoit les instructions, puis les renvoie a son voisin. Les
instructions sont donc envoyees de facon pipelinee sur les D sous-representations.
Encore une fois, les auteurs ne font aucune hypothese sur les valeurs des clefs.
Ils utilisent le m^eme algorithme de repartition de la charge que pour la machine
dictionnaire precedente.
1.3 Structures de donnees a operations
paralleles
Paralleliser une structure par l'approche \operations paralleles" consiste a utiliser
une seule representation de la structure, et a eectuer les operations en parallele.
Deux solutions peuvent ^etre envisagees pour paralleliser les operations.
1. P operations synchrones. Toutes les operations parcourent des parties communes de la representation. Il devient donc legitime de considerer qu'un groupe
These Paris VI, Janvier 1996
1.3. Structures de donnees a operations paralleles
20
d'operations peut ^etre execute de facon synchrone. Les parties de parcours
communes sont realisees par un seul processus. Puis lorsque les parcours divergent, le groupe d'operations est separe en deux sous-groupes. Chacun d'eux
est execute par un processus.
2. Operations asynchrones. Cette solution propose d'executer les operations
en pipeline sur la representation. Une operation est composee d'une suite
d'operations elementaires sur des parties distinctes de la representation. Plusieurs
operations peuvent donc ^etre executees en m^eme temps sur la representation.
Sur une machine a memoire partagee, une operation est realisee par un processus. Sur une machine a memoire distribuee, une operation est realisee par
plusieurs processus. Cette technique est issue de la theorie de la serialisation
(Calhoun et Ford [CaFo84]), ou d'un point de vue exterieur a la structure de
donnees, les operations sont executees sequentiellement.
hh
ii
Structure
séquentielle S
Parallélisation
SDOP
Opérations parallèles sur
une seule représentation
Figure 1.4 : Parallelisation par l'approche SDOP
Dans la suite, nous presentons la parallelisation synchrone et puis asynchrone
d'une liste cha^nee. Nous discutons ensuite des co^uts et des limitations de la methode
synchrone, en les illustrant par des exemples de parallelisation de la litterature.
Finalement, nous classons les parallelisations asynchrones, en fonction de la classe
de structure, et de l'architecture de la machine.
1.3.1 Exemple : la liste cha^nee
L'approche operation parallele consiste a n'utiliser qu'une seule liste L.
hh
ii
1.3.1.a Operations synchrones
Soient D operations sur la liste L portant sur D elements (insertion, suppression,
recherche). Les D elements sont tries dans un tableau t par ordre croissant (respectivement decroissant) si L est triee par ordre croissant (respectivement decroissant).
Ils sont notes ti .
Les D processus notes Pi eectuent les D operations synchrones.
These Paris VI, Janvier 1996
1.3. Structures de donnees a operations paralleles
21
P0 eectue l'operation sur t0 . Il parcourt alors L jusqu'a atteindre la position
de t0 dans L. Puis P1 continue le parcours pour atteindre la position de t1 et realise
l'operation sur t1. Ainsi de suite, tous les Pi realisent leurs operations sur leur
element ti . Les D operations synchrones sont donc realisees en un seul parcours.
1.3.1.b Operations asynchrones
Une operation etant une suite d'operations elementaires sur deux ou trois nuds
de la structure, plusieurs operations peuvent ^etre realisees en pipeline.
Dans un environnement distribue, la liste L est distribuee sur P processus,
idealement en nombre egal a celui des elements. L'operation se propage de processus en processus. Si une operation est a un instant donne sur le processus i
(0 < i < n), le processus i ? 1 peut travailler a la realisation d'une autre operation.
Dans un environnement a memoire partagee, la liste reside en memoire commune, les processus voulant realiser une operation, accedent a chacun des elements
en utilisant des primitives d'exclusion mutuelle, pour realiser les modications en
section critique.
1.3.2 Capacite et surco^ut de la methode synchrone
Si la parallelisation est synchrone, la capacite est aussi grande que le permet la
structure. Il est possible d'acceder aux n elements simultanement. Cette technique
est tres interessante car elle permet d'obtenir une grande capacite. Toutefois, cette
methode entra^ne une execution synchrone des operations ce qui dans beaucoup
d'applications, n'est pas souhaitable.
Plusieurs structures ont ete proposees sur ce modele de parallelisation. Ferreira
presente dans [AFRV+94] une methode generale pouvant ^etre appliquees aux structures representees par des graphes orientes sans cycle monotone sur machine SIMD
organisee en Hypercube. Cette methode est appelee cascade en hypercube . Les
exemples presentes sont le probleme des coups de sabres multiples et la manipulation
parallele de quadtree.
Dixon [Dixo94] a presente une le de priorite sur ce modele. La le de priorite
sequentielle originelle est derivee de la structure de Van Emde Boas [BoKZ77].
Un autre exemple de parallelisation eectuee sur ce modele est celle des arbres 23 proposee par Paul, Vishkin et Wagner [PaVW83]. La multi-recherche ne pose pas
de probleme particulier. En revanche, si la multi-insertion (D insertions simultanees)
donne lieu a des operations elementaires de "split" et "join" (voir l'annexe A), un
processus doit modier des parties qu'il pourrait avoir en commun avec un autre
processus. Deux operations voulant eectuer un Split ou un Join sur un m^eme nud
doivent donc ^etre pipelinees.
Une limite de la methode appara^t lorsque la SD a des operations qui modient
la representation. Dans l'exemple precedent de listes cha^nees, considerons deux
operations de suppression portant sur deux nuds x et y de la liste. Si x et y ne
sont pas consecutifs, cela ne pose pas de problemes : ils peuvent ^etre supprimes en
m^eme temps. En revanche, si ils sont consecutifs dans la liste, les deux suppressions
eectives des nuds doivent ^etre serialisees. Les modications se retrouvent donc
pipelinees.
En fait, si les operations doivent modier des parties de la representation, qui
sont communes a deux ou plusieurs d'entre elles, les modications doivent ^etre
serialisees ou pipelinees, pour garder la consistance de la structure.
hh
ii
1.3.3 Capacite et surco^ut de la methode asynchrone
Si les operations s'executent de facon asynchrone, elles accedent a la structure "en
pipeline". La capacite de la SDP depend alors du nombre d'operations elementaires,
These Paris VI, Janvier 1996
1.3. Structures de donnees a operations paralleles
22
du nombre d'elements utilises a chaque pas, et de la possibilite d'executer plusieurs
operations sur une m^eme partie de la structure.
Si par exemple, chaque operation se decompose en h operations elementaires
necessitant deux elements consecutifs, la capacite de la structure ne pourra ^etre que
de h2 .
Il est bien evident que si la structure en question est un arbre binaire, la capacite
dependra de la hauteur de l'arbre et sera donc limitee par le logarithme a base deux
du nombre de nuds.
Notons que les SDPES peuvent ^etre prises comme un cas particulier de SDOP.
Elles peuvent ^etre accedees par plusieurs processus, avec une capacite limitee a un.
Nous dissocions dans la suite les algorithmes de ce type suivant qu'ils sont proposes sur MMP sur MMD, car bien que l'approche de parallelisation soit la m^eme,
les contraintes dues a l'environnement impliquent de grandes dierences quant aux
resultats obtenus.
1.3.4 Memoire partagee
Comme nous l'avons dit precedemment, la SDP reside en memoire partagee. Nous
dissocions maintenant les structures de recherche des les de priorite.
1.3.4.a Les les de priorite
Une operation etant composee d'une suite d'operations elementaires, un processus
n'a besoin que d'une petite partie de la structure a un instant donne. L'utilisation
de primitives d'exclusion mutuelle pour chaque entite modiable de la SDP, rend
possible des operations concurrentes sur la structure. Les primitives d'exclusion
mutuelle sont plus communement appelees verrous ou semaphores. La technique
introduite dite de verrouillage partiel (Jones [Jone89], Deo [Deo89], Mans et Roucairol [MaRo90], Le cun, Mans et Roucairol [LeMR92]), a ete utilisee pour plusieurs
les de priorite comme le Skew-Heap [Jone89, MaRo90], le d-Heap [QuYo84, RaKu88,
BiBr87], le Funnel-Tree [MaRo90].
L'utilisation de primitives d'exclusion mutuelle, necessite un schema de verrouillage interdisant tout interblocage. Le chapitre 3 decrit en detail des schemas de verrouillage pour des structures de donnees arborescentes lorsque toutes les operations
parcourent la structure dans le m^eme sens (Racine-Feuille, ou Feuille-Racine).
Dans le cas du d-Heap, les operations de suppression et d'insertion parcourent
l'arbre dans deux sens dierents. Il faut donc gerer le risque d'interblocage. Bitwas et Browne, [BiBr87], resolvent ce probleme en colorant les nuds par lesquels
un processus passe, an de savoir si le nud qu'un processus veut verrouiller, est
deja detenu par un processus qui parcourt la structure dans un sens dierent
du sien. Dans une seconde version, Bitwas and Browne utilisent des processus
specialises pour eectuer la phase de restructuration. Les processus voulant realiser
une operation, demandent aux processus specialises de l'eectuer pour eux. Cela
permet aux processus clients de se decharger d'une partie du travail, le nombre de
processus specialises etant independant de la taille de la structure.
Rao et Kumar [RaKu88] resolvent le probleme dans le cas d'un tas, en modiant
l'operation d'insertion pour qu'elle se realise dans le sens Racine-Feuille, et non plus
dans le sens Feuille-Racine.
Un autre exemple est le d-Heap de Rao et Kumar [RaKu88] utilisant le blackboard. La formulation est au depart clairement une formulation de SDDP. Puis,
l'algorithme d'equilibrage qui est utilise implique que tous les acces aux D les
passent par le blackboard. Si les tests ou les operations sur le blackboard sont
executes en section critique, les acces a la structure globale sont serialises de ce
These Paris VI, Janvier 1996
1.3. Structures de donnees a operations paralleles
23
fait. Le blackboard est en fait une racine virtuelle a un tas particulier. La strategie
d'equilibrage de charge qui en utilisee transforme une SDDP en une SDOP.
Pour toutes ces FP, les algorithmes des operations de base travaillent sur deux
nuds consecutifs (un nud et son ls). Si la hauteur de l'arbre est h, la capacite
est :
C = h2 :
Les tas ayant une hauteur de logn ou n est le nombre de nuds, la capacite est
de :
C = logn
2 :
Un surco^ut de l'algorithme est d^u aux appels de primitives d'exclusion mutuelle.
Or, comme il en existe une par nud de l'arbre, le nombre d'appels depend aussi
de la hauteur de l'arbre.
Les primitives presentes sur les machines commerciales, proposent des solutions
materielles ou logicielles aux problemes de l'exclusion mutuelle, mais elles prennent un temps non negligeable. Si le temps d'execution d'une primitive d'exclusion
mutuelle est de Texc, le surco^ut de la methode est :
Texc h:
Un autre surco^ut est genere lorsque la memoire de la machine n'est pas physiquement partagee mais virtuellement partagee. Si un processus demande l'acces a un
nud de l'arbre qui n'est pas dans sa memoire locale, il doit d'abord le transferer
de la memoire d'un autre processus pour pouvoir travailler dessus. Ceci est fait automatiquement, mais il ne faut pas oublier ce parametre dans le calcul du surco^ut.
Si le temps de transfert d'une donnee est de Ttr le surco^ut pour une operation est
donc de :
Ttr h:
Finalement le co^ut total engendre par la methode pour une operation est de :
Tgps = (Ttr + Texc ) h:
Il faut aussi remarquer que les valeurs Ttr et Texc sont non seulement des caracteristiques de la machine utilisee, mais qu'elles ne sont generalement pas des
constantes, elles dependent du nombre de processus mis en jeu.
Nous proposons dans le chapitre 3 des solutions permettant de reduire les surco^uts
dus au nombre d'appels aux primitives d'exclusion mutuelle, et/ou au nombre de
processus par les de priorite.
1.3.4.b Les arbres de recherche
Dans le cas de structures de recherche (B-Arbre, Ellis [Elli80], Kung et Lehman [KuLe80],
Lehman et Yao [LeYa81], Kwong et Wood [KwWo83], Paul Vishkin et Wagener [PaVW83],
Ishak [Isha92], Johnson et Shasha [JoSh93], B+Arbre, ou les arbres binaires de
recherche arbre AVL [Elli81]), les operations les plus utilisees sont les operations de
lecture. Elles ne modient pas la representation de la structure. Il est donc legitime
d'utiliser plusieurs niveaux de verrous. Les protocoles de verrouillage sont appeles
Verrouillage d'arbre (Tree-Locking).
Une operation est constituee de phase de lecture seulement, ou de phase de
lecture et ecriture. Sont ainsi utilises:
un verrou en lecture pour la recherche de valeur dans l'arbre,
These Paris VI, Janvier 1996
1.3. Structures de donnees a operations paralleles
24
un verrou en ecriture pour la phase de recherche dans les operations de suppression ou d'insertion,
un verrou exclusif pour la phase de modication de la structure lors de ces
m^emes operations.
Les dependances de verrous sont les suivantes:
compatibilites de verrous
{ N Lecteurs () N Lecteurs
{ 1 Ecrivain () N Lecteurs
incompatibilites de verrous
{ Ecrivain ()
= Ecrivain
{ Exclusif ()
= Exclusif
{ Ecrivain ()
= Exclusif
{ Lecteur ()
= Exclusif
transition possible
{ Ecrivain =) Exclusif.
Lorsqu'un ecrivain veut realiser une operation, il verrouille la partie de l'arbre qu'il
veut modier avec des verrous en ecriture, puis il doit les changer en verrou exclusif
une fois le nud trouve. Ceci produit des parcours redondants de la structure, et
donc un surco^ut d^u a la gestion du parallelisme.
Le probleme est ici d'avoir le minimum de nuds verrouilles a un instant donne,
an d'obtenir le maximum de processus travaillant en m^eme temps dans la structure, et donc assurer un maximum de concurrence.
La capacite depend de la nature des operations, il est tres dicile de l'evaluer. En
eet, si toutes les operations sont des operations de lecture, la capacite est innie.
En revanche si une operation dans un B-Arbre necessite des separations (split)
de tous les nuds du parcours, la capacite est de un.
De plus, les m^emes surco^uts que precedemment subsistent. Il y a ceux dus aux
verrous, et ceux dus aux transferts de donnees sur une machine a memoire virtuellement partagee.
Il en existe encore d'autres : comme nous l'avons dit certaines modications de
l'arbre donnent lieu a des parcours redondants de la structure pour retirer les verrous
exclusifs qui assurent la consistance de la structure. Il est tres dicile de calculer le
surco^ut engendre car encore une fois, il depend aussi de la nature des operations.
1.3.5 Memoire distribuee
Sur une machine a memoire distribuee, paralleliser une structure de donnees selon
l'approche SDOP consiste a placer la SD sur un nombre xe ou variable de processus.
Comme nous le verrons par la suite, le nombre de processus utilises peut varier
entre log n et n (n etant le nombre d'elements contenu dans la structure).
These Paris VI, Janvier 1996
1.3. Structures de donnees a operations paralleles
25
1.3.5.a Structures de recherche
Ottman, Rosenberg et Stockmeyer [OtRS82] ont propose une structure de recherche
pour VLSI. Dans ce cas, la structure est appelee machine dictionnaire, et les operations
sont appelees instructions. La SDP est composee d'un vecteur de N processeurs.
Au dessus de ce vecteur, la machine dictionnaire dispose d'un arbre de processeurs,
les feuilles de l'arbre etant les processeurs du vecteur precedemment cite.
Les instructions (les operations) arrivent sur la machine par la racine de l'arbre et
les reponses sont envoyees par cette m^eme racine. Le principe est simplement de diffuser les instructions de facon pipelinee sur toutes les feuilles de l'arbre. Les elements
sont stockes tries dans le vecteur (un element par case du vecteur). Lorsqu'une instruction d'insertion d'un element arrive, les elements superieurs sont decales d'une
case vers la droite. Dans le cas d'une instruction de suppression, l'element est simplement marque comme etant supprime. Pour obtenir de bonnes performances, des
"trous" sont gardes dans le vecteur. Un "trou" est d^u a la suppression et a l'insertion
d'elements deja existants. Une instruction appelee compress, permet de reduire le
nombre de trous.
Colbrook, Brewer, Dellarocas et Weihl [CBDW91] ont propose un algorithme
d'arbre n-aire de recherche sur MMD. Un nud de l'arbre contient entre 2b?1 et 2b
elements avec b xe. Leur solution consiste a associer un processus par niveau de
l'arbre.
Demandes
Ph
Racine
Ph−1
Ph−2
P1
Feuilles
Reponses
Figure 1.5 : Repartition de l'arbre de recherche
Une operation commence son parcours par le processus detenant le nud racine
puis le continue en passant de processus en processus. Les operations de modication
peuvent donner lieu a des join et des split des nuds de l'arbre. Ces operations
elementaires sont gerees par des envois de messages entre les processus.
Le nombre de processus etant egal a la hauteur de l'arbre, le nombre d'operations
paralleles ne peut depasser ce nombre. La capacite est donc egale a la hauteur h de
l'arbre.
Le surco^ut genere par la methode est aussi proportionnel a la hauteur de l'arbre,
car des envois de messages ont lieu entre les processus gerant la structure. Le surco^ut
pour une operation est donc proportionnel au temps d'envoi d'un message Tmsg et
a la hauteur de l'arbre h :
h Tmsg :
hh
ii
hh
ii
These Paris VI, Janvier 1996
1.3. Structures de donnees a operations paralleles
26
Peleg [Pele90] propose un placement non pas pour permettre une capacite maximale de la structure, mais plut^ot pour minimiser les temps d'acces d'un processus
client demandeur d'operations. Les hypotheses prises concernent le temps d'envoi
et la taille des messages.
La structure est une structure de recherche sous forme d'arbre. Dans une premiere
proposition, la structure est placee dans un seul processus (approche SDPES). Dans
une deuxieme, la structure est placee de la facon suivante : un processus detient la
racine de l'arbre, les autres detiennent les sous-arbres issus de la racine. Puis dans
une derniere version, la racine est dupliquee pour ^etre ainsi atteignable plus rapidement par les processus clients. Ce placement entra^ne dans ces conditions une
capacite de deux. Peleg a neglige le cote parallelisation de la structure, pour ne
s'occuper que d'un placement minimisant en fait, les surco^uts.
1.3.5.b Files de priorite
Les les de priorite parallelisees par cette approche dans un environnement distribue, sont representees la plupart du temps par des arbres.
La diculte est de placer les dierents elements de la structure sur les processus.
Meybodyi [Meyb92] propose trois versions de les de priorite concurrentes sur
un reseau distribue de machines organise en hypercube.
La premiere consiste a placer l'arbre sur une cha^ne de processus. Chacun des
processus est responsable d'un niveau de l'arbre. L'auteur propose d'autres les de
priorite distribuees, car, dit-il, l'operation de suppression a une complexie O(logn).
La structure a placer n'est plus un d-Heap classique, mais un Banyan-Heap. La
representation d'un banyan-heap n'est pas un arbre mais un graphe banyan. Un
graphe banyan est un graphe oriente sans-cycle, comportant L niveaux, de K nuds.
Les arcs sont construits de telle facon qu'il existe un chemin unique d'un nud du
niveau 0 a un nud du niveau L-1. L'auteur propose un algorithme de le de priorite, en organisant les valeurs sur chaque nud en tas. La dierence entre ces deux
dernieres parallelisations reside dans le placement du Banyan-Heap sur l'hypercube.
Dans l'une la representation est placee par niveau, dans l'autre par colonne.
Mans [Mans95] a propose des parallelisations de la binomial queue et d'un dheap, fondees sur cette approche dans un environnement distribue.
L'idee est d'utiliser une structure de tas pour organiser l'ensemble des processus.
Un nud du tas correspond a un processus. Pour stocker plus d'elements qu'il n'y
a de processus, chacun de ces derniers stocke une liste d'elements l sous forme de
Splay-Tree. L'invariant est respecte entre les listes. An de repartir la charge sur
les dierents processus, le processus devant contenir l'element a inserer est choisi
par l'utilisation d'une fonction f. Les proprietes de la fonction assurent que deux
insertions consecutives ne prennent pas le m^eme chemin.
Pourquoi toutes ces structures paralleles sont-elles placees dieremment ?
En fait, les objectifs vises sont dierents :
maximiser la capacite de la structure,
repartir l'occupation memoire,
minimiser les temps de communications entre la structure et les processus
clients.
En nous fondant sur la theorie de la serialisation, quel que soit le placement
envisage, il n'y a qu'un seul point d'entree. Les acces a la structure sont serialises. La
capacite obtenue est proportionnelle au nombre de processus places sur les dierents
These Paris VI, Janvier 1996
1.4. Structures de donnees a operations et a donnees paralleles
27
chemins que peuvent prendre les operations. Ainsi, le placement propose par Mans
implique une capacite de logP et une bonne repartition de l'occupation memoire.
Au contraire, la premiere approche de Meybodi, implique une capacite de P
mais avec une mauvaise repartition memoire.
Ces dierences peuvent ^etre retrouvees entre la structure de recherche de Peleg
et celle de Colbrook, Brewer Dellarocas et Weihl.
En fait, la diculte provient du placement d'une representation sous forme
d'arbre. Obtenir une bonne capacite conduit a associer un processus par niveau
de l'arbre, impliquant obligatoirement une mauvaise repartition de la memoire.
Alors qu'obtenir une bonne repartition memoire oblige a grouper un m^eme nombre
d'elements par processus, degradant ainsi la capacite de la structure vis a vis du
nombre de processus utilises.
Dans tout ce que nous venons de voir, la representation de l'arbre est placee
statiquement sur les processus. La racine de l'arbre est associee a un processus.
Un niveau ou un element de l'arbre est aecte a un processus particulier. Nous
proposons dans le paragraphe3.3 une unication de toutes ces methodes de parallelisation sur machine a memoire partagee et a memoire distribuee en simulant
une memoire partagee, l'acces aux donnees etant realise par des appels de procedure
a distance.
1.4 Structures de donnees a operations et a
donnees paralleles
Les deux approches citees precedemment, ne sont pas incompatibles. Ce paragraphe
montre comment elles peuvent ^etre conjuguees.
Structure
séquentielle. S
Parallélisation
SDODP
Opérations parallèles sur chacunes des D représentations
Figure 1.6 : Parallelisation par l'approche SDODP
1.4.1 Exemple : la liste cha^nee
La SDP est representee par D listes. Les operations sur chacune de celles-ci, sont
parallelisees selon l'approche SDOP.
Sur une MMD, l'approche SDDP consistait a specialiser D processus dans la
gestion de chacune des listes. Dans cette approche, une liste ne va plus ^etre geree
These Paris VI, Janvier 1996
1.4. Structures de donnees a operations et a donnees paralleles
28
par un seul processus mais par autant de processus qu'il y a de nuds dans la le.
Cette forme de structure necessite donc n processus specialises, n representant le
nombre de nuds dans la liste globale.
Sur une MMP, les D listes resident en memoire partagee, les P processus accedent
aux D listes en utilisant l'algorithme concurrent de l'approche SDOP.
1.4.2 Limitation et co^ut de la methode
L'approche SDDP avait l'inter^et de proposer une capacite "a la carte". En eet, il
etait possible de choisir un nombre D de sous-representations. Le probleme etait le
surco^ut engendre. Comme nous l'avons dit precedemment, le surco^ut est represente
par une fonction dependante de D. Si D est trop grand, le surco^ut devient trop
prohibitif par rapport au gain obtenu par la representation de la SD globale. D'autre
part, la representation implique aussi des problemes de semantique sur les operations
et donc de connaissance globale. Cette derniere, si elle doit ^etre assuree dans son
sens le plus strict, doit ^etre geree par un algorithme dont la complexite depend aussi
du nombre D de sous-representations.
Par contre, l'approche SDOP ne pose pas de problemes d'equilibrage de charge
ou de connaissance globale, mais les SD etant souvent representees par des arbres,
leur capacite s'en trouve limitee.
L'approche SDODP, combinant les deux approches precedentes, a pour buts
d'augmenter la capacite et de reduire le surco^ut.
Soient D le nombre de sous-structures et h la capacite de chacune d'entre elles.
Dans le cas ou h depend du nombre d'elements, et ou le nombre d'elements contenus
dans chacune des D sous-representations est de Dn , la capacite d'une structure est
egale a h( Dn ).
La capacite C de la structure globale est :
C = D h( Dn ):
Si h est une fonction lineaire de n, la capacite obtenue est la m^eme que pour
l'approche SDOP.
Dans le chapitre 4, nous montrons les performances de cette approche lorsque la
fonction h n'est pas lineaire et depend ou non du nombre d'elements de la structure.
Le gain s'exprime en terme de temps pour executer une operation. Le nombre
d'elements geres par une operation n'est plus en eet en O(n) mais en O( Dn ).
De plus, pour reduire le nombre d'elements par sous-representations, il faut aussi
reduire le surco^ut de parallelisation des operations. Si le surco^ut s'exprime en fonction de h, le surco^ut global s'en trouve donc reduit.
Dans l'approche SDDP, si la capacite est de P (le nombre de processus susceptibles d'acceder a la SDP), D doit ^etre egal a P. Or, maintenant il sut de choisir
D tel que :
P = D h( Dn ):
Comme nous le verrons dans le chapitre 4, le nombre D obtenu est plus petit que
P. Or les surco^uts sont dans ce cas fonction du nombre D de sous-representations
Cette methode reduit donc aussi le surco^ut genere par une representation de la
structure en SDDP.
Nous presentons dans la suite des SDODP tirees de la litterature. Nous en proposons egalement dans le contexte des les de priorite au chapitre 4.
These Paris VI, Janvier 1996
1.4. Structures de donnees a operations et a donnees paralleles
29
1.4.3 Files de priorite
Si l'on considere les SDPES comme un cas particulier de SDOP, Trienekens et
de Bruin [TrBr92], ansi que Kindervater [Kind94] ont propose une SDODP, qui
pourrait ^etre appelee SDESDP structures de donnees a execution sequentielle et
donnees paralleles.
La le de priorite globale est representee par D sous-structures a execution
sequentielle. Chacune d'entre elles peut ^etre accedee par un groupe de processus.
Un processus particulier, le ma^tre, de chaque groupe realise l'algorithme SDDP.
1.4.3.a File de priorite de Fan et Cheng
Fan et Cheng [FaCh89] presentent une le de priorite parallele, qui dans notre
classement peut ^etre vue comme une le de priorite representee par une liste cha^nee,
parallelisee par l'approche SDODP.
La description originale est la suivante. Les processus accedent a la le par
l'intermediaire d'un vecteur de demande, de taille D. La structure est composee
de couches, chaque couche etant de taille D. Si n valeurs doivent ^etre stockees,
la structure sera constituee de ( Dn ) + 1 couches. Plus la couche est basse, plus les
valeurs contenues sont de faible priorite. Le vecteur de demande est considere comme
la couche 0.
Vecteur de demande
r0
r1
r2
r3
r4
r5
r6
r7
Sorting Netwok
B0
b00
b01
b02
b03
b04
b05
b06
b07
A0
a00
a01
a02
a03
a04
a05
a06
a07
Bm
bm0 bm1 bm2 bm3 bm4 bm5 bm6 bm7
Am
am0 am1 am2 am3 am4 am5 am6 am7
Figure 1.7 : File de priorite de Fan et Cheng
L'algorithme maintient les valeurs triees sur une couche, de facon a ce que tous
les elements d'une couche i soient de plus forte priorite que ceux de la couche i + 1.
L'algorithme consiste a echanger les valeurs entre les couches en fonction de celles
demandees ou donnees a la structure. Ces echanges utilisent un algorithme de fusion
parallele. Alternativement les couches impaires puis paires travaillent.
Cette parallelisation correspond a notre modele SDODP ou la representation est
une liste cha^nee, ou plus exactement un 1-Heap. La FP est representee par D 1Heap ce qui correspond a notre modele SDDP. Chacun des D 1-Heap est parallelise
par l'approche SDOP.
Les operations, bien que paralleles, sont executees de facon synchrone pour assurer un equilibrage parfait et une semantique stricte des operations.
Cette le de priorite peut ^etre vue comme la combinaison de la FP parallele de
Deo et Prasad avec comme representation non plus un 2-Heap mais un 1-Heap en
SDDP, et de la parallelisation des operations en SDOP de Rao et Kumar.
These Paris VI, Janvier 1996
1.5. Conclusion
30
1.4.3.b File de priorite de Horn et Das
Das et Horn [DaHo91] ont presente une le de priorite SDODP fondee sur la le de
Deo et Prasad [DePr92]. L'algorithme de Deo et Prasad est une parallelisation par
approche SDDP du 2-Heap. Or cette m^eme structure a ete parallelisee en SDOP
par Bistwas et Brown [BiBr87] puis par Rao et Kumar [RaKu88]. Il est donc naturel
qu'une parallelisation alliant les deux approches ait ete proposee!
1.4.4 Les structures de recherche
Dans le cadre de l'etude d'une machine dictionnaire speciee en terme de VLSI,
Duboux, Ferreira et Gastaldo [DuFG94] ont presente une structure de recherche
parallelisee selon l'approche SDODP.
Leur structure emploie comme sous-structure concurrente la machine dictionnaire de Ottman, Rosenberg et Stockmeyer [OtRS82] (voir paragraphe 1.3.5). Les
D sous-machines dictionnaires sont chacune connectees a un processeur elementaire
(pe). Chacun des D pe peut communiquer avec ses voisins immediats, et est connecte
a un processeurs particulier appele driver d'entree/sortie par l'intermediaire d'un
reseau diusant. Les instructions arrivent par le driver et sont envoyees a tous les
pe.
Pour resoudre les problemes d'equilibrage de charge entre les dierentes sousstructures, les PE sont aussi connectes par un arbre de calcul de prexe, permettant de calculer la somme partielle du nombre d'elements contenus dans les sousstructures et donc d'equilibrer la charge entre les D sous-structures.
Comme note par les auteurs, cette approche de parallelisation permet de choisir
le nombre de sous-structures pour stocker les elements. L'approche combinee SDODP
entra^ne une reduction du nombre de sous-structures et donc du surco^ut d^u a
l'equilibrage de charge. Elle permet egalement de reduire le temps pris pour l'execution
d'une instruction dans chacune des sous-representations.
hh
ii
1.5 Conclusion
Nous avons propose dans ce chapitre, un classement des structures de donnees paralleles existantes. Ce classement est fonde sur un concept englobant la representation
des donnees en memoire et les operations qui sont susceptibles d'y ^etre eectuees.
Le parallelisme introduit dans ces deux composantes permet de distinguer les structures. Il est possible d'etablir un parallele entre ce classement et celui des ordinateurs
propose par Flynn.
SISD
Single Instruction
Single Data
SIMD
Single Instruction
Multiple Data
MISD
Multiple Instruction
Single Data
MIMD
Multiple Instruction
Multiple Data
SOSD (SDPES)
Single Operation
Single Data structure
SOMD (SDDP)
Single Operation
Multiple Data structures
MOSD (SDOP)
Multiple Operations
Single Data structure
MOMD (SDODP)
Multiple Operations
Multiple Data structures
Ce classement nous a permis de caracteriser les performances en terme de capacite, de surco^ut et de limitation de chacune des grandes classes de SDP.
These Paris VI, Janvier 1996
1.5. Conclusion
31
Nous avons volontairement omis de discuter de la localisation des l'algorithmes
de traitement. Pour chacune des structures de donnees, nous avons considere que la
structure devait executer une ou plusieurs operations, mais nous n'avons pas precise
d'ou venaient les demandes d'operations.
Deux cas sont possibles.
1. Les processus executant l'algorithme de traitement sont les m^emes que ceux
eectuant les operations. Dans ce cas, la structure est consideree comme passive. Les processus qui eectuent les operations, executent aussi l'algorithme
de traitement.
2. Des processus sont specialises dans la gestion de la structure. Les codes de
l'application sont executes par un autre groupe de processus. La SDP est
consideree comme active. Elle se place comme un serveur d'operations sur la
structure.
Le choix entre une structure passive et une structure active depend :
du type de machine parallele utilisee,
du type de parallelisation de la structure de donnees,
du comportement de l'application.
Par exemple, une SDPES sur machine a memoire distribuee est par denition active. En revanche, sur machine a memoire partagee, une structure active ou passive
peut ^etre envisagee. Une structure passive reside en memoire partagee; les processus
y realisent leurs operations en section critique. Si la structure doit ^etre active, un
seul processus eectue les operations. Les communications avec les processus clients
peuvent ^etre faites par l'intermediaire d'une bibliotheque de simulation de passage
de messages au dessus de la memoire partagee.
L'inter^et des structures passives est qu'un processus client n'attendra jamais la
n d'une operation tout en restant inactif (attente de la reponse de l'execution de
l'operation). Il aura toujours soit son operation, soit celle d'un autre processus, a
executer.
En revanche, dans le cas de structures actives, certaines operations donnent
lieu a un resultat qui ne peut ^etre fourni qu'a la n de leur execution (recherche,
suppression dans une structure de recherche). La demande de ce style d'operations
s'apparente a un appel synchrone de procedure a distance. Les processus clients
restent donc inactifs jusqu'a reception du resultat de l'operation.
Cependant, lors d'une insertion, il n'est pas necessaire que les processus demandeurs attendent la n de l'execution de l'operation, car celle-ci n'a pas de retour.
Cette operation s'apparente donc a un appel asynchrone de procedure a distance.
Le comportement d'une application peut aiguiller vers un choix de structure active ou passive. Si par exemple, la plupart des operations utilisees par l'application
sont asynchrones, il est avantageux de choisir une structure active. Ceci permet
d'introduire du parallelisme entre l'application et la structure. En revanche, si la plupart des operations sont synchrones, les processus sont souvent bloques, l'introduction
du parallelisme entre l'application et la structure est inutile.
Toutefois certaines operations dites synchrones peuvent retourner le resultat au
debut de leur execution. Par exemple, les les de priorite representees par des tas
et parallelisees en SDOP ont une operation de suppression qui par denition est
synchrone. Mais, le resultat peut ^etre envoye immediatement, il n'est pas necessaire
These Paris VI, Janvier 1996
1.5. Conclusion
32
d'eectuer la phase de restructuration pour obtenir et retourner l'element contenu
dans le nud racine.
Si ce chapitre nous a permis de classer les approches de parallelisations des
structures de donnees et de degager leur performances et leur limites, les chapitres
suivants de la these apportent des contributions a chacune de ces approches, dans
le cadre des les de priorite.
These Paris VI, Janvier 1996
33
2
Les structures a donnees
paralleles
Chapitre
Nous presentons des methodes de parallelisations de structures dite a donnees paralleles.
Dans une premiere partie, nous presentons une methode generale de parallelisation
SDDP synchrone de les de priorite representees par des tas, l'algorithme de Deo
et Prasad n'en etant qu'un cas particulier.
La seconde partie propose une reexion sur l'equilibrage de charge sur machine
a memoire distribuee. Notre conception d'une le de priorite SDDP s'est reetee
dans celle proposee pour resoudre le probleme d'equilibrage de charge, qui a ete
sous-jacent aux etudes menees dans le cadre du projet STRATAGEME
sur des
applications irregulieres.
2.1 Files de priorite synchrones
De l'etude faite au chapitre 1 de la parallelisation du 2-heap propose par Deo et
Prasad [DePr92], nous degageons une methode generale de parallelisation pouvant
^etre appliquee aux autres tas de la litterature (Leftist-Heap, Skew-Heap, PairingHeap Binomial Queue, etc...). L'inter^et du 2-heap parallele etait de proposer une
parallelisation de le de priorite sous l'approche SDDP, ou la semantique de l'operation
de suppression est respectee dans son sens le plus strict.
Nous montrons en fait que l'idee sous-jacente est la consideration d'un invariant
de tas en parallele. Une approche generale de la gestion du parallelisme dans les tas
consiste alors a maintenir cette propriete d'invariant.
Apres avoir detaille l'algorithme de Deo et Prasad, nous donnons une methode
generale de parallelisation des tas appelee fusion&recopie, nalement nous illustrons
la methode sur deux exemples, le Skew-Heap et le Pairing Heap.
2.1.1 Le 2-heap parallele
Ce paragraphe comporte deux parties distinctes. La premiere donne la representation
du 2-heap parallele, et la seconde expose les operations en insistant sur les operations
elementaires (oe) speciques a ce genre de structure.
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
34
2.1.1.a La representation
Le 2-Heap sequentiel est un arbre binaire ou chacun des nuds de l'arbre contient
un element (voir l'annexe A).
Initialement, Deo et Prasad ont donne la representation du tas parallele comme
un 2-Heap ou chaque nud contient D elements.
L'invariant du tas parallele doit donc prendre en compte cette nouvelle forme
de representation (cf denition 9). Le but des operations va donc ^etre de conserver
cet invariant. Celui-ci peut ^etre vu comme le maintient d'une connaissance globale : l'algorithme de gestion du parallelisme integre aux operations doit maintenir
l'invariant ou autrement dit doit garder la coherence de la structure.
1
6
10 10 11 13
7
8
9
10 11 11 14
2
3
5
5
6
9
12 13 15 17
10
10 11
Figure 2.1 : Exemple de tas parallele
Cette representation est completement equivalente a la representation en SDDP
du chapitre 1. Seule la formulationest dierente. Dans le chapitre 1, la representation
parallele est un ensemble de representations de 2-Heaps. Deo et Prasad considere
la parallelisation des nuds de la representation.
La formulation de Deo et Prasad simplie l'identication des elements, et donc
l'expression des algorithmes des operations. C'est dans cette optique de simplication que nous gardons leur formulation.
En machine, l'arbre binaire est implemente par un tableau T. Le nud racine est
repere par l'indice 1 dans le tableau. Les deux nuds ls d'un nud i sont reperes
respectivement par les indices 2i et 2i + 1.
En sequentiel, un nud i ne stocke qu'un element, ce dernier est note T[i]:e.
En parallele, un nud i stocke une liste de D elements tries par ordre decroissant
de priorites.
La liste d'un nud T[i] est notee T[i]:l. L'element j de cette derniere est T[i]:l[j].
Comme nous le verrons par la suite, une liste ainsi que le nud qui la stocke peuvent
contenir moins de D elements, ils seront denis dans ce cas comme etant non pleins.
Le nombre d'elements contenus dans la liste l est note l:D. Dans tous les cas,
l'element le moins prioritaire de T[i] est appele T[i]:l[D].
Dans la suite, nous emploierons les sigles <, > pour comparer la priorite des
elements. Soient les elements e1 et e2. Si e1 < e2 (respectivement e1 > e2), l'element
e1 est moins (respectivement plus) prioritaire que l'element e2.
Ces signes comparatifs sont aussi employes pour les listes d'elements. Soient l1
et l2 deux listes comprenant au plus D elements : si l1 < l2 (respectivement l1 > l2),
tous les elements de l1 sont moins (respectivement plus) prioritaires que tous les
elements contenus dans l2.
Si deux elements peuvent toujours ^etre compares, il existe beaucoup de cas ou
deux listes ne peuvent l'^etre; nous emploierons alors l'expression l1 6< l2.
Nous notons n le nombre de nuds contenus dans le 2-Heap. En sequentiel, le
nombre d'elements est egal a n, alors qu'en parallele, il est egal a D n.
Le paragraphe suivant donne les algorithmes des operations sur le 2-heap parallele. Une description complete des algorithmes des operations sequentiels, peut
^etre trouvee dans l'annexe A.
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
35
2.1.1.b Les operations Paralleles
La structure de 2-Heap est une le de priorite a information externe, c'est-a-dire
que si une operation viole l'invariant, les modications ne portent non pas sur la
representation de la structure mais sur l'association nud$element. L'invariant est
donc respecte une fois les elements deplaces.
L'insertion Nous supposons dans un premier temps que les n nuds sont "pleins".
Puis, nous expliquons le cas ou le dernier nud T[n] est "non plein".
Cas nuds pleins L'insertion concerne D elements. Le parcours de l'operation
parallele est le m^eme qu'en sequentiel : de T[1] a T[n + 1].
Les D elements a inserer sont places dans l'ordre decroissant des priorites dans
une liste notee l. Pour chaque nud i du parcours, l'oe suivante est executee :
la liste l est fusionnee a la liste T[i]:l. Les D plus petits elements de la liste
resultat, sont replaces dans T[i]:l, les D plus grands sont remis dans l pour
l'operation elementaire suivante.
Finalement, si i est egal a n + 1, les D elements de l sont aectes a T[n + 1]:l,
et n est incremente de 1.
La gure 2.2 montre l'execution d'une oe.
2
5
8
12
D éléments à insérer
Fusion
T[i]
3
4
6
7
T[2i+1]
9
10 14 15
2
3
6
4
5
9
10 14 15
7
8
12
D éléments à insérer
Fusion
T[i]
Chemin suivit par l’insertion de
la racine vers le noeud T[n+1].
Noeud concerné par la fusion
Figure 2.2 : Exemple de deux oe d'insertion dans le tas parallele
Propriete 3 La complexite en parallele d'une operation de D insertions avec
D processus est de :
O(log n logD):
En eet, une operation necessite logn operations elementaires. Chaque operation
elementaire est une fusion de deux listes triees de D elements. En parallele avec
D processus, la complexite d'une fusion ecace est de O(log D). La complexite
pour l'operation parallele d'insertion de D elements est de O(log n log D).
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
36
Remarque: n represente le nombre de nuds et non pas le nombre d'elements.
Si N est le nombre d'elements (N etant un multiple de D), la complexite d'une
operation parallele equivalente a D operations sequentielles devient :
O(log N
D log D):
Cas T[n] non plein Deo et Prasad ont propose un algorithme permettant
d'inserer non pas D elements mais E, (1 < E < D). Le probleme n'est pas
d'inserer moins de D elements mais plut^ot de savoir comment gerer le nud
non plein alors cree. En eet, inserer moins de D elements dans un tas parallele
ou les n nuds sont pleins, ne pose pas de probleme majeur. En revanche,
l'eet de cette insertion est que le nouveau nud T[n] contient E elements. La
prochaine insertion doit savoir gerer ce "trou". Si l'insertion suivante concerne
plus de D ? E elements, l'operation concerne alors deux nuds terminaux T[n]
et T[n + 1]. Elle doit donc emprunter deux chemins dierents.
La solution proposee par les auteurs consiste a eectuer deux operations
"pipelinees"1 .
Soit D le nombre d'elements contenus dans le nud T[n], si l'insertion suivante
concerne D elements, l'operation est decoupee en deux sous-operations.
La premiere insere D ? E elements dans T[n], en suivant donc le chemin de
T[1] vers T[n].
La seconde insere les E elements restants en suivant le chemin de la racine
vers le nud T[n + 1]. Les deux operations etant pipelinees, le surco^ut n'est
pas signicatif.
Propriete 4 L'algorithme d'insertion de E elements (1 E < D) dans un
tas parallele a une complexite de :
O(log n logD):
En eet, dans le cas nud plein, il n'etait employe qu'une version ecace de
la fusion parallele. Or, si une version optimale est utilisee, la complexite de
la fusion reste en O(logD) avec non plus D processus mais logDD processus.
Deux groupes de logDD processus peuvent donc ^etre aectes a chacune des
deux sous-operations.
De m^eme que precedemment, n represente le nombre de nuds et non pas
le nombre d'elements. Si N est le nombre d'elements, la complexite d'une
operation parallele (D operations sequentielles) est :
O(logd N
D e log D):
La Suppression
Cas nuds pleins Nous supposons encore dans un premier temps que les n
nuds sont pleins et que l'operation supprime D nuds.
Les D elements a supprimer se trouvent dans la liste de la racine (T[1]:l). An
de reorganiser le tas parallele, les D elements contenus dans T[n]:l sont places
dans T[1]:l. Puis n est decremente de 1, car T[n]:l est alors vide.
L'algorithme reprend le m^eme principe de parcours qu'en sequentiel. Pour
chaque nud i du parcours, l'oe suivante est executee :
1
suite d'operations se succedant comme dans un pipeline
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
37
Les listes T[i]:l, T[2i]:l, T[2i + 1]:l, sont fusionnees en une liste l. Les D
premiers elements de l (les D plus prioritaires) sont places dans T[i]:l.
Les D suivants sont places dans le nud ls qui contenait l'element le moins
prioritaire (sur la gure 2.3, ce ls est T[2i+1]). De cette facon, le sous-arbre
a partir de ce ls respecte l'invariant.
Les D derniers elements sont places dans l'autre ls. Le parcours continue a
partir de ce ls.
L'operation se termine lorsque i devient superieur a n.
T[i]
3
6
8
13
T[2i]
4
T[2i+1]
5
11 12
10 14 15
9
3
4
5
6
8
9
10 11 12 13 14 15
T[i]
3
4
5
6
T[2i]
T[2i+1]
12 13 14 15
8
9
10 11
Chemin suivit par la suppression.
Noeud concerné par la fusion
Figure 2.3 : Exemple d'une oe de parcours d'une suppression
Propriete 5 La complexite de l'operation de suppression parallele dans un
tas parallele composee de n nuds est de :
O(log n logD):
En eet, l'algorithme parcourt une branche de l'arbre. Or, cette derniere ne
peut exceder une longueur de logn, car l'arbre est exactement equilibre. A
chaque oe, en chaque nud, une fusion de trois listes de longueur D est effectuee. Avec un algorithme parallele ecace, la complexite de la fusion est
O(logD) avec D processus. L'algorithme d'une operation parallele de suppression a donc une complexite de O(log n logD).
La remarque enoncee precedemment est aussi valable ici. n represente le nombre de nuds et non pas le nombre d'elements. Si N est le nombre d'elements
contenus dans le tas parallele, la complexite d'une operation parallele est de
O(log ND logD).
Cas T[n] non plein Deo et Prasad ont propose une modication de l'algorithme
pour supprimer E elements (1 < E < D).
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
38
Si la suppression concerne E elements, il sut de retourner les E premiers
elements de la racine. Puis, an d'eectuer la phase de restructuration, le
nud racine est complete avec E elements du nud T[n]. n est decremente
de 1 si T[n] devient vide.
L'eet de cette version de l'operation est encore une fois de rendre le nud
T[n] non plein, car il ne contient plus que D ? E elements. Si l'operation
suivante a pour but de supprimer D elements, le nud T[n] ne sura pas
a remplir la racine pour eectuer la phase de restructuration. Il faudra donc
dans ce cas prendre les E elements manquants dans le nud T[n ? 1]. Cette
modication ne change pas la complexite initiale.
L'Insertion-Suppression Bien souvent une application utilise une boucle de
sequence xee d'operations sur la le de priorite. Par exemple, dans un Branch
and Bound, avec une strategie de separation dichotomique, la sequence est composee d'une suppression puis deux insertions. Pour une simulation d'evenements
discrets, la sequence est une suppression, puis une insertion.
Deo et Prasad groupent une sequence d'operations en une seule. La nouvelle
operation parallele eectue 2D insertions et D suppressions avec la m^eme complexite que pour une operation parallele (insertion ou suppression).
2.1.2 La methode Fusion&Recopie
Le parallele Heap est fonde sur la notion d'invariant parallele. Or l'invariant etant
une propriete valable sur tous les tas, l'invariant parallele peut ^etre enonce sur tous
les tas. Il est donc possible de donner une methode generale pouvant ^etre appliquee
a tous les tas de la litterature.
L'idee de la methode est de considerer une nouvelle fonction TestPriForList. Son
but est d'etablir un ordre entre deux listes d'elements a partir d'une operation de
fusion&recopie. D'ou le nom que nous avons donne a notre methode. Le paragraphe
suivant detaille et discute son fonctionnement.
Puis, nous expliquons comment cette fonction permet d'exprimer tres simplement les algorithmes paralleles des operations sur un tas parallele.
2.1.2.a La fonction TestPriForList
Le but de la fonction TestPriForList(l1,l2) est de comparer les deux listes l1 et l2
passees en parametre.
La fonction rend toujours les deux listes comparables par redistribution des
elements. Puis, elle retourne :
vrai dans le cas ou l1 < l2, faux si l1 > l2.
La redistribution doit conserver les deux proprietes suivantes :
l'invariant,
l'etat des nuds (pleins ou non pleins).
Pour ce faire, l'algorithme de redistribution appele fusion&recopie est utilise.
1. l1 et l2 sont fusionnees en parallele dans l.
2. si les deux listes sont toutes les deux pleines ou non pleines,
si l1[D] > l2[D], les D premiers elements de l sont places dans l1 et les D
suivants dans l2,
sinon les D premiers elements de l sont places dans l2 et les D suivants dans
l1,
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
39
3. si l1 est pleine et l2 non pleine, les D premiers elements de l sont places dans
l1 et les suivants dans l2.
4. si l1 est non pleine et l2 pleine, le cas est le symetrique du cas precedent.
Les listes l1 et l2 sont donc maintenant comparables, permettant ainsi a la
fonction TestPriForList de retourner vrai si l1 < l2, faux sinon.
Si une liste est au depart pleine, elle reste pleine. Si elle est non pleine, elle peut
devenir pleine ou m^eme vide. Ces proprietes nous seront tres utiles dans la suite.
Nous devons maintenant prouver que la fusion&recopie ne modie pas l'invariant.
Soient x et y deux racines de tas paralleles qui respectent l'invariant.
Theoreme 1 La fusion&recopie executee sur x:l et y:l, ne modie pas l'invariant
en x ni en y.
Preuve: Nous notons x:l (resp. y:l) la liste de x (resp. y) avant l'execution de
la fonction et x:L (resp. y:L) la liste de x (resp. y) modiee par l'execution de la
fonction.
Seul le cas des listes pleines nous interesse. Car par hypothese si un nud est
non plein, c'est une feuille. Or l'invariant est toujours respecte en une feuille. Donc,
quelles que soient les valeurs obtenues apres l'execution de la fusion&recopie, un
nud non plein respecte l'invariant.
Si l'invariant n'est plus respecte en x ou en y, apres l'execution de la fusion&recopie
alors pour x ou pour y, le nouvel element d'indice D est moins prioritaire que le
precedent. En d'autres termes, l'invariant n'est plus respecte si :
x:l[D] > x:L[D]
ou y:l[D] > y:L[D].
Deux cas se presentent.
Cas x et y pleins
Dans le cas ou x:l[D] > y:l[D] (le cas symetrique se demontre de m^eme), x:L
recevra les d elements les plus prioritaires de l. Or, si x:l est trie par ordre
decroissant, il existe au moins D elements dont la priorite est superieure a
x:l[D]. Donc x:L[D] sera forcement plus prioritaire que x:l[D]. L'invariant est
respecte en x.
Les 2D elements de l etant plus prioritaires que y:l[D], il est certain que
y:L[D] = y:l[D]. Donc l'invariant est aussi respecte pour y.
Cas x plein et y non plein
x:L contient les D elements les plus prioritaires de l. Or, si x:l est trie par
ordre decroissant, il existe au moins D elements dont la priorite est superieure
a x:l[D]. Tous les elements de x:L sont donc plus prioritaires que ceux de
x:l[D]. L'invariant est respecte en x.
le nud y etant non plein, il respecte toujours l'invariant.
2
Propriete 6 La fusion&recopie avec D processus a une complexite de
O(logD):
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
40
En eet, cette operation se compose d'une fusion de deux listes de D elements,
d'un test et nalement d'une recopie.
La complexite de la fusion par un algorithme parallele ecace est O(logD) avec
D processus, celle du test est O(1) sur une CREW-PRAM et en O(logD) sur une
EREW-PRAM, et nalement, celle de la recopie est O(1).
La complexite totale de la fusion&recopie est donc O(log D).
Propriete 7 La fonction TestPriForList avec D processus a une complexite de
O(logD):
Cette fonction execute la fusion&recopie sur deux les listes, puis les compare.
La comparaison etant en O(1), la complexite totale de la fonction TestPriForList
est donc O(logD).
2.1.2.b Application de TestPriForList
Notre methode pour paralleliser un tas comporte deux etapes distinctes. La premiere
consiste a exprimer la representation parallele du tas, la seconde a paralleliser le
code des operations.
Parallelisation de la representation Chaque nud du tas contient une liste
de D elements. Cela peut ^etre realise pour chacun des tas de la litterature.
Parallelisation des operations Dans une premiere partie, nous exposons la
methode dans le cas d'un tas parallele dont tous les nuds sont pleins. Puis dans
une seconde, nous donnons les modications a apporter dans le cas contraire.
Cas d'un tas parallele plein
Pour obtenir l'expression de l'algorithme parallele sur un tas, a partir de celle
du code sequentiel, il sut de remplacer :
1. toutes les references a un element par une reference a une liste,
2. tous les tests sur les priorites des elements par la fonction TestPriForList.
En fait, l'application de la methode est tres simple. Il sut de considerer
une liste d'elements comme un seul element parallele, une bo^te noire, ou un
objet. La fonction TestPriForList (ou methode de l'objet) en comparant deux
elements paralleles x et y, "cache" le parallelisme et gere la possibilite que x
et y ne soient pas comparables.
De cette facon, les algorithmes paralleles et sequentielles sont les m^emes. La
seule dierence reside dans l'objet qui est considere comme priorite.
Cas d'un tas parallele non plein
Si certains nuds sont non pleins, l'operation d'insertion dans un 2-Heap doit
^etre separee en deux sous-operations (voir paragraphe precedent).
Cette division peut ^etre automatique, toutes les informations sont disponibles.
Si le nud T[n+1] peut contenir les E elements a inserer, une seule operation
sut. Dans le cas contraire, deux sous-operations sont utilisees.
L'algorithme de l'operation de suppression pour moins de D elements, correspond a l'application de la methode a l'algorithme de suppression sequentiel
en faisant toutefois attention aux nombre d'elements a prendre dans T[n].
Si la suppression concerne E elements avec 1 < E < D, il sut de transferer
E elements du nud T[n] vers le nud racine T[1].
Dans le cas ou T[n] contient moins de E elements, le transfert concerne aussi
le nud T[n ? 1].
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
41
Application aux tas a information interne Le d-Heap est une le de priorite
a information externe, c'est a dire que la structure de l'arbre n'est a aucun moment
modiee.
Toutes les autres FP sous forme de tas sont a information interne. L'element
a stocker est associe a un nud de l'arbre et il n'en sera jamais dissocie tout au
long de son existence. L'invariant et l'equilibrage du tas vont ^etre respectes par
modication de la representation.
E tant donnees ces dierences, la methode est-elle adaptable aux tas a informa-
tion interne ?
Nous allons montrer que cette association nud$element et les modications
de la representation ne sont pas une entrave a la methode.
Association nud element Un nud ne contient plus un seul element mais
une liste de D elements. L'eet de la fonction TestPriForList deplacant des
elements d'un nud vers un autre nud, contrarie la propriete des tas a information interne. En fait, la fonction TestPriForList ne modie pas l'invariant
(voir le theoreme 1). Elle ne change pas la priorite d'un nud vis a vis de ces
ls.
Modications de la representation Les parcours eectues par les algorithmes
sur des tas a information interne empruntent toujours la m^eme branche de
l'arbre.
Dans les cas du Skew-Heap et du Leftist-Heap, les operations parcourent toujours la branche droite de l'arbre. Pour le Pairing-Heap, le chemin emprunte
ne concerne que les ls de la racine (voir le paragraphe A.2.1.d).
L'arbre garde son equilibre par des modications eectuees sur la branche
parcourue. Pour le Skew-Heap, pour chaque nud du parcours les pointeurs
ls droit et ls gauche sont echanges. Dans le Leftist-Heap, les pointeurs sur
deux nuds ls ne sont echanges que si le sous-arbre droit est plus profond
que le sous-arbre gauche. L'algorithme du Pairing-Heap, quant a lui, reduit le
nombre de ls de la racine a chaque suppression (pairing).
La methode presentee ci-dessus n'inue en rien sur l'algorithme sequentiel de
re-equilibrage. Partant du principe que chaque nud contient non plus un
seul element mais D elements, la representation reste la m^eme en sequentiel
et en parallele, si on assimile une liste d'elements a un seul element parallele.
Les trois paragraphes suivants presentent l'application de notre methode aux
2-Heap, Skew-Heap et Pairing-Heap.
2.1.3 Le 2-Heap
L'Insertion Pour exprimer l'algorithme parallele de 2-Heap a partir de l'algorithme
sequentiel, il sut de remplacer dans le code sequentiel toutes les references a un
element (e) par une reference a une liste (l), et de remplacer la fonction TestPri par
une fonction parallele appelee TestPriforList. Le pseudo-code suivant presente ces
substitutions pour l'oe de l'insertion.
procedure ParaInsOE(i,l)
begin
if ( TestPriForList(T[i].l,l) ) then
T[i].l$l
endif
end InsOE
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
42
OE i : TestPriForList
3
OE i : résultat de la TestPriForList
4
6
7
Liste l
2
3
4
Liste l
5
TestPriForList
T[i]
2
T[i]
5
8
12
T[2i+1]
9
10 14 15
OE i : échange
6
7
8
12
T[2i+1]
9
10 14 15
OE suivante
6
7
8
12
Liste l
échange
T[i]
2
3
4
5
T[2i+1]
9
10 14 15
Liste l
2
3
4
5
T[i]
9
10 14 15
6
7
8
12
Chemin suivit par l’opération d’insertion
Liste concernée par l’OE.
Figure 2.4 : Exemple d'une oe d'insertion
La suppression Les m^emes substitutions sont realisees.
function InsOE(i)
begin
if ( TestPriForList(T[2i].l,T[2i+1].l) ) then
s=2i+1
else
s=2i
endif
if ( TestPriForList(T[i].l,T[s].l) ) then
T[i].l$T[s].l
endif
return s
end InsOE
Cet algorithme change legerement celui de Deo et Prasad. En eet, ces derniers
presentent l'oe de la suppression, comme une fusion de trois listes. Notre algorithme
consiste en fait, a decomposer la fusion sur les trois listes en deux fusions successives.
Notre methode peut ^etre appliquee au d-heap. Il sut, en chaque nud T[i], de
rechercher l'element le plus prioritaire parmi les d ls de T[i], en utilisant TestPriForList comme fonction de test.
2.1.4 Le Skew-Heap parallele
L'algorithme de Skew-Heap est particulierement adapte a notre methode. En eet,
comme decrit dans le paragraphe A.2.1.c, l'algorithme de base du Skew-Heap est
la fusion (Meld) de deux Skew-Heaps. A partir de cette operation, les operations
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
43
1 Test entre les deux fils.
2 Test entre le fils séléctionné et le père
T[i]
3
6
8
T[i]
T[2i+1]
T[2i]
4
3
13
5
11 12
9
10 14 15
6
T[2i+1]
4
5
9
10
11 12 14 15
TestPriForList
3 Si 2 vrai échange
4 Résultat de l’OE
T[i]
T[i]
9
3
3
10 13
T[2i+1]
T[2i]
4
5
6
13
T[2i]
TestPriForList
8
8
11 12 14 15
4
8
5
6
T[2i+1]
T[2i]
9
10 13
11 12 14 15
échange
Chemin suivit par la suppression.
Noeud concerné par une OE.
Figure 2.5 : Exemple d'une oe de suppression
d'insertion et de suppression peuvent facilement ^etre implementees. Dans la suite,
nous gardons le terme anglais Meld pour ne pas creer d'ambigute avec la fusion de
notre operation fusion&recopie.
2.1.4.a Operations paralleles sur D elements
L'application de la methode presentee precedemment sut a obtenir un Skew-Heap
parallele.
Le theoreme 1 assure que la structure resultante respecte l'invariant.
Le pseudo-code suivant presente la procedure oe modiee. La version sequentielle
est presentee dans l'annexe A.
procedure oe(p,h1,h2)
if (TestPriForList(h1.l,h2.l) then h1$h2 endif
left(p):=h1
p:=h1
h1:=right(p)
right(p):=left(p)
end oe
Propriete 8 Le nombre d'oe (au sens de la complexite amortie) pour un nombre
n de nuds est de :
O(logn):
En eet, le parcours est exactement le m^eme qu'en sequentiel, il n'y a ni parcours
redondant ni parcours supplementaire. Or, Tarjan [SlTa86] montre que le nombre
d'operations elementaires a une complexite amortie en O(logn).
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
44
t
3
4
8
6
Sous−Racine insérée par
la précédente opération
élémentaire
Opération élémentaire
x
9
y
TestPriForList
10 12 15
11 13 14 17
z
w
17 19 23 25
16 20 21 24
t
3
4
6
8
x
9
10 11 12
z
w
Prochaine opération
élémentaire
16 20 21 24
17 19 23 25
y
13 14 15 17
Figure 2.6 : Exemple d'une operation elementaire de fusion de deux Skew-Heaps en
parallele
Propriete 9 La complexite amortie de l'operation de Meld avec un nombre n de
O(log n logD):
nuds est de :
Le nombre d'oe est log n. Or, chacune d'elles execute une fois la fonction TestPriForList, la complexite d'une operation de Meld est donc O(logn log D).
2.1.4.b Operations paralleles sur E elements
L'Insertion L'operation d'insertion est eectuee en fusionnant le Skew-Heap avec
le nud a inserer.
Si le nud a inserer contient E elements (1 < E < D), cela ne pose pas de
probleme particulier. En eet, pour chaque oe, le resultat de la fonction TestPriForList fait que le nud insere est plein, le nud restant a inserer non plein. Le
seul nud non plein sera la feuille de la branche construite par l'operation de Meld.
En decoule immediatement que seules les feuilles du Skew-Heap pourront ^etre non
pleines.
Il peut se faire qu'une operation d'insertion n'ajoute pas de nud dans l'arbre.
Car si la feuille de la branche parcourue par l'operation contient moins de D ? E
elements, il ne sera pas necessaire d'ajouter un nud qui, de toute facon, est vide.
La Suppression La suppression est aussi implementee a partir de l'algorithme
de Meld.
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
45
Si D elements doivent ^etre supprimes, le nouveau Skew-Heap est obtenu en
fusionnant les sous-arbres droit et gauche de la racine.
Si la suppression ne concerne que E elements, il reste D ? E elements dans le
nud racine. Il faut proceder a un traitement specique pour ces elements.
L'operation peut ^etre decoupee en deux sous-operations s'executant en pipeline.
1. Eectuer l'operation de Meld sur les deux Skew-Heap ls de la racine.
2. Inserer les D ? E elements de l'ancienne racine dans le nouveau Skew-Heap.
Ces deux sous-operations sont commutatives.
2.1.5 Le Pairing-Heap parallele
Le Pairing-Heap est aussi une le de priorite fondee sur la notion de complexite
amortie [FSST86]. Une description complete peut ^etre trouvee dans l'annexe A.
Nous commencons par exposer les algorithmes des operations pour D elements,
puis pour un nombre plus petit E elements.
2.1.5.a Operations sur D elements
Comme presente dans le paragraphe precedent, la methode peut ^etre appliquee telle
quelle a partir du code sequentiel. Les pseudo-codes des operations d'insertion et
de suppression sont :
procedure Insertion(x,h)
begin
if (h=null) then
h:=x
else
FirstBrother(x):=FirstSon(h)
FirstSon(h):=x
if TestPriForList(x.e,h.e) then
x.e$h.e
endif
endif
end Insertion
function pairing(h)
begin
if (h=null) then
return null
endif
if (FirstBrother(h)=null) then
return h
endif
n:=FirstBrother(h)
FirstBrother(h):=null
reste:=FirstBrother(n)
if TestPriForList(h.l,n.l) then
h$n
endif
FirstBrother(n):=FisrtSon(h)
FisrtSon(h):=n
FirstBrother(h):=pairing(reste)
if TestPriForList(FirstBrother(h).l,h.l) then
tmp:=FirstBrother(h)
FirstBrother(h):=FirstBrother(tmp)
These Paris VI, Janvier 1996
2.1. Files de priorite synchrones
46
FirstBrother(tmp):=h
return tmp
endif
return h
end pairing
2.1.5.b Operations sur E elements
Comme pour les autres tas, la methode peut ^etre appliquee telle quelle.
Mais la representation du Pairing-Heap etant un arbre n-aire, la place memoire
occupee n'est pas optimisee. Beaucoup de nuds peuvent ^etre non pleins.
Nous presentons des modications de l'algorithme permettant de ne garder qu'un
nombre reduit de nuds non pleins.
L'Insertion Si un nud est insere, il devient le premier ls de la racine. Donc, si
k nuds non pleins sont inseres a la suite, il existe k nuds non pleins dans
l'ensemble des ls de la racine.
Il est possible de ne garder qu'un seul nud non plein, au bout de k insertions.
En eet, une insertion place le nud insere en tant que premier ls de la racine.
Il est donc simple de maintenir, le premier ls comme seul nud non plein,
avec une complexite de O(log D).
Nous notons le premier ls de la racine y. L'insertion du nud x debute par
eectuer le test sur x et la racine. Puis, x est "vide" pour remplir y. Ensuite
si x est non vide, il est insere en tant que premier ls de la racine.
La Suppression La suppression ne pose pas de reel probleme.
Si moins de E elements sont supprimes, la racine ne contient plus que D ? E
elements. Or l'algorithme de Pairing consistant a trouver une racine, a partir
d'une liste de nuds, l'ancienne racine peut ^etre consideree comme faisant
partie integrante de la liste de nuds.
An de montrer que la structure optimise les ressources memoires, nous devons
demontrer que si un element est non plein, il est une feuille du tas.
L'insertion d'un nud x, consiste a placer x comme ls de la racine. Or x est
une feuille, donc l'insertion ne genere pas de nuds non pleins qui ne soient pas
une feuille.
Il reste donc a demontrer que les modications de la representation engendrees
par l'operation de suppression ne generent pas de nuds non pleins en dehors des
feuilles.
L'operation de Pairing utilise la fonction TestPriForList pour grouper deux
nuds consecutifs. Cette operation ne peut pas transformer un nud plein en un
nud non plein. La seule facon de generer un nud non plein qui n'est pas une
feuille, est donc de grouper deux nuds tel que le nud non plein devienne le pere
du nud plein.
Cette operation ne peut generer une telle conguration, car si il existe un nud x
qui est plein parmi les deux, x recevra les elements les plus prioritaires. Il deviendra
donc obligatoirement le pere de l'autre nud.
Il est donc clair que seule une feuille du tas peut ^etre non pleine.
2.1.6 Conclusion
Nous avons propose une methode appelee fusion&recopie, applicable a tous les tas
de la litterature.
These Paris VI, Janvier 1996
2.2. Files de priorite asynchrones
47
Nous avons montre son application a trois d'entre eux, le d-Heap, le Skew-Heap
et le Pairing-Heap.
Il est vrai que le surco^ut engendre est consequent (voir le chapitre 1). Mais il
represente le prix a payer si on veut une une structure SDDP assurant un equilibrage
parfait et une semantique stricte de l'operation de suppression.
D'autres les de priorite SDDP comme celle de Diderich et Gengler [DiGe94]
assurent aussi une semantique stricte de l'operation de suppression avec un surco^ut
moins important. Mais leur fonctionnement est fondee sur un comportement de
l'application bien specique (voir le paragraphe 1.2.4.b). De plus, dans un environnement distribue, elle n'assure pas un equilibrage parfait en terme de place memoire
occupee.
Comme nous l'avons vu et comme nous le verrons plus precisement par la
suite, une SDOP engendre un moindre surco^ut. Ce modele s'avererait donc plus
interessant. En fait, d'autres facteurs vont entrer en ligne de compte.
Par exemple, la capacite des structures SDOP asynchrones depend du nombre
d'elements stockes. Si le nombre de processus disponibles est superieur a la capacite
limite, des processus risquent de perdre beaucoup de leur temps dans l'acces a la
structure.
Ensuite, dans un environnement distribue, pour des raisons d'optimalite de la
capacite d'une SDOP asynchrone, le placement de la structure n'equilibre pas la
place memoire occupee. Si les elements stockes sont tres volumineux, un tel placement peut s'averer impossible suite a la capacite memoire de chacune des machines.
Les SDOP synchrones (voir le paragraphe 1.3.2) ne sont pas limitees en capacite
comme leurs analogues asynchrones. Toutefois, la complexite de leurs operations
dependent du nombre d'elements n, alors que la complexite des operations d'une
SDDP depend de Dn . Si l'application accepte des operations synchrones, le choix entre une le de priorite parallelisee par notre methode fusion&recopie et une SDOP
synchrone, est donc guide par les valeur de n et de D.
Ces structures sont tres interessantes si les elements a stocker sont tres volumineux, si peu d'operations sont eectuees, si le rapport nombre d'elements sur
le nombre de processus est trop petit pour utiliser une SDOP, et si nalement
l'operation de suppression doit avoir une semantique stricte.
2.2 Files de priorite asynchrones
Nous revenons sur le modele SDDP asynchrone. La structure etant composee de D
sous-structures, ce modele rel^ache la semantique de l'operation de suppression et
necessite une strategie d'equilibrage de charge.
2.2.1 E quilibrage de charge et machine a memoire
distribuees
Il est clair que l'equilibrage de charge est LE probleme a resoudre dans ce modele.
La litterature orissante sur le sujet est justiee d'ailleurs par sa diculte.
Comme nous l'avons dit au chapitre precedent, dans le cas des les de priorite,
l'equilibrage de charge doit prendre en compte les deux notions suivantes :
1. la "qualite" des elements,
2. la quantite d'elements.
These Paris VI, Janvier 1996
2.2. Files de priorite asynchrones
48
Tous les travaux ont montre l'importance qu'il y avait a combiner ces deux
notions, pour obtenir une strategie d'equilibrage de charge ecace.
Plus la charge locale prend en compte la qualite des elements, plus la semantique
de l'operation de suppression est respectee.
A partir du moment ou l'on accepte de rel^acher la contrainte de semantique
sur l'operation de suppression, on essaie de minimiser le nombre d'executions de la
procedure d'equilibrage de charge, pour reduire le co^ut global de la gestion de la
structure en parallele.
Pour vouloir minimiser le nombre d'execution de la procedure d'equilibrage de
charge, il faut conna^tre precisement la charge de travail qui sera generee a partir
de chaque element.
Dans beaucoup d'applications, cette charge est dicile a calculer. Car comme
le montre Roch, Villard et Roucairol [AGFR+95], si le graphe de precedence caracteristique de l'application est semi-previsible ou non previsible (exemple: algorithme de parcours d'espace de recherche), cette charge n'est pas connue a l'avance.
Dowaji propose une fonction heuristique appelee potentialite qui attache a un
element x (un sommet de graphe de precedence) l'evaluation de la charge dont il est
l'initiateur, c'est-a-dire une evaluation de la charge representee par le sous-graphe
de racine x. Il demontre l'ecacite de cette notion pour les algorithmes de Branch
and Bound.
Toutefois, cette notion est aussi utilisee comme nouvelle priorite vis-a-vis de
l'application. Un processus qui demande un sous-probleme a explorer, n'obtient pas
celui de meilleure evaluation mais celui de plus grande potentialite. Il n'est pas
impossible que cette nouvelle forme de priorite pour un algorithme de recherche
soit meilleure que la classique valeur de la fonction d'evaluation. Mais en tous cas,
la strategie de recherche n'est plus meilleure evaluation d'abord, mais meilleure
potentialite d'abord.
La notion de priorite utilisee pour les operations sur la le de priorite globale
est confondue a celle utilisee pour minimiser le co^ut de l'equilibrage de charge.
Deux criteres de priorites
1. pour l'application,
2. pour l'equilibrage,
sont donc distincts voir antagonistes.
Le premier peut ^etre qualie d'externe. Il est utilise par les operations sur la le
de priorite globale qui sont demandees par la procedure de traitement. Le second
est utilise en interne de la le globale, pour choisir les elements qui seront transferes
lors de l'equilibrage de charge.
La notion de priorite pour l'equilibrage peut integrer celle utilisee pour l'application.
Le calcul de la potentialite d'un element x, introduite par Dowaji, utilise dans ce
contexte, l'evaluation de x au sens Branch and Bound. Or, cette valeur est consideree
comme la priorite de x, dans un Branch and Bound meilleur d'abord. La notion de
potentialite inclut donc non seulement une charge de travail mais aussi la priorite
du nud. Plus elle l'integrera, plus la semantique de l'operation de suppression sera
respectee.
Cette separation des deux notions, permet d'exprimer, ce que doit ou peut faire
l'equilibrage de charge, tout en laissant la notion de priorite pour le cote applicatif
inchangee.
Chaque sous-structure de la structure globale SDDP doit donc supporter les
operations sur ces deux criteres.
These Paris VI, Janvier 1996
2.3. Conclusion
49
Gendron et Crainic [GeCr95], ont appele cette seconde priorite, une priorite de
deuxieme ordre, proposant ainsi une graduation de ces deux criteres, l'un etant plus
important que l'autre.
Ceci ne nous parait pas justie, un element peut ^etre le plus prioritaire pour
l'application et pour l'equilibrage de charge.
Pour renforcer cette reexion, un parallele peut ^etre fait avec les travaux d'ordonnancements,
ou de placements, dans un systeme distribue.
Dans ce contexte, une t^ache peut avoir une certaine duree, un certain co^ut
d'utilisation des ressources du site (CPU, memoire, disque, etc), mais aussi une
certaine priorite.
Les t^aches les plus longues ou les plus courtes, ne sont pas forcement les plus
prioritaires. Nous retrouvons encore les deux notions distinctes.
2.2.2 Une le de priorite "virtuelle" ou systeme
Dans le cadre du projet STRATAGE ME, des travaux ont ete realises pour utiliser
des regulateurs de charge dynamique, dans des applications paralleles en Optimisation (Branch and Bound), et en Algebre lineaire (factorisation de Choleski sur des
grandes matrices creuses).
Nous avons contribue au travail realise pour les applications Branch and Bound.
En considerant la procedure d'exploration d'un element ou d'un sous-arbre eectuee
par la methode Branch and Bound comme une t^ache systeme d'un systeme distribue
(un thread dans un environnement multi-threade), nous avons etudie le comportement de regulateur de charge propose par les deux equipes de STRATAGE ME;
Lille- LIFL et Grenoble - LMC-IMAG.
Le regulateur dynamique de charge integre au systeme joue en fait le r^ole de
la procedure d'equilibrage de charge d'une structure SDDP, et le "scheduler" sur
chaque processeur, integrant une le de priorite de t^aches a executer, joue un r^ole
equivalent a celui de la sous-le de priorite.
Deux regulateurs de charge ont ete utilise PM2 [NaMe95, NaMe95b, AGFR+95]
et Athapascan [AGFR+95].
Notre contribution a surtout consister a integrer dans la bibliotheque BOB (voir
chapitre6), ces deux regulateurs de charge. Denneulin (E quipe LIFL, Lille) pour
PM2 et Vermerbergeen (E quipe IMAG, Grenoble) pour Athapascan continuent ces
travaux.
2.3 Conclusion
Nous nous sommes interesse dans ce chapitre a la parallelisation SDDP des les de
priorite.
Nous avons propose d'une part, une methode generale appelee fusion&recopie
permettant de paralleliser en SDDP tous les tas de la litterature. Cette methode
utilise une formulation de l'invariant pour une for^et de tas.
Elle est fondee sur l'algorithme fusion&recopie permettant de rendre comparables deux listes d'elements tries par ordre croissant.
Son inter^et est d'assurer une semantique stricte de l'operation de suppression et
un equilibrage parfait des sous-les, tout en orant une capacite egale au nombre
de processus utilisees.
Nous avons ensuite montre l'inuence de notre vue de la parallelisation SDDP
d'une le de priorite, sur la conception d'un algorithme d'equilibrage de charge pour
machine a memoire distribuee. L'etude d'un equilibrage fonde sur deux criteres, donc
deux notions dierentes de priorite nous semble une voie a explorer dans le futur.
These Paris VI, Janvier 1996
2.3. Conclusion
50
Nous esperons pouvoir continuer la collaboration avec les laboratoires de Lille et
Grenoble, pour valider cette idee en utilisant les bibliotheques PM2 et Athapascan.
These Paris VI, Janvier 1996
51
3
Structures de donnees a
operations paralleles
Chapitre
Au chapitre 1, nous avons presente la classe de structures de donnees a operations
paralleles (SDOP).
Cette classe se caracterise par l'utilisation d'une seule representation. Les operations
en version asynchrone accedent a la representation en pipeline.
L'inter^et de ces structures est qu'elles respectent strictement la semantique de
l'operation de suppression pour les les de priorite. Et contrairement aux structure
SDDP, il n'est pas necessaire d'utiliser une strategie d'equilibrage de charge.
Plusieurs structures de ce type ont ete proposees dans un contexte de machine
a memoire partagee et distribuee. Toutes utilisent le pipeline comme technique de
base.
Le but de ce chapitre est de proposer une methode generale de parallelisation
SDOP asynchrone, de structures de donnees arborescentes.
Notre methode se veut unicatrice dans le cas ou toutes les operations modient
la SD, c'est a dire lorsque tous les acces sont des ecritures.
Nous presentons d'abord la methode sur machine a memoire partagee, appelee
dans ce contexte "verrouillage partiel".
Elle est fondee sur l'utilisation de primitives d'exclusion mutuelle pour assurer la
coherence de chaque entite modiable de la structure. Chaque processus doit d'abord
verrouiller un nud si il veut le modier.
Une utilisation non contr^olee de ces primitives entra^ne des risques d'interblocage.
Nous proposons trois schemas de verrouillage pouvant ^etre appliques a la plupart des
structures de donnees arborescentes. Nous montrons pour chacun d'eux l'inexistence
d'interblocage.
Les primitives d'exclusion mutuelle etant a l'origine de fort surco^ut, nous montrons que dans certains cas, une seule primitive est necessaire, les acces exclusifs
sur les nuds de la structure etant assures par un mecanisme de marquage.
Ce travail a fait l'objet de plusieurs conferences :
pour plusieurs les de priorite dans une simulation de B&B : International
Workshop On Principles Of PArallel Computing, OPOPAC'93, decembre 1993,
Hermes, France.
pour la treap dans un algorithme A* : Canada-France conference on PARallel
computing, mai 1994, Universite Concordia, Montreal, Canada.
These Paris VI, Janvier 1996
3.1. Verrouillage partiel
52
pour plusieurs les de priorite dans des B&B resolvant les problemes de l'Aectation
Quadratique, et du Voyageur de Commerce : IFIP WG 10.3 International
Workshop and Summer School on Parallel Algorithms for Irregular structured
Problems, septembre 1994 , Geneve.
Nous etendons ensuite la methode aux machines a memoires distribuees. Cette
extension est fondee sur une simulation d'une memoire partagee sur machine a
memoire distribuee, utilisant des appels de procedures a distance.
L'inter^et de cette methode etendue est multiple. Elle permet d'exprimer toutes
les structures de donnees proposees dans la litterature par l'utilisation de dierents
modes operatoires de la simulation.
Les surco^uts provenant du nombre d'appels de procedures a distance, nous montrons qu'ils peuvent ^etre reduits pour les les de priorite a information interne.
3.1 Verrouillage partiel
Une operation sur une structure de donnee est composee d'une suite d'operations
elementaires. Un processus voulant realiser une operation sur une SD, n'a donc
besoin que d'une petite partie de la SD a un instant donne. L'acces a cette petite
partie peut ^etre protege par une primitive d'exclusion mutuelle. D'autres processus
peuvent ainsi realiser leurs operations en m^eme temps sur la m^eme SD.
Cette methode entra^ne l'utilisation de primitives d'exclusion mutuelle dans chacune des entites modiables de la structure. Pour une liste ou pour un arbre, cette
entite est un nud. Pour un tableau, l'entite sera une case du tableau, etc.
La notion de verrouillage partiel pose un certain nombre de problemes comme:
Famine : un processus doit pouvoir acceder a la structure de donnee en un temps
ni,
Interblocage: les processus ne peuvent verrouiller une partie de la structure sans
obeir a certaines regles, car l'utilisation de verrous peut entra^ner l'interblocage
des processus,
E quite : tous les processus ont la m^eme chance d'acceder a la structure.
Les problemes de Famine et d'E quite sont lies aux primitives d'exclusion mutuelle
utilisees. La plupart des machines a memoire partagee actuelles ore des primitives
d'exclusion mutuelle resolvant ces problemes.
L'interblocage est plus dicile a resoudre. En eet, si les processus verrouillent
des parties de la structure sans obeir a certaines regles, a certain protocole, les processus se trouveront bloques. Le paragraphe suivant presente dierents protocoles
de verrouillage emp^echant les inter blocages dans le cadre de structures de donnees
arborescentes.
3.2 Verrouillage partiel pour les structures de
donnees arborescentes
Nous presentons la methode sur des SD de type arbre. Nous supposons que chacun
des nuds de l'arbre peut ^etre verrouille individuellement.
3.2.1 Protocole avec verrou
Dans la litterature (Bistwas et Borwne [BiBr87], Rao et Kumar [RaKu88], Jones [Jone89]),
la partie de l'arbre verrouillee par un processus est appelee fen^etre ou bulle.
These Paris VI, Janvier 1996
3.2. Verrouillage partiel pour les structures de donnees arborescentes
53
Denition 10 La fen^etre d'un processus Pi realisant une operation de base sur une
structure arborescente S , est denie comme etant l'ensemble Fi des nuds x de S
tel que :
si Pi a un verrou sur x, x appartient a Fi ,
si Pi n'a pas de verrou sur x et x est antecedent d'un nud y appartenant a
Fi et successeur d'un nud z appartenant a Fi , alors x appartient a Fi .
Des exemples de fen^etres sont presentes dans les gures 3.1 et 3.2.
Pour eviter les interblocages de processus, il sut que ces derniers, lors de la
realisation d'une operation de base, obeissent a un schema de verrouillage qui interdise la creation de cycles de processus attendant le verrouillage de nuds.
Nous proposons deux schemas de ce type, s'appliquant aux structures arborescentes dont toutes les operations de base parcourent l'arbre dans un m^eme sens :
feuille-racine, ou racine-feuille.
Le principe de ces schemas est de permettre aux processus, la construction et le
deplacement de fen^etres, pendant la duree d'une operation de base, sous certaines
contraintes assurant l'inexistence d'interblocage.
Les schemas de verrouillage presentes supposent qu'un processus n'essaiera pas
de verrouiller un nud sur lequel il detient deja un verrou.
Pour toutes les demonstrations, nous utilisons les notations suivantes :
S structure arborescente dont les operations de base se realisent toutes dans le
m^eme sens,
N ensemble des nuds composant S,
r racine de S,
P = fP1; :::; Ppg ensemble des p processus pouvant realiser des operations de base
sur une structure S,
un antecedent de x est deni comme etant un sommet appartenant au chemin
(unique) entre la racine et x,
y est un successeur de x si x est antecedent de y.
Denition 11 Soit une structure arborescente S dont toutes les operations de base
sont realisees dans le sens racine-feuille (respectivement sens feuille-racine).
Le schema, dit de type 1 est deni par les contraintes ci-dessous.
Verrouillage : un processus peut verrouiller un nud x de S,
Cas 1 : ssi il detient le verrou du nud pere (respectivement d'un des nud
ls) de x,
Cas 2 : un processus peut verrouiller la racine (respectivement une feuille)
de S , ssi il ne detient plus de verrou dans S .
Deverrouillage : un processus peut deverrouiller un nud x de S, ssi il ne detient
pas de verrou sur le pere de x. (respectivement sur un des ls de x).
La fen^etre generee par l'utilisation de ce schema 1 dans le sens feuille-racine
est telle que les nuds qui la composent recouvrent un sous arbre connexe de S.
Plus precisement, dans le sens feuille-racine, les nuds de la fen^etre recouvrent un
chemin de l'arbre. La fen^etre est generee en "remontant vers la racine.
These Paris VI, Janvier 1996
3.2. Verrouillage partiel pour les structures de donnees arborescentes
Sens Racine−Feuille
Fenetre
54
Sens Feuille−Racine
Noeud pouvant etre deverrouille
Noeud verrouille
Noeud pouvant etre verrouille
Figure 3.1 : Exemple de fen^etre pour le schema 1.
These Paris VI, Janvier 1996
3.2. Verrouillage partiel pour les structures de donnees arborescentes
55
Dans le sens racine-feuille, la fen^etre est composee initialement de la racine, puis
elle s'etend, pour recouvrir un ou plusieurs sous arbres eventuellement disjoints de
la structure.
Une variation de ce schema a ete presente par Jones [Jone89] et pour la parallelisation du Skew-Heap. De m^eme, Mans et Roucairol [MaRo90], pour une autre
parallelisation du Skew-Heap et pour le Funnel-Tree, utilise un schema similaire.
Nous degageons plusieurs proprietes, permettant de denir les caracteristiques
de notre schema.
Lemme 1 Le schema 1 assure que pendant la duree d'une operation de base sur S
de sens racine-feuille (respectivement feuille-racine), le verrouillage de la racine (respectivement d'une feuille) correspond au premier verrouillage possible de la structure S .
Preuve: La preuve est immediate d'apres le cas 2 du schema.
2
Lemme 2 Appelons x un nud d'une structure S, ou toutes les operations de base
se realisent dans le sens racine-feuille (respectivment feuille-racine).
Supposons que Pi , appartenant a P , detient un verrou sur x et aucun verrou sur
tout descendant (respectivment antecedent) de x.
En suivant le schema 1, si Pi veut un verrou sur un nud y descendant (respectivment antecedent) de x, alors il devra verrouiller, par etapes successives, tous les
nuds du chemin de x a y.
Preuve: (dans le sens racine-feuille)
Si Pi veut poser un verrou sur y, alors par le cas 1 du schema, il doit d'abord
verrouiller le pere de y. De m^eme, pour verrouiller le pere de y, il doit d'abord
verrouiller le grand pere de y. Ceci jusqu'a x. Donc si Pi veut un verrou sur y, il
doit d'abord detenir le verrou de chaque nud composant le chemin de x a y.
La demonstration dans le sens feuille-racine se fait de maniere analogue.
2
Lemme 3 Soit une structure S, ou toutes les operations de base se realisent dans
le sens racine-feuille. Soient deux nuds x et y de S , x etant antecedent de y.
Le schema 1 assure que si Pi detient un verrou sur x et si Pj detient un verrou
sur y, alors Pi a verrouille la racine apres Pj .
Preuve: Suivant le lemme 1, initialement, Pi et Pj n'ont de verrous sur aucun
nud de S.
Si Pi a un verrou sur x alors d'apres le lemme 2, il a d^u detenir un verrou sur
chacun des nuds antecedents de x.
Supposons que Pj ait detenu un verrou sur la racine apres Pi .
Si Pj a un verrou sur y, alors par le lemme 2, il a du detenir un verrou sur
chacun des nuds antecedents de y.
Or x est un antecedent de y donc, si Pi a un verrou sur x, Pj n'a pas pu verrouiller
tous les antecedents de y. Pj ne pourra donc pas avoir de verrou sur y.
Nous pouvons en deduire que si Pi a un verrou sur x et si Pj a un verrou sur y
alors, il est impossible que Pi ait detenu un verrou sur la racine de S avant Pj . 2
Lemme 4 Soit une structure S, ou toutes les operations de base se realisent dans
le sens racine-feuille (respectivment feuille-racine). Soient deux nuds x et y de S ,
x etant antecedent (respectivment descendant) de y, de y. D'apres le schema 1, si
un processus Pi a un verrou sur x et y, alors, il n'existe pas de processus Pj (i 6= j ),
ayant un verrou sur un nud z du chemin de x a y.
These Paris VI, Janvier 1996
3.2. Verrouillage partiel pour les structures de donnees arborescentes
56
Preuve: Si Pi a un verrou sur x et Pj a un verrou sur z (avec x antecedent de
z), alors, d'apres le lemme 3, Pj a detenu un verrou sur la racine de S avant Pi .
De m^eme, si Pj a un verrou sur z et Pi a un verrou sur y (avec z antecedent de
y), alors d'apres le lemme 3, Pi a detenu un verrou sur la racine de S avant Pj .
Nous aboutissons a une contradiction : si Pi detient un verrou sur x et y alors il
n'existe pas de processus Pj (i 6= j), ayant un verrou sur un nud z du chemin de
x a y.
2
Propriete 10 Le schema 1 assure l'inexistence d'interblocage des processus durant
l'execution d'une operation de base de la structure S .
Preuve: Nous allons demontrer que, pour tout x et y appartenant a N et pour
tout Pi et Pj appartenant a P , avec i 6= j, si Pi a un verrou sur x et Pj a un verrou
sur y, alors Pi ne peut demander un verrou sur y alors que Pj demande un verrou
sur x.
Sens Feuilles-Racine. Les deux cas sont a examiner.
x est un antecedent de y.
Si Pi veut mettre un verrou sur y, il doit detenir le verrou d'un des ls
z de y, donc Pi doit avoir les verrous de x et z et Pj le verrou de y.
D'apres le lemme 4 ce cas est impossible, donc il ne peut pas se creer
d'interblocage.
Il n'existe pas de chemin entre x et y.
Si Pi veut mettre un verrou sur y, alors d'apres le lemme 2, il a du
verrouiller une feuille z, descendante de y. Or il detient un verrou sur x,
dont les feuilles descendantes sont dierentes de z.
Le cas 2 du schema a donc ete viole. Il ne peut donc pas se creer
d'interblocage.
Sens Racine-Feuilles. Deux cas se presentent a nouveau.
x est un antecedent de y.
Si Pj veut mettre un verrou sur x, il doit detenir le verrou de z, pere de
x.
Nous avons la conguration ou Pj detient un verrou sur z et y sachant
que Pi detient un verrou sur x (nud du chemin de z a y).
D'apres le lemme 4, ce cas est impossible. Donc il ne peut pas se creer
d'interblocage.
Il n'existe pas de chemin entre x et y.
Si Pi veut poser un verrou sur y, il doit avoir un verrou sur le pere de
y. Or Pj ayant un verrou sur y, le lemme 3 assure que Pi a verrouille la
racine apres Pj .
De m^eme, si Pj veut poser un verrou sur x, il doit avoir un verrou sur le
pere de x. Or Pi ayant un verrou sur x, d'apres le lemme 3 Pi a verrouille
la racine avant Pj .
Nous arrivons donc a une contradiction.
Dans chaque sens, la generalisation a n processus se fait de m^eme.
2
Dans le sens racine-feuille uniquement, nous pouvons donner un schema moins
contraignant.
Denition 12 Soit une structure arborescente S ou toutes les operations de base
sont realisees dans le sens racine-feuille. Le schema de type 2 est deni par les
contraintes suivantes.
Verrouillage. un processus ne peut verrouiller un nud x de S, que :
These Paris VI, Janvier 1996
3.2. Verrouillage partiel pour les structures de donnees arborescentes
57
Cas 1 : s'il detient le verrou du nud pere de x,
Cas 2 : s'il detient deja le verrou d'un nud antecedent x et d'un nud
descendant de x,
Cas 3 : un processus peut verrouiller la racine r de S, ssi il ne detient plus
de verrou dans S .
Deverrouillage: il n'y a aucune contrainte sur le deverrouillage.
Etat initial
Verrouillage
Fenetre
Deverrouillage
Noeud pouvant etre deverrouille
Noeud verrouille
Noeud pouvant etre verrouille
Figure 3.2 : Exemple de fen^etre pour le schema 2
Contrairement au schema 1, le schema 2 permet l'existence de nuds non verrouilles, appartenant au chemin reliant des nuds verrouilles par un processus (gure 3.2).
Les lemmes 1, 2 3 et 4 appliques pour les operations de sens racine-feuille,
peuvent ^etre demontres pour le schema 2 de la m^eme facon que pour le schema 1.
Propriete 11 Le schema 2 assure l'inexistence d'interblocage des processus l'utilisant
durant une operation de base sur la structure S .
Preuve: Nous allons demontrer que pour tout x et y appartenant a N et pour
Pi et Pj appartenant a P avec i 6= j, si Pi a un verrou sur x et Pj a un verrou sur
y alors Pi ne peut demander de verrou sur y alors que Pj demande un verrou sur
x. Deux cas se presentent:
x antecedent de y.
Si Pj peut demander un verrou sur x alors,
soit il a un verrou sur le pere de x (Cas 1),
soit il a un verrou sur un nud z antecedent de x et un autre sur un descendant de x (Cas 2).
These Paris VI, Janvier 1996
3.2. Verrouillage partiel pour les structures de donnees arborescentes
58
Les deux cas reviennent a la m^eme conguration : celle ou le processus Pj a
un verrou sur les nuds z et y et le processus Pi a un verrou sur x (nud du
chemin de z a y). D'apres le lemme 4, cette conguration est impossible.
Il n'existe pas de chemin entre x et y.
Si Pi demande un verrou sur y alors deux cas se presentent :
Pi a un verrou sur le pere de y (Cas 1).
Si Pi veut poser un verrou sur y, il doit avoir un verrou sur le pere de y.
Or Pj ayant un verrou sur y, d'apres le lemme 3, Pi a verrouille la racine
apres Pj .
De m^eme, si Pj veut poser un verrou sur x, il doit avoir un verrou sur le
pere de x. Or Pi ayant un verrou sur x, d'apres le lemme 3, Pi a verrouille
la racine avant Pj .
Nous arrivons donc a une contradiction.
Pi a un verrou sur un nud z antecedent de y et un sur un nud z 0 descendant de y (Cas 2).
Par le lemme 4, cette conguration est impossible donc il ne peut pas se
creer d'interblocage.
La generalisation a n processus se fait de m^eme.
2
Des parallelisations utilisant ce deuxieme schema sont exposees dans les chapitres
suivants.
La consistance d'une structure dependra de la facon dont les methodes sont
utilisees pour un algorithme particulier.
La capacite de la SDP depend de la taille de la fen^etre utilisee et de la taille de
la structure. Pour une taille d'arbre xee, plus le nombre de nuds verrouilles dans
une fen^etre est important, plus le nombre de processus pouvant ^etre presents a un
instant donne dans la structure est petit. Pour une taille de fen^etre xee, plus la
hauteur de l'arbre est grande, plus le nombre d'operations concurrentes peut ^etre
grand.
Propriete 12 La capacite d'une SDOP parallelisee par "verrouillage partiel" est
de :
C = fh ;
avec h est la hauteur de l'arbre et f la taille de la fen^etre.
3.2.2 Protocole avec marquage
La r^ole des algorithmes d'exclusion mutuelle est d'assurer qu'un seul processus obtienne une ressource alors que plusieurs en ont fait la demande. Nous montrons que
dans le cas d'operations realisees dans le sens racine-feuilles, les primitives d 'exclusion mutuelle peuvent ^etre remplacees par des simples mecanismes de marquage.
Considerons des operations concurrentes de sens racine-feuilles, realisees sur une
structure arborescente S, selon l'un des deux schemas enonces precedemment.
Theoreme 2 Si un processus Pi detient un verrou sur un nud x quelconque de
S , alors quel que soit y ls de x, Pi est le seul processus a pouvoir demander un
verrou sur y.
Preuve: Nous allons demontrer par l'absurde qu'il n'existe pas de processus Pj
(j 6= i) pouvant faire une demande de verrou sur l'un des ls de x.
En eet, si Pj peut demander le verrou d'un nud ls y de x alors :
soit Pj a un verrou sur le pere de y, ce qui est impossible car Pi le detient,
These Paris VI, Janvier 1996
3.3. Extension de la methode aux machines a memoire distribuee
59
soit il detient un nud anc^etre de y et un nud appartenant a la descendance
de y (deuxieme schema). Le lemme 4 montre alors que cette conguration est
impossible.
Donc, Pi est le seul processus a pouvoir demander un verrou sur un des ls de x. 2
D'apres ce theoreme, si on utilise un des schemas de verrouillage enonces plus
haut dans le sens racine-feuilles alors, sauf pour la racine de l'arbre, nous pouvons utiliser un simple mecanisme de marquage d'un nud au lieu d'une primitive
d'exclusion mutuelle.
Pour implanter la notion de marquage d'un nud x, chaque nud x de S contient une variable Mrk, indiquant si x est marque ou non.
Les algorithmes pour marquer et pour enlever la marque d'un nud
x sont les suivants:
Mettre Marque (x)
tant que x:M rk=MARQUE faire attendre
x:M rk =MARQUE
Enleve Marque(x)
x:M rk
=NONMARQUE
Le nud racine n'a pas de pere et par suite, plusieurs processus peuvent essayer
de le verrouiller en m^eme temps. Un algorithme d'exclusion mutuelle devra donc
^etre utilise pour ce nud particulier.
3.3 Extension de la methode aux machines a
memoire distribuee
La methode presentee dans le paragraphe precedent est fondee sur le fait que sur
une machine parallele a memoire partagee, les dierents processus peuvent acceder
a une memoire commune.
Que cette memoire soit physiquement ou virtuellement partagee, elle ore les
proprietes suivantes ([CoNR92, CoTr93]) :
la coherence, une modication eectuee sur une variable partagee est visible
par tous les processus,
l'adressage global, l'adresse d'une variable partagee est la m^eme quel que soit
le processus.
Sur une machine a memoire physiquement partagee, le probleme est resolu de
facon materielle. En revanche sur une machine ou la memoire partagee est simulee,
il est plus dicile d'assurer ces proprietes ecacement. La coherence dans cet environnement implique soit une gestion repartie de la modication, soit une gestion
centralisee.
Dans la litterature (voir chapitre 1), les algorithmes concernant la gestion des
structures de donnees dans un environnement distribue, proposent des solutions
qui rel^achent la semantique de l'operation de suppression dans une le de priorite,
orent des operations synchrones, ou encore placent statiquement la structure sur
le reseaux de processus.
Nous proposons un algorithme distribue s'appliquant aux structures de donnees
arborescentes se fondant sur la methode precedente. Les operations sont asynchrones, et la semantique de l'operation de suppression des les de priorite est
respectee dans son sens le plus stricte. Cette extension peut appara^tre comme une
These Paris VI, Janvier 1996
3.3. Extension de la methode aux machines a memoire distribuee
60
generalisation des parallelisations par l'approche SDOP sur machine distribuee.
L'idee est de simuler une memoire partagee specique a la structure de donnees.
Pour cela il faut denir un adressage global, pour reperer les elements de la structure sur l'ensemble des processeurs, et denir un mode operatoire sur l'espace global.
Nous presentons d'abord, la simulation d'un espace global pour la structure, puis
deux modes operatoires permettant son parcours. Nous expliquons et demontrons la
coherence de la structure lors d'operations qui modient sa representation. Finalement, nous donnons un exemple concret d'implementation se basant sur la le de
priorite Skew-Heap, ainsi que des ameliorations reduisant la complexite en messages.
3.3.1 Simulation de l'espace global, et modes operatoires
L'espace global specique a la le de priorite sur une machine a memoire physiquement distribuee peut ^etre aisement simule en introduisant la notion de pointeur
global.
Denition 13 Un pointeur global sur un nud x de la structure contient deux
informations : l'identicateur i du processus ou se trouve x ainsi que l'adresse de
x dans l'espace d'adressage du processus i.
1
2
3
Racine
Racine
Racine
B
H
D
C
F
I
E
A
J
G
Racine
B
G
A
1
1
C
2
J
H
3
F
2
D
3
I
1
3
2
E
2
Figure 3.3 : Exemple de repartition de la structure
Une operation etant denie comme une suite d'operations elementaires (oe) sur
un sous ensemble de nuds, eectuer une operation consiste a recuperer l'adresse
globale de la racine, puis a parcourir la structure de donnees selon le chemin deni
par l'algorithme de l'operation.
Un processus accede a un nud par l'utilisation du mode operatoire.
Denition 14 Un mode operatoire denit comment un processus i lit ou modie
les informations contenues dans un nud x se trouvant sur un processus j (i 6= j ).
These Paris VI, Janvier 1996
3.3. Extension de la methode aux machines a memoire distribuee
61
Nous pouvons denir deux modes operatoires distincts fondes sur l'appel de
procedure a distance (APD).
Denition 15 Le mode operatoire par appel d'operations elementaires a distance
consiste pour un processus i a realiser une oe sur un nud x par APD.
Ce mode permet d'executer une partie de l'operation sur le site distant. Un
parcours est dans ce mode une suite d'APD recursifs, suivant les adresses globales
des nuds du chemin. Chaque procedure distante est une oe sur un nud ou un
groupe de nuds. Dans ce cas, un nud est xe a un processus, l'operation est
executee par dierents processus.
Denition 16 Le mode operatoire par gestion de cache consiste pour un processus
i a realiser une oe sur un nud x en local. Le nud x est prealablement transfere
du processus distant vers i.
Pour acceder a un nud de la structure, il faudra d'abord le transferer du site
distant vers l'espace d'adressage local. Dans ce cas, l'operation est toujours executee
sur le m^eme processus, mais les donnees sont transferees.
Nous revenons plus en detail sur ces deux modes operatoires lors de la presentation
de l'exemple (paragraphe 3.3.3). Nous les comparons en terme de complexite en taille
et en nombre de messages.
3.3.2 Gestion de la coherence
Apres avoir deni, l'adressage global (ou est le nud ?) et le mode operatoire
(comment eectuer une operation sur le nud ?), il nous reste a denir comment
gerer la coherence des donnees et donc de la structure.
Nous nous placons dans le cadre de structures de donnees qui acceptent le schema
de verrouillage de type 1 dans le sens racine-feuille ou celui de type 2.
Nous considerons le verrouillage d'un nud comme une interdiction de l'execution
du mode operatoire sur ce nud. Si le mode operatoire est l'acces par operation a
distance, le nud considere doit ^etre verrouille avant de commencer la oe. Si le mode
operatoire est l'acces par gestion de cache, le nud ne peut ^etre transfere qu'apres
l'avoir verrouille.
Ces schemas de verrouillage assurent qu'un seul processus ne peut demander un
verrou sur un nud (excepte la racine) a un instant donnee (voir le theoreme 2).
D'une part, la notion de marquage peut ^etre utilisee pour interdire l'execution du
mode operatoire. D'autre part, un processus n'a pas besoin d'informer les autres
d'une modication qu'il a eectuee (a l'exception de la modication de l'adresse
du nud racine). Ce qui signie que la simulation de la memoire partagee n'a pas
besoin de mettre en uvre un mecanisme de coherence forte des entites modiables
de la structure (pointeurs, valeurs, etc). Si les processus respectent le schema de
verrouillage, ils n'auront connaissance de la modication que si elle leur est utile.
En revanche, si cette modication porte sur l'adresse du pointeur racine, il est
necessaire de gerer pour ce cas, et pour ce cas seulement, une coherence forte. Cette
gestion peut prendre dierentes formes:
centralisee, un processus specialise a toujours la derniere valeur connue,
par cha^nage du dernier processus possedant la derniere valeur connue,
par jeton, avec demande du jeton pour avoir la derniere valeur.
L'avantage de cette simulation specique est d'^etre mieux adaptee au probleme.
Le surco^ut qu'entra^ne une gestion de la coherence forte sur toutes les entites modiables de la structure est evite.
These Paris VI, Janvier 1996
3.3. Extension de la methode aux machines a memoire distribuee
62
3.3.3 Exemple : le Skew-Heap
Nous expliquons en detail l'algorithme sequentiel et concurrent du Skew-Heap. Puis,
nous montrons comment appliquer l'algorithme precedent dans les deux modes
operatoires d'abord pour les nuds, puis pour le pointeur racine.
3.3.3.a Les operations sequentielles
En annexe A.2.1.c sont reportes les algorithmes sequentiels des operations du SkewHeap.
Le pseudo-code est celui des operations de base du Skew-Heap rendues concurrentes par l'application du schema de verrouillage de type 2 (denition 12). Il sut
de retirer les appels aux primitives d'exclusion mutuelle (Lock, UnLock) pour
obtenir le code sequentiel.
procedure insert(root,x)
begin
left(x):=null; right(x):=null
MeldRoot(root,x)
end insert
function deletemin (root)
begin
return MeldRoot(root,null)
end deletemin
function MeldRoot(root,h1)
begin
LockRoot(root)
if (h1=null) then
x:=root
Lock(x); h1:=right(x); h2:=left(x); UnLock(x)
else
x:=null
h2:=root
endif
if (h1=null) then
root:=h2; UnLockRoot(root)
return(x)
elif (h2=null) then
root:=h1; UnLockRoot(root)
return(x)
endif
if (Pri(h1)>Pri(h2)) then h1$h2 endif
root:=h1
p = h1
Lock(h1); h1 = right(h1)
UnLockRoot(root)
Meld (p,h1,h2)
return(x)
end MeldRoot
procedure Meld(p,h1,h2)
begin
if (h1=null) then
right(p):=left(p); left(p):=h2
return
end
if (h2=null) then
These Paris VI, Janvier 1996
3.3. Extension de la methode aux machines a memoire distribuee
63
right(p)$left(p)
return
end
if (Pri(h1)>Pri(h2)) then h1$h2 endif
/* start melding */
right(p):=left(p)
left(p)=h1
tmp = h1
Lock(h1); h1:=right(h1)
UnLock(p)
p:=tmp
Meld(p,h1,h2)
end Meld
L'oe concerne donc trois nuds (procedure Meld) p, h1 et h2, pour acceder aux
composantes suivantes :
1. les valeurs de priorite de h1 et h2,
2. le nud p (pointeurs left(p) et right(p)),
3. le champs right de h1.
Il est a noter qu'il n'est pas necessaire de verrouiller h1 et h2 pour acceder a
leur priorite, car le Skew-Heap est un tas a information interne. Les modications
portent sur les liens entre les nuds et non pas sur l'element contenu dans un nud.
Un pointeur sur un nud a donc le m^eme element associe pendant toute sa duree
de vie.
Comme il existe un pointeur sur un nud x, il est inutile de verrouiller x pour
acceder a l'information. En revanche, si l'acces a un nud x concerne les pointeurs
qu'il contient (right(x) ou left(x)), il faut le verrouiller.
A la dierence d'une structure de donnees a information externe, comme le dHeap, ou la structure est xe (les liens entre les nuds sont xes une fois pour toute),
et les elements changent de place dans la structure, pour acceder a l'information
contenue dans un nud, il faut le verrouiller, mais il n'est pas necessaire de le
verrouiller pour acceder a ses ls.
3.3.3.b Mode operatoire par gestion de cache
Dans ce mode, une premiere approche consisterait a avoir dans l'espace d'adressage
du processus realisant l'operation, les trois nuds p, h1 et h2 pour toute la duree
de l'oe. Ce qui implique le transfert et le verrouillage des trois nuds pour une oe.
Or dans la version memoire partagee, seul le nud p necessite d'^etre verrouille.
Cette premiere approche necessite une fen^etre plus grande, et par suite une plus
petite capacite de la structure par rapport a celle de la version memoire partagee.
Une solution consiste alors a ajouter dans le pointeur global d'un nud, la
priorite de l'element associe. Ceci est possible car le Skew-Heap est a information
interne.
Partant de ce principe, il n'est donc plus necessaire d'avoir a transferer h1 et
h2 pour toute la duree de l'oe. Il sut de transferer et verrouiller h1 seulement au
moment ou il faut acceder au champ right(h1).
Implementer ce mode operatoire est maintenant tres simple: il sut de remplacer dans le pseudo-code concurrent les appels a la fonction Lock(x) par TransfAndLock(x). Cette derniere consiste, par APD, a verrouiller le nud x sur le processus distant, puis a le transferer sur le processus client. L'eet du verrouillage sur
le processus distant est toujours valide sur le processus local.
These Paris VI, Janvier 1996
3.3. Extension de la methode aux machines a memoire distribuee
64
L'adresse globale de x doit donc maintenant ^etre modiee, car le processus contenant x a change.
1
2
3
Racine
Racine
Racine
Racine
K
B
B
2
1
H
K
D
G
C
2
1
C
I
F
E
A
J
G
A
J
1
H
3
F
1
2
3
Racine
Racine
Racine
2
D
3
I
2
E
3
2
Racine
B
1
B
H
K
C
C
D
A
F
E
G
G
1
2
I
K
J
D
H
2
F
2
E
2
A
3
I
1
J
3
3
2
Figure 3.4 : Exemple d'insertion dans un Skew-Heap en mode Gestion de cache
La gure 3.4 donne un exemple d'execution de l'operation d'insertion du SkewHeap dans ce mode.
Propriete 13 Le nombre de transferts de nuds Ntr pour une operation de base
du Skew-Heap est :
Ntr = logn:
En eet, si la complexite d'une operation est en O(logn), le nombre d'executions
d'oe est logn, Or seul le transfert du nud p pour chaque oe est necessaire. D'ou le
nombre de transferts de nuds.
Propriete 14 Le nombre de messages Nmsg pour une operation est :
Nmsg = 2 logn:
Il faut deux messages pour transferer un nud, et le nombre de transferts est
logn.
Propriete 15 La somme des tailles de messages Smsg pour une operation est :
Smsg = logn (Sag + Snd ):
La taille des deux messages utilises pour chaque oe est : Sag taille d'une variable
adresse globale, et Snd la taille d'un nud. Or pour une operation, chacun de ces
messages est envoye logn fois.
3.3.3.c Mode operatoire par acces a distance
Dans ce mode, une operation s'execute recursivement, chacune des operations elementaires
(oe) s'executant sur le processus contenant le nud considere.
Cette methode peut ^etre assimilee a un cas particulier de la "vague recursive"
denie par Lavallee et Florin [FlLa91], puis developpee par Florin, Gomez et Lavallee [FlGL93b,
These Paris VI, Janvier 1996
3.3. Extension de la methode aux machines a memoire distribuee
65
FlGL93c, Gome95]. Les auteurs passent en revue nombre d'algorithmes distribues
dits de contr^ole, et montrent leur ecacite et leur simplicite d'expression par l'utilisation
de cette methode.
L'algorithme de fusion concernant trois nuds, deux problemes majeurs surviennent :
1. les trois nuds ne sont pas dans l'espace d'adressage d'un m^eme processus; il
faut donc choisir le processus sur lequel l'oe s'eectue,
2. il faut verrouiller le nud ls h1 qui deviendra pere pour l'oe suivante, juste
avant de deverrouiller p.
Dans ce cas, quel que soit le processus choisi, il y a dans le pire des cas, trois
appels de procedure a distance pour chaque oe.
1. Le processus d'accueil de l'oe est celui contenant p. Il est necessaire de faire
deux APD pour obtenir les valeurs des priorites de h1 et h2 permettant de
faire le choix du nud qui va ^etre ajoute. Un autre appel devra suivre pour
verrouiller le nud elu avant de deverrouiller p.
2. Le processus d'accueil est celui stockant h1. Il est necessaire d'avoir au moins
un appel pour avoir la valeur de priorite de h2 et un appel pour mettre a jour
le pointeur dans p. Mais si h2 est choisi, il y aura un appel supplementaire
pour verrouiller h2.
3. Le processus d'accueil est celui stockant h1, le cas est symetrique au precedent.
Si nous gardons cette structure, il y aura donc, dans le pire des cas, trois APD
pour chaque oe.
Il est possible de reduire ce nombre d'appels dans le cas 1, en modiant la
notion de pointeur global, de la m^eme facon que precedemment (mode operatoire
par gestion de cache).
Les deux APD qui etaient necessaires pour acceder aux valeurs de priorite de
h1 et h2, ne sont plus utiles. Il n'y a donc plus qu'un seul APD (celui utilise pour
verrouiller le nud ls) qui est d'ailleurs asynchrone (sans retour).
Il sut donc d'executer le code : Lock(x); x = right(x) sur le processus contenant
x par un APD.
La fonction Meld sera appelee a distance sur le processus contenant le nouveau
pere.
La gure 3.5 donne un exemple d'execution de l'operation d'insertion.
Propriete 16 Le nombre de APD Napd pour une operation est :
Napd = 2logn:
Le nombre d'oe pour une operation est logn. Et pour chaque oe, deux APD sont
eectues.
Propriete 17 Le nombre de messages Nmsg pour une operation est :
Nmsg = 2logn:
Les deux APD sont asynchrones, donc chacun d'eux ne necessite qu'un seul
message.
Propriete 18 La somme des tailles de message Smsg pour une operation est :
Smsg = logn (4 Sag ):
Le message pour la realisation du premier APD contient une variable d'adresse
globale, celui du deuxieme APD trois variables d'adresse globale.
These Paris VI, Janvier 1996
3.3. Extension de la methode aux machines a memoire distribuee
1
2
3
Racine
Racine
Racine
66
Racine
K
B
B
2
1
H
K
D
G
C
2
1
C
I
F
E
A
J
G
A
J
1
H
3
F
1
2
3
Racine
Racine
Racine
2
D
3
I
2
E
3
2
Racine
B
B
K
C
C
D
F
G
G
1
2
I
E
A
1
H
K
J
D
H
2
F
2
E
2
A
3
I
1
J
3
3
2
Figure 3.5 : Exemple d'insertion sur un Skew-Heap en mode acces a distance
These Paris VI, Janvier 1996
3.3. Extension de la methode aux machines a memoire distribuee
67
3.3.3.d Coherence de la racine
La coherence du pointeur racine du Skew-Heap doit ^etre traitee a part. Il faut
d'abord trouver le processus qui detient la valeur valide de la racine. Une fois qu 'il
est identie, il faut pouvoir modier le pointeur racine.
Il existe beaucoup de facons de le faire. Nous en detaillons trois.
Gestion centralisee Un processus est elu comme etant celui detenant toujours
la derniere valeur du pointeur racine.
mode operatoire par gestion de cache. La fonction LockRoot dans le pseudocode est remplacee par un APD qui, sur le processus specialise, verrouille
la racine puis transfere sa valeur sur le processus demandeur. La fonction
UnLockRoot est remplacee par une fonction qui fait l'operation inverse, elle
transfere la racine du processus demandeur vers le processus specialise puis
deverrouille la racine sur le processus specialise.
mode operatoire par appels d'operations a distance. La fonction MeldRoot est
appelee a distance par le processus demandeur sur le processus specialise.
Gestion par cha^nage La variable racine d'un processus i indique l'identite du
processus qui a modie la racine juste apres i. De cette maniere, un processus
voulant realiser une operation, trouve la derniere valeur de la racine par cha^nage
d'adresse globale.
Le principe de cette technique est de recuperer la valeur de la racine pour la
modier en local, il est donc interessant d'utiliser le mode operatoire par gestion de
cache.
Gestion par jeton Un jeton contenant la valeur de la racine circule entre les
processus. Si un processus veut faire une operation, il prend le jeton lorsqu'il lui
parvient. Le principe de cette technique etant d'obtenir la valeur de la racine pour
la modier en local, il est interessant d'utiliser le mode operatoire par gestion de
cache.
3.3.4 Performances de la methode
Nous dissocions les deux modes operatoires, car comme nous allons le voir la capacite
resultante n'est pas la m^eme. Nous continuons d'illustrer notre propos sur l'exemple
du Skew-Heap.
3.3.4.a Mode operatoire par Gestion de cache
La Capacite Soit S une structure de donnees concurrente de capacite Cs parallelisee par les schemas de verrouillage 1 ou 2 sur une machine a memoire partagee.
Propriete 19 La structure parallele S 0 parallelisee avec l'extension de la methode
sur une machine a memoire distribuee en utilisant le mode operatoire par gestion
de cache a la m^eme capacite Cs que la structure S .
Le mode d'execution de la structure S 0 est equivalent a celui de S s'executant
sur une machine a memoire virtuellement partagee. Une operation n'est eectuee
que par un seul processus. Et la taille d'une fen^etre est la m^eme.
Les co^uts Les co^uts de cette methode sont bien evidemment tres grands en terme
de nombre de messages pour une operation. Ils sont plus grands que les co^uts generes
par une parallelisation de Skew-Heap avec une approche SDDP asynchrone.
Mais cette etude reste interessante car elle donne des elements pour reechir a
des systemes de simulation de memoire partagee, plus souple et plus ecace.
These Paris VI, Janvier 1996
3.3. Extension de la methode aux machines a memoire distribuee
68
Poser le probleme en terme de simulation de memoire partagee permet de
degager les co^uts inutiles generes par les systemes de simulationde memoire partagee
commerciaux. Un systeme simulant une memoire partagee procede a un test de
coherence sur tout le reseau de processeurs, pour chaque acces a un nud. Or, nous
avons demontre que dans ce cas specique, il est inutile d'employer un tel systeme.
Un processus demandant l'acces a un nud x sait exactement sur quel processus se
trouve la derniere version valide de x.
Cette etude est aussi tres importante, car elle a permis de degager les surco^uts
d'un algorithme concurrent dans le cas de machine a memoire virtuellement partagee
comme la KSR. En eet, la KSR ore une simulation de memoire partagee appelee
ALL-CACHE. Ce systeme est equivalent a notre simulation avec un mode operatoire
par gestion de cache. Notre algorithme permet de reduire les contentions d'acces
sur les donnees partagees en ajoutant la valeur de priorite dans la notion de priorite
globale; il conduit ainsi a une reduction de l'utilisation du reseau dans le cas de
la KSR. Cette modication entra^ne donc une reduction des co^uts pour ce style de
gestion de la memoire partagee.
3.3.4.b Mode operatoire par appel d'operations a distance
Une operation etant executee par plusieurs processus, les performances obtenues
dependent du temps de communication entre ces processus (co^ut) et de leur nombre
(capacite). Or le placement de la structure sur le reseau denit les processus utilises
pour chacune des operations et donc les liens du reseau utilises.
L'etude precedente, a ete menee sur un reseau complet. Aucune hypothese n'etait
faite sur la topologie du reseau ni en terme de distance entre processus et ni en terme
de routage.
De plus, si la structure doit stocker un grand nombre d'elements, les processus
doivent pouvoir se les repartir, an d'optimiser la place memoire occupee.
Le placement de la structure depend donc des trois criteres suivants :
1. maximiser la capacite de la structure,
2. minimiser les temps de communication,
3. equilibrer la place memoire occupee.
Nous discutons dans la suite, des dierents placements d'une structure arborescente, pour chacun de ces criteres, puis pour deux ou trois d'entre eux.
La capacite La capacite maximale est egale au nombre maximal de processus
qu'il est possible d'utiliser pour realiser chaque operation.
Si h est le nombre de niveaux de l'arbre, dans un contexte distribue, atteindre
ce maximum consiste a aecter au moins un processus par niveau de l'arbre, an
de permettre l'execution de h operations simultanement (voir le paragraphe 1.3.5.
Un placement garantissant une capacite optimale de la structure consiste donc
a aecter un et un seul processus par niveau de l'arbre (comme dans [CBDW91]
pour les arbres de recherche). La capacite sera donc egale au nombre de processus
utilises pour gerer la structure.
Les structures a information externe (D-Heap, Funnel-Tree) sont tres faciles a
placer car leurs structures sont xees pour toute la duree de vie de l'application.
Il est donc dans ce cas plus facile d'obtenir un placement optimal, et une capacite
aussi grande que l'algorithme le permet.
En revanche, les structures a information interne (comme le Skew-Heap, les
Splay-Tree, le Pairing-Heap) sont tres diciles a placer, car leur representation
est modiee a chaque operation. Le placement doit donc ^etre modie a chaque
operation.
These Paris VI, Janvier 1996
3.3. Extension de la methode aux machines a memoire distribuee
69
Certaines structures de recherche comme les B-Arbres et B+arbres, sont faciles
a placer car les modications de la representation (Split, Join) ne modient pas
les niveaux. En eet, si deux nuds sont du m^eme niveau, ils le restent tant qu'ils
sont dans la structure [CBDW91]. Cette remarque n'est pas veriee dans le cas des
arbres AVL, par exemple.
Les co^uts de communication Dans un environnement distribue, les co^uts supplementaires
sont dus aux envois de messages. Or si le reseau de processeurs utilise, est heterogene,
les co^uts de communications, correspondant a des poids, sont associes a chaque lien
de communications. Pour minimiser les co^uts d'une operation, les liens de poids minimal doivent donc ^etre exclusivement utilises. Il faut donc placer la structure sur le
reseau de machines, assurant que ces liens soient utilises pour toutes les operations.
Or, de nombreux travaux dans le domaine de l'algorithmique distribuee traitent de la construction d'arbre couvrant de poids minimal, d'un reseau de machines [Laval86, BuBu93, Lavau95c].
Dans le cas d'une SD representee par un arbre binaire, une oe n'utilise que deux
ou trois nuds (un pere avec un ou deux ls). Un placement optimisant les temps
de communications consiste donc a placer la structure sur un arbre couvrant binaire
de poids minimum.
Repartition de l'occupation memoire La structure contenant generalement
beaucoup plus d'elements qu'il n'y a de processeurs disponibles sur la machine
distribuee, un processeur doit donc stocker un ensemble d'elements.
Pour equilibrer l'occupation memoire, chaque processeur doit contenir le m^eme
nombre d'elements. Le placement de la structure est donc obtenu en partitionnant
la representation de la structure en P parts egales, puis en aectant chacune de ces
parts a un processeur.
Capacite+co^ut de communication Si la structure est un arbre binaire, une
capacite optimale est obtenue par le placement d'un niveau de l'arbre sur un processus. Et minimiser les co^uts de communications consiste a placer la structure sur
un arbre binaire couvrant minimal.
Un placement optimal pour ces deux criteres consiste donc a trouver un arbre
couvrant unaire minimal, ou autrement dit un tableau de processus ou les communications entre processus adjacents sont minimales, puis a aecter un niveau de la
representation sur chacun des processus du tableau.
Repartition memoire+co^ut de communication Peleg [Pele90] a montre qu'un
tel placement etait possible dans le cas des B-arbres. Il peut aisement ^etre generalise
pour des arbres binaires.
Pour les trois criteres Il appara^t donc que le placement optimal d'une structure
arborescente, pour ces trois criteres, est impossible.
En eet, pour obtenir une capacite optimale il faut que chacun des processus soit
associe a un niveau de l'arbre. Or etant donne qu'un partitionnement par niveau
d'un arbre ne denit pas des parties de taille egale, le critere de repartition de
l'occupation memoire est incompatible avec celui d'une capacite optimale.
Par contre, un placement de capacite maximale (et non pas optimale) n'est
pas incompatible avec la repartition memoire. En eet, le placement propose par
Ottman, Rosenberg et Stockmeyer [OtRS82] consistant a aecter un nud de la
structure sur un processus, respecte ces deux criteres. L'occupation memoire est
repartie sur chacun de processeurs, et h operations peuvent donc ^etre eectuee en
m^eme temps.
These Paris VI, Janvier 1996
3.4. Conclusion
70
Si le nombre de processeurs disponibles est inferieur au nombre d'elements, il
peut toutefois ^etre propose un placement orant un compromis. Celui propose par
Mans [Mans95] en est un bon exemple.
3.4 Conclusion
Nous avons propose une methode generale de parallelisation SDOP asynchrone des
structures de donnees arborescentes.
Dans la contexte des machines a memoire partagee, les performances du verrouillage partiel ainsi que celles du protocole par marquage sont presentees au chapitre 5.
Les exemples d'application sont les algorithmes d'espace de recherches Branch and
Bound et A*.
Ces methodes sont combinees dans le chapitre 4 a nos algorithmes SDDP asynchrones du chapitre 2, pour obtenir des algorithmes SDODP.
Dans le contexte des machines a memoire distribuee, notre etude a permis de
degager plusieurs points.
Pour le cas des structures de donnees SDOP, nous proposons une simulation
de memoire partagee par techniques d'appels de procedures a distance. Cette simulation peut ^etre faite par dierents modes operatoire. La presentation de toutes
les structures de donnees proposees dans la litterature peut alors ^etre uniee en
montrant qu'elles relevent d'un de ces modes.
Les desavantages et avantages de chacune en terme de placement optimisant la
place memoire occupee, la capacite, ou reduisant les co^uts de communications, sont
alors exhibes.
Ceci nous a aussi permis d'isoler les problemes de contention memoire dans le cas
d'une machine parallele a memoire virtuellement partagee; des tests experimentaux
validant cette amelioration sont presentes au chapitre 5.
These Paris VI, Janvier 1996
71
4
Les structures a donnees et
operations paralleles
Chapitre
Une structure SDOP asynchrone a une capacite dependant du nombre d'operations
elementaires qui composent chaque operation. Les representations etant tres souvent
des arbres, la capacite est en O(logn). Elle respecte strictement la semantique de
l'operation de suppression des les de priorite.
En revanche, une structure SDDP a une capacite limitee seulement par le nombre
d'elements stockes. La semantique de l'operation de suppression y est dicile a
assurer sans un fort surco^ut. Et le nombre d'elements par sous-representation etant
plus petit, la duree d'execution d'une operation s'en trouve reduit.
L'idee sous-jacente des SDODP est l'application combinee des modeles SDOP
et SDDP pour paralleliser une le de priorite. Nous les appelons dans ce cas, les
multi-structures concurrentes. Elles ont fait l'objet d'un paragraphe dans le
livre CAPA95 [AGFR+95] et dans le livre du projet SCOOP [SCOOP95].
4.1 Performances
Nous procedons a l'etude des performances du modele SDODP pour un nombre xe
d'elements n.
Le nombre D represente le nombre de sous representations qui composent la
structure SDODP.
4.1.1 La capacite
Soit une structure arborescente S dont les operations se composent de h(n) operations
elementaires notees oe, et sont parallelisables par l'un des schemas de verrouillage
du chapitre 3. La capacite CSDOP de S en SDOP est :
CSDOP = h(n):
Si S est parallelisee par un modele SDDP, sa capacite CSDDP est :
CSDDP = D:
La capacite CSDODP de S en SDODP est donc :
CSDODP = D h( Dn ):
These Paris VI, Janvier 1996
4.1. Performances
72
L'inter^et de ce modele depend de la fonction h(n). Si h est lineaire, la capacite
CSDODP est egale a CSDOP . Ce modele n'apporte donc rien en terme de capacite.
Mais, il inue sur le temps d'execution de chaque operation, car chacune des sousstructures contient Dn elements.
En revanche, si la representation de la structure est un arbre, h peut ^etre approxime par un logarithme de n (avec n susament grand). Dans ce cas, la capacite
obtenue est tres interessante. En eet, la capacite CSDODP est
CSDODP = D log Dn ;
Or, si P est le nombre de processus susceptibles d'eectuer des operations, P doit
^etre tel que
CSDODP P;
donc :
P D log Dn :
Pour un P xe, notre but est de trouver la valeur de D optimale.
Denition 17 D qualie d'optimal lorsque il est le plus petit entier tel que :
P D log Dn :
Cette inequation ne peut pas ^etre resolue de facon exacte car les variables ne
sont pas du m^eme ordre. Cependant des solutions approchees peuvent ^etre calculees
rapidement. Nous notons cette valeur de D particuliere D .
De cette facon, toutes les valeurs de D appartenant a l'intervalle [D ::P],verient
cette inequation.
Exemple du Skew-Heap La fonction h du Skew-Heap est h(n) = log2 n . La
capacite d'un Skew-Heap SDODP est donc :
D log Dn
C=
2 :
Or nous voulons que :
P C
donc :
P D log n :
2
D
Par un calcul approche (recherche dichotomique), des solutions peuvent ^etre trouvees.
Par exemple, pour n = 20000, P = 16 nous obtenons D 2:47.
Le nombre de Skew-Heap D est egale a 3, pour supporter 16 processus.
Exemple du Funnel-Tree Le calcul est plus simple, car la profondeur de l'arbre
est constante : log s avec s espace des priorites (voir le paragraphe A.2.2.b). Les
operations ont aussi besoin de deux nuds a chaque etape du parcours, pour chaque
oe. La capacite d'un Funnel-Tree est donc constante :
C = log2 S :
D'ou, l'expression de D pour un multi-Funnel-Tree:
2P :
D = log
S
These Paris VI, Janvier 1996
4.1. Performances
73
Structure
séquentielle. S
h(n)
Parallélisation
SDDP
Parallélisation
SDOP
h( n )
D
une opération sur chacunes des D représentations
h(n)
h(n) opérations sur une représentation
Parallélisation
SDODP
h( n )
D
h( n ) opérations sur chacunes des D représentations
D
Figure 4.1 : Parallelisation par l'approche SDODP
4.1.2 Les co^uts
Chacune des deux approches SDDP et SDOP genere des co^uts de types dierents.
Pour une operation, d'une part, le surco^ut TgpSDDP de l'approche SDDP est une
fonction croissante dependante du nombre de sous structures (equilibrage de charge)
donc dependante de D et non plus de P.
De plus, quelle que soit la strategie d'equilibrage de charge, elle consiste a
transferer des elements d'une sous structure a une autre sous structure. Elle effectue donc des operations sur chacune de celle-ci. Le co^ut qu'elle entra^ne doit
donc aussi prendre en compte ce facteur. Ce dernier est encore plus inuent si la
methode de fusion&recopie est utilisee.
La fonction EC exprimant le surco^ut des SDDP depend donc de D et h:
TgpSDDP = EC(D; h(n)):
Si un algorithme SDDP asynchrone ou macro synchrone est utilise, ce terme
est tres dicile a preciser dans le cadre d'une seule operation, car la procedure
d'equilibrage de charge n'est pas executee a chacune d'entre elles.
Le co^ut Tgps de l'approche SDOP asynchrone est donne (voir chapitre 3) par :
TgpSDOP = h(n) (Ttr (P) + Texec (P)):
avec Ttr temps de transfert d'une donnee dependante du nombre de processus,
These Paris VI, Janvier 1996
4.2. Quels algorithmes SDODP ?
74
Texec temps de l'execution d'une primitive d'exclusion mutuelle fonction du nombre
de processus, sur certaines machines.
L'expression du co^ut des multi-structures est donc :
P ) + T ( P )]:
TgpSDODP = EC(D; h( Dn )) + h( Dn ) [Ttr ( D
exec D
Cette expression met en evidence les faits que, si D est choisi tres grand (proche
de P), le co^ut d^u a l'equilibrage de charge predomine, en revanche si D est petit
(proche de D ), l'algorithme concurrent genere une grande proportion des co^uts
globaux.
Nous n'avons pas fait appara^tre le temps de communication des elements dans la
fonction EC. Si la machine consideree est homogene, c'est-a-dire si elle est composee
d'un m^eme type de machine sequentielle, ce terme est Ttr . En revanche, si la machine
n'est pas homogene, ce terme est dierent de Ttr . Un exemple d'une telle machine
peut ^etre un reseau de stations de travail multi-processeurs ou tout simplement une
machine parallele a memoire partagee, ou les communications dans l'equilibrage
de charge sont eectuees par l'intermediaire d'une librairie de passage de messages
PVM ou MPI.
4.2 Quels algorithmes SDODP ?
Un algorithme SDODP d'une structure peut ^etre cree en combinant n'importe
lesquels des algorithmes SDOP et SDDP de cette m^eme structure. Nous presentons
et discutons ces associations en fonction des les de priorite.
Dans la litterature, les les de priorite parallelisees sur ce modele utilisent toutes
la methode fusion&recopie comme algorithme SDDP, a un cas particulier de d-heap
(algorithme SDOP de Rao et Kumar [RaKu88]).
Par exemple, la combinaison du 2-heap SDDP par la methode fusion&recopie, et
de l'algorithme SDOP de Rao et Kumar donne l'algorithme de Horn et Das [DaHo91].
Si l'on eectue cette m^eme combinaison sur un 1-heap, (un tableau lineaire), on
obtient l'algorithme de Fan et Cheng [FaCh89].
Une Skew-Heap SDOP peut ^etre obtenue en combinant notre methode SDDP
fusion&recopie et notre algorithme SDOP. Toutes les optimisations que nous avons
proposees dans ce dernier cas (sur machine a memoire distribuee, virtuellement ou
physiquement partagee, chapitre 3) peuvent ^etre appliquees.
Dans le cas particulier d'un Branch and Bound, si l'equilibrage n'est pas necessaire,
mais que la semantique doit ^etre respectee strictement, on peut combiner l'algorithme
de Gengler et Diderich, pour la partie SDDP avec un algorithme SDOP.
Si ni une semantique stricte ni un equilibrage parfait ne sont requis, nous pouvons
utiliser un algorithme d'equilibrage de charge quelconque combine a un algorithme
SDOP.
Ainsi, un Skew-Heap peut ^etre parallelise en SDODP, en combinant le verrouillage partiel comme methode SDOP et un algorithme SDDP comme celui de Dowaji
utilisant la potentialite [Dowa95], ou ceux de Luling et Monien [LuMo92, LuMo95],
etc...
Le D-heap de Rao et Kumar [RaKu88] associe avec l'un de ces m^emes algorithmes SDDP, donne une D-Heap SDODP.
Ces combinaisons sont nombreuses. Elles se dierencient suivant les proprietes
de semantique et d'equilibrage que les algorithmes SDDP assurent.
These Paris VI, Janvier 1996
4.3. Quelles valeur de D pour un nombre d'elements xe ?
75
Elles sont bien evidemment choisies en fonction du comportement de l'application,
et en fonction de l'architecture de la machine.
4.3 Quelles valeur de D pour un nombre
d'elements xe ?
Si le comportement de l'application et l'architecture de la machine sont les criteres
de choix d'une combinaison, ils inuencent aussi le choix de D pour une combinaison
particuliere.
4.3.1 Inuence de l'application
Si pour les besoins de l'application, la semantique de l'operation de suppression
doit ^etre respectee, il est plut^ot interessant de choisir un D tres petit. Dans le cas
contraire, D peut ^etre choisi tres grand. Si de plus, le comportement de l'application
est susamment bien connu pour qu'on ait propose un equilibrage de charge ecace
avec un faible surco^ut, D peut ^etre choisi tres proche de P.
4.3.2 Inuence de l'architecture de la machine
Bien que la valeur de D soit regie par la capacite demandee, elle peut ^etre modiee
en fonction des co^uts calcules en prenant en compte l'architecture de la machine.
4.3.2.a Machine homogenes
Machine a memoire partagee Lorsque la machine dispose d'une memoire physique-
ment partagee, les co^uts dus aux transfert d'elements sont nuls. La valeur de D peut
donc ^etre calculee, pour assurer une capacite optimale.
Machine a memoire virtuellement partagee En revanche, lorsque la memoire
de la machine est virtuellement partagee, le temps de transfert est un facteur important. Si la valeur de D est choisie proche de D , les co^uts de la partie SDOP
sont tres importants. Ils peuvent ^etre reduit en augmentant la valeur de D, car
cela reduit le nombre de processus par sous structure. Cette augmentation doit ^etre
limitee selon le comportement de l'application.
Machine a memoire distribuee Dans le cas de machines a memoire distribuee,
la vitesse de communication est generalement trop lente pour utiliser une structure
SDOP. Cela entra^nerait des surco^uts trop importants. C'est pour cela que la plupart des solution dans ce contexte propose des structures SDDP (equivalente a une
SDODP avec D = P).
Mais ce jugement doit ^etre nuance selon l'application. Un algorithme SDDP, avec
un faible surco^ut, rel^ache au maximum la semantique de l'operation de suppression.
Si la consequence de ce rel^achement est un co^ut de traitement plus eleve de la part
de l'application. Ce dernier peut recouvrir le temps gagne par l'utilisation d'une
structure SDDP avec un equilibrage de charge simple.
Il est parfois interessant de choisir une structure SDODP, qui assurant une
semantique plus stricte, reduit de beaucoup le co^ut de traitement.
4.3.2.b Machines heterogenes
De plus en plus de constructeurs proposent des stations de travail multiprocesseurs
(Sun, SGI) a memoire physiquement partagee.
Si actuellement, il est habituel d'utiliser un reseau de stations de travail monoprocesseur comme machine parallele, il n'est pas impossible, que dans peu de temps,
des reseaux de stations de travail multi-processeurs soient utilises.
These Paris VI, Janvier 1996
4.4. Structures SDODP ou SDOP a deux niveaux
76
Les SDODP seraient particulierement bien adaptees a ce modele. Une sousstructure SDOP serait aectee a chacune des stations. Un algorithme SDDP assurerait un equilibrage de charge entre chacune d'elles.
Les bibliotheques PM2 ou Athapascan, serait tres interessantes dans ce contexte,
pourvu que le "scheduler de thread", qui pour l'instant est monoprocesseur, puisse
gerer une machine multiprocesseur. Ce dernier integrant une le de priorite serait
assimilable a une structure SDOP. Et les regulateurs de charge integres a ces bibliotheques seront consideres comme les algorithmes d'equilibrage de charge d'une
structure SDDP.
4.4 Structures SDODP ou SDOP a deux
niveaux
Sur machine a memoire partagee, une structure SDODP peut ^etre concue d'une
maniere particuliere.
4.4.1 Algorithme SDDP
L'equilibrage de charge d'une structure SDDP peut facilement ^etre resolu, sur de
telle machine, par l'intermediaire d'une donnee globale qui contient un ensemble
d'elements, un blackboard comme celui propose par Rao et Kumar [RaKu88]. Son
but est d'orir a l'ensemble des processus, une zone memoire ou sont stockes les
meilleurs elements.
Cette structure est assimilable a une structure non pas SDDP, mais SDOP.
Toutes les operations accedent en concurrence a une structure de donnees qui est
composee d'un ensemble de sous-structures, et d'une racine "virtuelle".
Les processus sont donc serialises par l'acces a cette donnee.
4.4.2 Algorithme SDODP
L'inter^et de l'algorithme precedent est d'^etre utilise comme algorithme SDDP, dans
le cadre des SDODP
Si D sous-structures sont utilisees, les P processus sont divises en DP groupes
de processus. Chaque groupe est associe a une des D sous-structures SDOP. Un
processus de chaque groupe, le ma^tre, eectue l'algorithme SDDP. Les autres, les
esclaves, accedent directement a leur sous-structure.
Cet algorithme, lorsque D est egal a un, est assimilable a un algorithme SDOP.
Au contraire, lorsque D est egal a P, il se comporte comme un algorithme SDDP.
Il est a noter que du point de vue de l'application, les ma^tres realisent le m^eme
travail que les esclaves. Ils ne sont pas specialises dans la gestion de l'equilibrage.
Un probleme survient alors lorsque la valeur de D est tres petite (D > 1).
En eet, considerons le cas d'une multi le de priorite composee de deux sousles (D = 2) accedees par huit processus (P = 8). L'utilisation d'un seul ma^tre
pour chaque groupe contenant donc trois esclaves, peut appara^tre insusant, pour
assurer une semantique approchee de l'operation de suppression. L'ensemble des
esclaves realisant trois fois plus de travail que celui fourni par le ma^tre. Quelques
uns d'entre eux niront par obtenir des elements de priorite inferieure a celle des
elements contenus dans l'autre le.
Une premiere solution consiste a aecter, dans chaque groupe, M ma^tres accedant
tous a la m^eme donnee globale, au m^eme black-board. Il est clair que dans ce cas,
les co^uts de l'algorithme SDDP ne sont plus fonction de D mais fonction de M D.
L'inter^et des structures SDODP est donc perdu.
These Paris VI, Janvier 1996
4.5. Un algorithme SDODP dynamique pour un nombre d'elements variables
77
La donnée
globale
4 groupes
de 3
processeurs
4 SDOP á verrouillage partiel
processeur maître du groupe
accédant á la donnée globale.
processeur esclave accédant
qu’á sa sous structure.
Figure 4.2 : Structure SDODP par deux SDOP
Une deuxieme solution, evitant ce probleme, consiste a utiliser M ma^tres par
groupe notes mi accedant a M black-boards distincts notes bi . Plus precisement,
les ma^tres mi de chaque groupe accedent au black-board bi (voir gure 4.3).
Les groupes de ma^tres etant independants les uns des autres, ils n'interferent
pas.
Le probleme est de choisir le nombre de ma^tres vis-a-vis de l'application et
du nombre de sous-structures. Nous donnons des resultats experimentaux de cette
structure dans le chapitre suivant. Les applications utilisees sont des algorithmes
Branch and Bound.
4.5 Un algorithme SDODP dynamique pour un
nombre d'elements variables
Les structures de donnees de certaines applications (Branch and Bound, A*) doivent
gerer un nombre dynamique d'elements
Or, toute l'etude des structures SDODP faite jusqu'a maintenant, considerait
un nombre xe d'elements n. Le calcul de la valeur de D depend de la valeur de
n. D doit donc varie au cours de l'execution de l'application, pour permettre un
fonctionnement optimal de la SDP.
4.5.1 Consequence de la modication de D
Le probleme majeur est non pas le calcul de D pour un n variable, mais, plut^ot
la gestion des consequences de ce changement de valeur. Elles sont au nombre de
deux :
These Paris VI, Janvier 1996
4.5. Un algorithme SDODP dynamique pour un nombre d'elements variables
1
2
78
Les données
globales
4 groupes
de 4
processeurs
4 SDOP á verrouillage partiel
processeur maître du groupe
accèdant á la donnée globale 1.
processeur maître du groupe
accèdant á la donnée globale 2.
processeur esclave accèdant
qu’á sa sous structure.
Figure 4.3 : Structure SDODP par deux SDOP
1. l'algorithme SDDP doit ^etre parametre par la valeur de D,
2. les elements des D sous-structures doivent ^etre repartis sur D0 sous-structures.
La premiere est, somme toute, assez simple a gerer.
Par contre, la seconde est compliquee. Car, elle signie un re-equilibrage complet
des D sous-structures, pour obtenir D0 sous-structures equilibrees.
Nous proposons un algorithme permettant de gerer ce probleme fondee sur le
Skew-Heap. Nous rappelons que la capacite C d'un Skew-Heap SDOP est C = logn
2 .
Notre algorithme ne propose pas de modier la valeur de D pour qu'elle soit optimale vis-a-vis du nombre d'elements. Car comme nous l'avons dit precedemment,
cela impliquerait une reorganisation complete de la structure. Si les D sous-structures
sont equilibrees, decrementer ou incrementer D revient respectivement a "vider" ou
a "remplir" une sous-structure. Le co^ut de cette reorganisation est forcement de 2 Dn
operations.
Nous proposons de modier D en le multipliant ou en le divisant par un facteur
deux. Quand la reorganisation de la structure doit-elle ^etre declenchee ?
Si l'on considere que les D sous-structures sont equilibrees, D est multiplie par
deux lorsque la capacite de chacune des sous-structures devient insusante pour
accepter DP processus, c'est a dire lorsque C devient egale a DP .
Dans le cas d'un Skew-Heap, cela peut ^etre exprimee par :
log Dn P
2 = D:
These Paris VI, Janvier 1996
4.5. Un algorithme SDODP dynamique pour un nombre d'elements variables
79
D'ou l'expression de n:
n = De DP :
Donc D est multiplie par deux lorsque la valeur de n atteint la valeur: De DP .
La valeur de D est divisee par deux lorsque la valeur de n donne une capacite
C pour chacune des sous-structures avec : C = 2DP ? 1.
Ce qui pour un Skew-Heap donne :
log Dn 2P
2 = D ? 1:
D'ou l'expression de n:
n = De 4DP ?1 :
Donc D est divise par deux lorsque la valeur de n atteint la valeur : De 4DP ?1.
Nous avons choisi le Skew-Heap, car son operation de base est l'operation de
Melding. Cette operation a pour but d'assembler deux Skew-Heaps en un seul.
fils
gauche
D multiplié
par 2
fils
droit
fils
gauche
fils
droit
D divisé
par 2
Meld
Meld
Figure 4.4 : Passage de D a 2D sous-structures, puis de 2D a D.
Il devient donc tres simple de diviser le nombre de sous-Skew-Heaps par deux.
Il sut d'executer l'operation de Meld sur chaque groupe de D2 Skew-Heaps.
Lorsque D est multiplie par deux, les ls droits de chacune des D Skew-Heaps
deviennent les D nouvelles sous-structures.
La gure 4.4 presente graphiquement ces deux phases.
4.5.2 Valeur de D initiale et nale, regime susant
La valeur de D peut donc ^etre modiee lors de l'execution de l'application dans ce
qui pourrait ^etre appele un regime susant, c'est-a-dire lorsque le nombre d'elements
These Paris VI, Janvier 1996
4.6. Conclusion
80
n est susant pour permettre son calcul.
La structure peut ^etre surchargee. Lorsque le nombre n est susamment grand
pour que la capacite de la structure soit superieure a P avec une seule sous-structure
c'est a dire D egal a un.
En fait, les investigations sur la valeur de D pour un n xe repondent a cette
question. Brievement, la valeur minimale de D depend d'une part du comportement
de l'application et d'autre part de l'architecture de la machine.
Dans tout les cas, il faut choisir une valeur initiale et nale une de D. Ces valeurs
sont encore une fois dependantes de l'application.
Considerons une application denissant une structure vide au depart et a la n
de son execution.
Nous proposons d'initialiser la valeur de D a P. Si la structure presentee au
paragraphe precedent est utilisee, l'algorithme d'equilibrage de charge assure la
repartition des elements.
Lorsque la n de l'application approche, c'est-a-dire lorsque n devient petit, fautil accro^tre D pour garder une capacite optimale, ou faut-il au contraire essayer de
garder D egale a 1 facilitant ainsi le test de terminaison de l'application ?
Nous proposons qu'a la n de l'application, D soit egal a P. L'algorithme de
terminaison pouvant ^etre implemente avec une variable accedee en section critique
independante de la gestion de la sous-structure, le nombre D ne g^ene pas le test de
terminaison.
Les propositions que nous faisons quant aux valeurs initiale et nale de D,
sont dependantes de la strategie d'equilibrage de charge qui est utilisee. Dans le
cas present, nous utilisons une strategie assurant la semantique de l'operation de
suppression avec un certain taux. Le nombre de sous-structures peut donc ^etre egal
au nombre de processus, a l'etat initial et nal.
4.6 Conclusion
Nous avons propose plusieurs structures SDODP. Chacune d'elles est specique a
une architecture de machine et a une application donnee.
La discussion sur la valeur de D, le nombre de sous-structures, lorsque le nombre
d'elements est xe permet d'obtenir une structure "a la carte". La valeur de D peut
^etre calculee, pour obtenir la capacite desiree, tout en tenant compte des co^uts
entra^nes.
Nous n'avons pas implemente toutes les structures qui utilisent la methode de fusion&recopie, car dans le cas precis des applications que nous avons choisies comme
objets d'etudes, assurer une semantique stricte de l'operation de suppression, genere
un co^ut qui ne recouvre pas le co^ut de traitement. Toutefois, il est certain que des
applications necessitant ce modele existent.
Nous nous sommes volontairement limites aux machines a memoire partagee ou
tout du moins a celles orant une memoire virtuellement partagee. La raison est en
tout simplement, l'evolution des machines commerciales.
De plus en plus, les constructeurs proposent des machines a architecture distribuee, mais avec une couche logicielle permettant de simuler cette ensemble de
memoire comme une seule memoire partagee. Notons que cette idee n'est pas nouvelle, beaucoup de constructeurs avaient deja mis sur le marche des machines sur
ce modele. Kendall Square Research est l'un de ceux-la, mais aussi la BBN avec
la Buttery TC2000. Plus recemment, Cray (avec le T3D pour un certain contexte
These Paris VI, Janvier 1996
4.6. Conclusion
81
d'execution), Cray et Sun, pour une machine a 64 processeurs propose ce style de
gestion. IBM projette, de proposer une couche logicielle integree au systeme UNIX
AIX, realisant cette simulation sur les SP1 et SP2.
La cause en est tres simple, la programmation de ces machines est plus facile
que celles de machines a memoire physiquement distribuee.
La preuve est egalement dans l'evolution recente des bibliotheques de passage de
messages telles PVM, MPI ou LANDA. Ces bibliotheques tendent a laisser la place
a celles qualiees de "multithreadees" comme PM2 ou Athapascan. Les appels de
procedures a distance y sont utilises comme moyen de base de communication. Le
processus appelant a l'initiative de l'execution de la procedure distante, comme si
les deux processus disposaient d'une memoire partagee.
Au dela des problemes de programmation, nous avons voulu aussi montrer par
l'etude des SDODP que les deux modeles SDDP, et SDODP ne s'opposent pas,
qu'ils ne sont pas incompatibles.
Historiquement, les structures SDDP, etaient utilisees pour les machines a memoire
distribuee, alors que les structure SDOP etaient quant a elles exclusivement utilisees
sur machines a memoire partagee.
Les fervents des deux modeles s'opposaient. Chacun de ces modeles a en fait ses
avantages et ses inconvenients. Nous avons voulu montrer qu'ils sont complementaires
et avantageusement combinables.
Une autre justication des structure SDODP vient de l'evolution recente des
architectures des stations de travail. Plusieurs constructeurs proposent maintenant
des stations multiprocesseurs a memoire physiquement partagee (Sun, SGI), m^eme
pour le grand public, Be-Inc a presente la Be-Box au mois d'octobre 95. Cette
machine peut contenir jusqu'a huit Power-PC. La version de base avec deux de ces
processeurs entre dans la gamme de prix d'un PC disposant d'un Pentium.
Si actuellement, des reseaux de stations de travail monoprocesseurs sont largement utilises, il n'est pas impossible que dans peu de temps des reseaux de stations
de travail multiprocesseurs le soient egalement. Les structures SDODP seraient alors
tout a fait adaptees a ce type d'architecture.
These Paris VI, Janvier 1996
82
5
E tude de structures de
donnees pour l'exploration
d'espace de recherche en
RO/IA
Chapitre
Le but de ce chapitre est de presenter des experimentations des les de priorite paralleles decrites dans les chapitres precedents. Il concerne des algorithmes d'exploration
de recherche en Recherche Operationnelle et en Intelligence Articielle.
Nous exposons ainsi d'abord l'algorithme de Branch and Bound, puis etudions
les les de priorite sequentielles qui lui sont le mieux adapte. Nous presentons
ensuite les resultats experimentaux pour une simulation de Branch and Bound
et pour une resolution du probleme d'aectation quadratique. La premiere partie de ce travail a ete eectuee en collaboration avec Bernard Mans. Elle a fait
l'objet d'une presentation lors de la conference On principles of Parallel Computing
(OPOPAC) [LeMR93]. Une autre partie a ete presentee a la conference Irregular'94 [LeRo94].
Nous nous interessons ensuite a une structure de donnees pour l'algorithme
A*. Ce travail realise avec Van-Dat Cung a ete presente aux Rencontres FrancoCanadiennes [CuLe94b].
Les tests experimentaux que nous exposons ont ete realisees sur plusieurs machines : Sun Sparc pour le sequentiel, Sequent Balance et KSR1 pour le parallelisme.
Bien que la KSR et la Sequent disposent toutes les deux d'une memoire partagee,
elles dierent par la gestion qui en est faite.
La memoire de la Sequent est physiquement partagee alors que celle de la KRS1
est virtuellement partagee. Le partage est simule par le systeme appele ALL-CACHE
a partir de memoire physiquement distribuee.
5.1 L'algorithme de Branch and Bound
5.1.1 Algorithme general de Branch and Bound
Le but des algorithmes d'evaluation et separation (General Branch and Bound B&B)
est de resoudre des problemes d'Optimisation Combinatoire diciles (NP-complet
en complexite) du type :
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
83
min f(x); x 2 X
ou X represente le domaine d'optimisation,
x est une solution realisable si elle appartient au domaine X,
f(x) est la valeur d'une solution (fonction economique).
La methode B&B est fondee sur une enumeration intelligente des solutions
realisables d'un probleme d'Optimisation Combinatoire.
Son principe est de decomposer un probleme donne en deux ou plusieurs sousproblemes de taille inferieure.
Suivant une strategie denie prealablement, un sous-probleme est selectionne,
puis est partage, sauf si on peut prouver que les sous-problemes resultants ne peuvent conduire a une solution optimale, ou ne peuvent plus ^etre decomposes.
An de choisir un sous-probleme parmi ceux qui n'ont pas ete examines, une
evaluation (borne inferieure) des solutions dans chaque sous-probleme est introduite.
Les sous-problemes dont l'evaluation est superieure a la valeur de la meilleure solution connue, ne sont pas examines.
Nous pouvons representer les etapes du partitionnement d'un probleme, par un
arbre. Un sous-probleme est represente par un nud de l'arbre, les problemes en
lesquels il se subdivise, sont ses ls.
Plus precisement, un algorithme B&B repose sur les notions cles suivantes :
le principe de separation qui associe a tout sous-probleme l'ensemble des
sous-problemes en lesquels il se decompose,
une fonction d'evaluation qui associe a tout sous-ensemble de solutions,
une valeur representant une borne inferieure du co^ut minimal des solutions
lui appartenant,
une strategie de recherche qui est utilisee pour selectionner parmi les
sous-problemes restants, celui qui sera separe,
un intervalle de recherche constamment remis a jour, il a pour borne
inferieure la plus petite evaluation d'un sommet pendant (sans successeur) et
pour borne superieure la valeur de la meilleure solution realisable connue.
Trois strategies sont generalement utilisees :
meilleur d'abord, le nud selectionne est celui de plus grande priorite. La priorite d'un sous-probleme est la valeur de borne inferieure qui lui est associee.
profondeur d'abord, le nud le plus profond est selectionne.
largeur d'abord.
L'implementation d'un algorithme B&B avec une strategie meilleur d'abord, consiste donc a realiser des operations sur une le de sous-problemes (les sommets
pendants de l'arbre B&B) de priorites dierentes ou egales.
La structure de donnees utilisee est une le de priorite dans laquelle les sousproblemes (elements) sont inseres et supprimes.
5.1.1.a Comportement l'algorithme
Comme nous l'avons indique dans le chapitre 1, le comportement de l'algorithme
utilisant une structure de donnees, oriente le choix sur telle ou telle structure.
L'objet de cet paragraphe est d'expliciter le comportement propre aux algorithmes
de B&B, an de denir une sorte de "portrait-robot" de la le de priorite qui
doit ^etre utilisee. Nous nous placons dans le cas d'une minimisation de la fonction
economique.
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
84
Propriete 20 La fonction d'evaluation est monotone croissante.
En eet, l'evaluation d'un sous-probleme ne peut ^etre inferieure a celle du sousprobleme dont il est issu. La fonction d'evaluation qui aecte des valeurs aux sousproblemes ls par rapport au sous-probleme pere, est donc monotone croissante. La
propriete de monotonie est tres utile car elle permet de proposer une le de priorite
ecace. Le Funnel-Table est une de celle-la (paragraphe A.2.2.a).
Propriete 21 Tout sous-probleme dont l'evaluation n'est pas dans l'intervalle de
recherche n'est pas examine (la branche correspondante de l'arbre est elaguee).
La particularite commune a tous les algorithmes de B&B est donc qu'ils evitent
l'examen complet de l'arbre potentiel des sous-problemes pour trouver et prouver
qu'une solution est optimale. Ils acquierent des connaissances tout au long de la
construction de l'arbre qui leur permettent d'eectuer des elagages.
Si cs est le co^ut de la meilleur solution trouvee, les sous-problemes dont l'evaluation
est superieure a cs ne pourront pas generer de solution optimale, puisque leur co^ut
est deja superieur a cette valeur. Generer les ls des sous-problemes est donc, dans
ce cas, inutile.
s0 -20
s1 -23
s3 -25
s4 -31
s6 -29
s7 -34
s2 -29
s5 -26
s8 -30
s9 -30
s10-32
s11 -34
Figure 5.1 : Exemple d'arbre de GBB
La gure 5.1.1.a donne un exemple d'arbre de solution d'un B&B. Chaque nud
contient la reference et l'evaluation du sous-probleme associe.
Les nuds s6 et s11 sont des solutions de valeurs 31 et 34. Les sous-problemes
s7 , s10 et s11 ont des evaluations superieures a la valeur de s6 , ils doivent donc ^etre
elagues.
An de choisir les structures de donnees les plus appropriees, il nous faut d'abord
denir leurs caracteristiques dans le contexte d'algorithmes B&B.
5.1.1.b Caracteristiques de la le de priorite d'un B&B
Les les de priorite (FP) orent deux operations de base:
suppression de l'element de plus grande priorite.
insertion d'un element de priorite quelconque.
Lorsque des elagages doivent ^etre eectues, nous avons besoin d'une operation
qui detruise tous les elements presents dans la le dont les priorites sont inferieures
a une valeur donnee. Cette operation est appelee DeleteGreater.
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
85
Les les de priorite generalement utilisees n'orent pas la possibilite de realiser
cette operation avec un co^ut acceptable (cf paragraphe A.2).
La methode alors utilisee, consiste a tester, lors de la selection d'un sous-probleme,
si son evaluation ne depasse pas la valeur de la meilleure solution connue.
Le defaut de cette methode est que les performances de la structure sont alterees
par la presence d'elements inutiles. Nous pouvons voir l'operation de DeleteGreater
comme un ramasse-miettes. La le de priorite d'un B&B ne doit pas posseder obligatoirement cette operation, mais sa presence peut ameliorer les performances.
Experimentalement, on a constate que les algorithmes de B&B generent beaucoup de sous-problemes d'evaluation identique, car l'espace des priorites est bien
inferieure au nombre de sous-problemes explores [Mans92].
La le de priorite doit donc gerer beaucoup de nuds de priorite egale.
De nombreux travaux ([MaRo93, LaSa84a, LiWa86a]) ont montre qu'un choix
nondeterministe parmi les sous-problemes de m^eme evaluation, pouvait conduire a
des anomalies de performances, lors de l'implementation parallele: sous-acceleration
(speed-up inferieur a 1) ou sur-acceleration (speed-up superieur au nombre de processeurs).
Cela signie que la FP doit ^etre stable. Si un sous-probleme A de priorite pr est
insere avant un autre element B de m^eme priorite, les operations de la structure
doivent assurer que A et B seront supprimes soit dans le m^eme ordre, soit dans
l'ordre inverse.
Propriete 22 L'etat initial et l'etat nal de la le devant ^etre vide, il y a autant
d'elements supprimes que d'elements inseres.
Si aucune operation de DeleteGreater n'est executee, le nombre d'insertions est
egal au nombre de suppressions.
5.1.2 Les les de priorites sequentielles
Nous etudions ici les les de priorite sequentielles les mieux adaptees a un B&B. Ce
travail a ete realise avec Bernard Mans [LeMR91, LeMR93].
Les tas La le de priorite la plus utilisee dans les B&B, est aussi la plus ancienne : le 2-heap [Will64]. Une presentation de cette structure peut ^etre trouvee en
annexe A.2.1.
Dans le contexte du B&B, les problemes poses par le 2-heap ou plus generalement
le d-heap, sont ceux de tous les tas :
ils ne sont pas stables. La restructuration que leurs operations eectuent,
"melange" les elements de m^eme priorite.
la complexite de l'operation Delegreater est O(n). De part leur invariant, il est
impossible de trouver tous les elements de priorite inferieure a une certaine
valeur, sans proceder a un parcours complet de la representation.
Dierencier les les representees par des tas, ne peut se faire que par des
experimentations.
Les structures de recherche Les structures de recherche sont interessantes dans
le contexte de B&B pour de nombreuses raisons.
Elles sont stables. Les rotations qu'elles utilisent comme operations elementaires,
gardent l'ordre des elements m^eme si ils ont des valeurs egales.
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
86
Il est possible d'associer a un nud de l'arbre une valeur de priorite. La taille
de la structure peut donc ^etre reduite, si tous les elements d'une valeur de priorite
donnee, sont rangees dans une m^eme liste associee au nud.
Les elements de priorite superieure a une certaine valeur, peuvent ^etre trouves en
parcourant une branche de l'arbre. La complexite de l'operation de DeleteGreater
est donc en O(log n).
Le choix de structures de recherche a bien evidemment ete fait en pensant a la
methode de parallelisation SDOP (chapitre 3). De ce fait, les structures dont les
operations se composent de deux phases (parcours racine-feuille puis feuilles-racine),
telles les arbres AVL, Red-Black, B ou B+, ont ete eliminees.
Il est a noter, que lorsque les structures de recherche sont utilisees en tant
que les de priorite, toutes leurs operations modient leur representation. Aucune
operation de lecture seul n'est eectuee. Les problemes de gestion de primitives
d'exclusion mutuelle a plusieurs niveaux sont ainsi evites.
Notre choix s'est alors tout naturellement porte sur une version des Splay-trees :
les Top-Down Semi-Splay-Trees.
Les structures speciales Les structures speciquement etudiees pour le B&B,
ne sont pas nombreuses. La funnel-Table et le funnel-Tree sont de celles-la.
Elles sont fondees sur une taille limitee et reduite de l'intervalle de recherche
dans lequel les priorites prennent leur valeur. Elles assurent la propriete de stabilite
et orent une operation DeleteGreater ecace.
Leur description respective a ete reportee en Annexe A.2.2.
5.1.3 Files de priorites SDOP
Nous discutons les versions concurrentes des les de priorite precedemment presentees.
5.1.3.a Les Tas
Nous avons detaille au chapitre 3, une methode permettant les acces concurrents
aux structures de donnees arborescentes. Cette methode dite de verrouillage partiel, permet d'obtenir une capacite proportionnelle a la hauteur de la structure et
inversement proportionnelle a la taille d'une fen^etre.
Nous avons aussi prouve qu'il est possible de remplacer tous les verrous (sauf
pour la racine) par un simple mecanisme de marquage.
Les algorithmes concurrents des operations du Leftist-heap et du Pairing-heap,
ne sont pas ecaces. En eet, ces operations sont decoupees en deux phases (voir
l'annexe A.2). Pour le Leftist, la structure doit ^etre verrouillee pendant toute la
duree d'execution de chacune des operations. Quant a l'operation de suppression du
Pairing-heap, la racine n'est trouvee qu'a la n de l'algorithme. La concurrence se
resumerait a un acces exclusif, impliquant ainsi une capacite de un.
L'algorithme concurrent de 2-heap necessite une fen^etre comprenant deux nuds
consecutifs. La capacite C est donc
C = log2 n :
Malheureusement, l'algorithme de suppression eectue des acces directs a certains nuds. Il est donc impossible d'y appliquer notre protocole par marquage.
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
87
Le Skew-Heap, est parfaitement adapte a notre methode. De plus, le protocole
par marquage peut y ^etre applique.
Comme nous l'avons deja dit, les tas ont une operation de Deletegreater qui
necessite un parcours complet de l'arbre. Dans un contexte concurrent, cette operation
doit donc acceder de maniere exclusive a la structure. La capacite est donc de un,
durant cette periode.
5.1.3.b Funnel-Table
Le Funnel-Table n'est pas une structure arborescente, donc les methodes presentees
au chapitre 3 ne peuvent s'appliquer.
Le principe de l'algorithme sequentiel est d'acceder directement a la le d'attente
consideree. Pour assurer la consistance de la structure, il faut rendre cette operation
atomique. Ceci est eectue, en utilisant une primitive d'exclusion mutuelle: un verrou. Chaque le du tableau peut ^etre verrouillee separement.
Nous designons par ft la le d'attente d'indice t, et par P = (P1 ; : : :; Pp ) les p
processus susceptibles d'acceder a la structure.
Insertion Lors d'une insertion, le processus verrouille la le consideree ft, eectue
une insertion sequentielle dans ft , puis deverrouille ft .
Suppression Dans l'algorithme sequentiel, une variable B designe l'indice de la
le fB , ou se trouve les elements de plus grande priorite.
Dans le cas ou il existe un element dans fB , il sut d'eectuer la suppression
suivant le m^eme schema que l'insertion.
En revanche, si fB est vide, une remise a jour de B doit ^etre eectuee. Nous
avons choisi de partager la variable B entre tous les processus p appartenant a
P , an que ces derniers soient informes du nouvel indice de la le possedant les
elements de plus grande priorite.
Un processus Pi voulant realiser une suppression et trouvant fB vide ne peut,
comme en sequentiel, aecter l'indice de la prochaine le non-vide a B.
En eet, comme les processus travaillent de facon asynchrone, un processus Pj
peut avoir une insertion a eectuer sur la le fB+1 d'indice B + 1. Si Pi teste la le
fB+1 avant que Pj n'ait pu inserer son element e, alors e sera perdu.
Un premiere solution consiste a modier l'algorithme d'insertion. An d'assurer
que B designe toujours la le contenant les elements les plus prioritaires, l'operation
d'insertion peut tester la valeur de B, et la modier le cas echeant. Ainsi, un element
insere ne peut ^etre perdu.
Malheureusement cette solution signie, que toutes les operations accedent a la
variable B en exclusion mutuelle. Elles sont donc serialisees limitant la capacite a
un. L'inter^et de l'utilisation d'un tableau est perdu.
Une seconde solution utilise le contexte specique du B&B.
Nous considerons qu'une le ft est "denitivement vide" si et seulement si tous
les processus ont ni de separer tous les nuds de priorite inferieure ou egale a celle
associee a ft .
Pour cela, nous ajoutons a la structure de le, un champ entier nb initialement
a 0.
Un processus Pi eectuant une suppression sur une le ft , incremente le champ
nb de ft . Il le decremente lorsqu'il aura ni la generation des nuds ls. Si tous les
processus accedant a la structure utilisent cet algorithme, la structure reste alors
consistante.
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
88
En eet, considerons deux processus Pi et Pj . Supposons que Pi ait obtenu
par une suppression, le dernier element de la le fB , et que Pj veille realiser une
suppression.
Comme fB est vide, Pj va essayer de trouver la prochaine le denitivement vide
en parcourant le tableau a partir de fB . Or le champ nb de fB n'est pas nul, donc
Pj ne pourra modier B. La structure reste consistante. Ce m^eme processus Pj ne
pouvant remettre a jour B, n'a pas de travail a eectuer. Nous pouvons considerer
que Pj peut s'en procurer lui-m^eme, en allant chercher la premiere le non vide.
Cette modication de l'algorithme change la complexite de l'operation de suppression.
En eet, pour l'algorithme sequentiel, la complexite de l'ensemble des suppressions et des DeleteGreater est O(S).
En revanche, pour l'algorithme parallele, le pire des cas se presente lorsqu'un
processus Pi eectue un suppression sur la premiere le, puis ne fait plus rien.
Les autres processus, a chaque suppression realisee, vont ^etre obliges de parcourir
une importante partie du tableau, an de trouver du travail. Dans le pire des cas,
l'operation de suppression est donc en O(S).
5.1.3.c Splay-Tree
La description des dierentes versions de Splay-tree a ete reporte en annexe A.2.3.a.
Les operations se realisant dans le sens racine-feuilles, nous utilisons le schema
de verrouillage de la proposition 2.
Soit un processus Pi, voulant realiser une insertion d'un element w dans un
Semi-Splay-Tree appele S.
L'algorithme sequentiel d'insertion du Splay-Tree, dans sa version Semi-Adjusting
doit maintenir trois arbres: T, L et R.
A chaque rotation ZIG-ZIG rencontree, l'arbre T est remis a jour (gure A.3)
et le nud Top auquel les arbres R et L se rattacheront doit ^etre modie.
An de garantir la consistance de la structure, Pi doit verrouiller le nud Top
pendant qu'il construit les arbres R et L. Au debut du parcours, l'arbre T est vide,
donc le verrouillage du nud Top sera remplace par le verrouillage du pointeur de
reference de S (le pointeur sur la racine de S). Lors du parcours pour rechercher la
place de w, chaque nouveau nud parcouru y est verrouille pour assurer qu'il ne
pourra plus ^etre modie.
Dans chaque cas de rotation, nous allons decrire les dierents verrouillages et
deverrouillages de notre algorithme concurrent.
Nous reprendrons les noms donnes aux nuds de la gure A.1 pour les rotations
ZIG et ZIG-ZAG, et ceux de la gure A.3 pour la rotation ZIG-ZIG.
Nous ne considerons qu'un sens de rotation, celui des gures, l'autre etant
symetrique.
ZIG : le nud x est verrouille,
si le nud y n'existe pas alors la place de w est trouvee,
x devient le nud le plus a gauche de R,
x est deverrouille,
ZIG-ZAG : x est verrouille,
y est verrouille,
si z n'existe pas alors la place de w est trouvee,
x devient le nud le plus a gauche de R,
x est deverrouille,
y devient le nud le plus a droite de L,
y est deverrouille,
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
89
ZIG-ZIG : x est verrouille,
y est verrouille,
si z n'existe pas alors la place de w est trouvee,
y devient le ls gauche de Top,
le sous arbre B de y devient la sous arbre gauche de x,
Top est deverrouille (y l'est toujours),
x devient le nud le plus a gauche de R,
x est deverrouille,
le nouveau Top est verrouille,
enn y est deverrouille,
Nous pouvons deverrouiller les nuds inseres dans R ou L, car le nud Top
etant verrouille, le schema nous assure que les nuds des arbres R et L ne peuvent
pas ^etre verrouilles par un autre processus que Pi.
D'autre part, le verrouillage du nud y (cas ZIG) et du nud z (cas ZIG-ZAG
et ZIG-ZIG) n'est pas obligatoire, car lors de ces rotations, ces nuds ne sont ni
modies, ni lus.
La rotation ZIG-ZIG comporte une exception : si l'arbre L ou R est vide, le
nouveau nud Top sera le nud y. Dans ce cas, les deux dernieres operations du
cas ZIG-ZIG ne doivent pas ^etre executees.
Ce phenomene est present dans le cas d'une suppression. En eet, cette operation
recherche le nud le plus a gauche, les rotations susceptibles d'^etre trouvees sont
des rotations ZIG-ZIG ou ZIG du m^eme sens. Donc le nouveau nud Top verrouille
lors d'une rotation ZIG-ZIG est toujours le nud y.
Pour obtenir l'algorithme de Simple-Semi-Splay-Tree concurrent, il sut de retirer le cas ZIG-ZAG de l'algorithme precedent. Les Single-Simple-Semi-Splay-Tree
et Single-Semi-Splay-Tree vont pouvoir ^etre realises de la m^eme facon. Il sut pour
chaque cas d'arr^eter l'algorithme, lorsque les nuds x ou y correspondent au nud
cherche.
5.1.4 Experimentations : Simulation de Branch and Bound
Cette simulation de Branch and Bound a ete proposee par B. Mans [Mans92a]. Elle
consiste en une sequence d'operations de la forme (s:i1 :i2 ), ou s est une suppression
et i1 et i2 sont deux insertions. La valeur pr(i) de chaque element a inserer est
calculee par l'expression :
pr(i) = pr(s) + X:I:
ou pr(s) est la valeur de l'element supprime, X un nombre uniformement distribue
entre zero et un, et I l'accroissement maximal.
Ainsi, la simulation utilise trois parametres :
BInf : la borne inferieure,
BSup : la borne superieure,
MaxIncr : l'incrementation maximale.
5.1.4.a Sequentiel
Le tableau suivant montre le nombre d'operations et le nombre maximal d'elements,
en fonction de la valeur de BSup.
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
90
Bsup 900
950
1000 1050 1100 1150
NbOps 12555 23919 38157 67420 114225 172690
NbElts 3816 7047 13647 24811 36831 63210
100
Temps (s)
D-Heap4
Leftist-Heap
Pairing-Heap
Funnel-Tree
Funnel-Table
Skew-Heap
Semi-Splay-Tree
Single-Semi-Splay-Tree
10
1
900
950
1000
1050
Bornes Sup
1100
1150
1200
Figure 5.2 : Test de les de priorite sequentielles sur un Sparc. BInf= 100 et
MaxIncr= 150.
La gure 5.2 montre l'ecacite des dierentes les de priorite en sequentiel. Elle
indique les "pauvres" performances du d-Heap, leftist-heap et du Pairing-Heap.
Le Skew-Heap etant la version auto-ajustable du Leftist-Heap. Nous pouvons
remarquer sur le co^ut des tests d'equilibrage du Leftist-Heap le rend moins performant que le Skew-Heap.
Les operations du Funnel-Tree sont en O(log S) quel que soit le nombre d'elements
presents dans la structure. Cette remarque explique le fait qu'il soit equivalent au
Skew-Heap.
Ayant des complexites tres interessantes quand a ces operations, il est normal
que le Funnel-Table s'avere aussi ecace en pratique qu'il le laissait supposer en
theorie.
De m^eme, l'inter^et d'utiliser les arbre binaires de recherche comme les SemiSplay-Tree en tant que les de priorite, semble ^etre non negligeable dans ce modele.
5.1.4.b Parallele
Nous presentons d'abord les tests eectues avec les structures SDOP, puis, avec
les SDDP. Les tests experimentaux ont ete eectues avec les parametres suivants:
BInf= 100, BSup= 1200 et MaxIncr=150.
Les processeurs entre deux acces a la structure eectuent peu de calcul. Leur
activite se resume donc a des operations sur les representations. Les les de priorite
sont placees dans un cas extr^eme.
La gure 5.3 montre l'inter^et du protocole par marquage vis-a-vis du protocoles
par verrou. Les dierences de temps d'execution de dierentes les de priorite arborescentes sont agrantes sur la Sequent Balance. Cette dierence l'est encore plus
sur la Ksr1 (gure 5.4).
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
91
60
Funnel Tree
Funnel Tree Marquage
Skew Heap Jones
Skew Heap Jones Marquage
Single Splay Marquage
Single Splay
55
50
45
Temps
40
35
30
25
20
15
10
1
2
3
4
5
6
Nombres de processeurs
7
8
9
Figure 5.3 : SIM : Comparaison verrou-marquage sur une Sequent Balance
55
Skew Heap
Skew Heap Mark
Skew Heap Mark-Priority
50
Temps
45
40
35
30
2
4
6
8
10
12
Nombres de processeurs
14
16
Figure 5.4 : SIM : Comparaison verrou-marquage-priorite sur une Ksr1
Nous avons ajoute sur la gure 5.4, les temps du Skew-Heap, lorsque la variable
priorite est placee dans le nud pere. Nous pouvons voir que cette amelioration
reduit les contentions d'acces sur une m^eme zone memoire et permet d'augmenter
les performances.
55
Single-Simple-Semi-Splay Avec Marquage
Single-Semi-Splay Avec Marquage
Skew Heap Jones Avec Marquage
Funnel Tree Avec Marquage
Funnel Table
50
45
Temps
40
35
30
25
20
15
10
1
2
3
4
5
6
7
Nombres de processeurs
8
9
Figure 5.5 : SIM : Comparaison de toutes les fp SDOP, sur Sequent Balance
La gure 5.5 montre les temps de dierents types de les de priorites sur la
Sequent Balance. Nous pouvons remarquer tout d'abord que le Funnel-Table qui
etait le plus ecace en sequentiel, le reste en concurrent malgre sa mauvaise complexite dans le pire des cas. Cette structure est tres bien adaptee aux algorithmes
de Branch and Bound, mais elle necessite des hypotheses qui la rende peu utilisable
dans d'autres contextes.
Les Semi-Splay-Tree sont interessants jusqu'a 5 processeurs car, comme nous
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
92
110
Skew Heap Mark Priority
Simple Splay Mark Priority
Simple Splay Mark Priority
Funnel Tree Mark
Funnel Table
d-Heap
100
90
80
Temps
70
60
50
40
30
20
10
2
4
6
8
10
12
Nombres de processeurs
14
16
Figure 5.6 : SIM : Comparaison de toutes les fp SDOP, sur la KSR1
l'avons vu precedemment ils "saturent" tres t^ot par rapport aux autres les de priorite, la taille de leur fen^etre etant plus importante.
La version du Skew-Heap donnee ici est la version de Jones [Jone89], utilisant
notre protocole par marquage.
La structure de Funnel-Tree n'est pas tres performante avec peu de processeurs.
En eet, sa complexite theorique est de O(logS), quel ques soit le nombre d'elements
presents dans la structure. Mais, elle est plus ecace que les Splay-Tree a partir de
7 processeurs et devient equivalente au Skew-Heap pour 9 processeurs.
La gure 5.7 donne les resultats du Skew-Heap et du Funnel-Table parallelisees
avec l'algorithme SDDP. Les transferts memoires etant moins importants avec cet
algorithme sur la Ksr1, les performances sont meilleures qu'avec un algorithme
SDOP.
75
Skew Heap SDDP
Funnel tree SDDP
70
65
60
Temps
55
50
45
40
35
30
25
2
4
6
8
10
12
Nombres de processeurs
14
16
Figure 5.7 : SIM : Comparaison de fp SDDP, sur la KSR1
5.1.5 Experimentations : Le probleme de l'aectation
quadratique
La recherche de la minimisation des co^uts lors de l'implantation d'unites sur des emplacements predenis est un probleme d'Optimisation Combinatoire tres repandu,
ses applications reelles etant tres nombreuses et variees [Maut93].
Un exemple en est l'implantation de n usines sur n sites, une et une seule usine
devant ^etre placee sur chaque site.
Les distances inter-sites sont evidemment connues. La distance entre deux sites
quelconques i et j est : dij .
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
93
Par ailleurs, lors du fonctionnement ulterieur du systeme, les usines devront
echanger entre elles une certaine quantite de matieres economiques (matieres premieres,
produits semi-nis, machines, techniciens ...). Le ux devant transiter entre deux
usines quelconques k et l est connu (ou estime) et est note : fkl .
L'objectif est de determiner quelle implantation de minimiser le co^ut total de
transit de matieres entre les usines (le co^ut du transport est juge proportionnel a
la quantite transportee multipliee par la distance parcourue).
Ce probleme peut ^etre formalise comme un programme quadratique en variables
0/1:
xik = 1 si l'unite k est placee sur le site i,
xik = 0 sinon.
P P P P
(AQ) :
Minimiser ni=1 nj=1 nk=1 nl=1 dij fkl xik xjl
sous les contraintes :
xPikn 2 f0; 1g
(1)
x
=
1
8
k
(2)
Pnki=1=1 xikik = 1
8i
(3)
Bien que la taille du probleme soit consideree comme de "n", n2 variables xik
correspondent au choix logique d'implantation des usines sur les sites.
Les 2n contraintes lineaires (2) et (3) formalisent l'obligation de n'implanter sur
chaque site qu'une et une seule usine, dierente pour chacun.
La fonction economique, enn, traduit le souci de minimisation du co^ut total de
transit.
Le B&B utilise est celui de Mautor [Maut93]. Le principe de separation est
polytomique [Rouc87a, Rouc87b], l'evaluation est calculee par la methode dite de
Gilmore-Lawler (Gilmore [Gilm62] et Lawler [Lawl63]).
L'algorithme de Mautor a ceci d'interessant, qu'ilevite la generation de problemes
symetriquement equivalents, lorsque l'ensemble des sites forment une gure reguliere.
Dans beaucoup d'instances de problemes comme ceux trouves dans la QAPLib [BuKR91],
l'ensemble des sites a une topologie reguliere. Il s'agit, la plupart du temps, d'une
grille rectangulaire ou carree, d'un cercle ou d'une ligne, dans lesquels sont regulierement
distribues les emplacements. Les tests ont ete eectue sur l'instance de taille 15 de
Nugent (note Nugent15) pris dans la QAPLib [BuKR91].
La borne superieure initiale du QAP etant tres proche de la valeur de la solution
optimale, nous ne presentons pas de tests de les de priorite sequentielles, car elle
n'apporterait rien de plus dans le contexte d'un QAP que dans celui d'une simulation
de B&B.
En revanche, la dierence entre les deux contextes etant la quantite de calcul
local, les performances obtenues en paralleles donnent des resultats pertinents.
Structures a operations paralleles Comme precedemment, les dierences de
performances entre le Skew-Heap utilisant le protocole par marquage avec la valeur
de priorite dans le nud pere et celui parallelise avec le protocole par verrou, sont
agrantes. La gure 5.8 representant les temps d'execution de toutes les les de priorite pour le probleme Nugent15, illustre les dierences theoriques de ces structures
(chapitre 3).
Le Funnel-Table s'avere toujours le plus interessant. Le calcul local dans ce
contexte etant assez important, les ecarts entre les dierentes les s'amenuisent.
Toutefois, le Funnel-Tree devient de plus en plus performant compare au Funneltable. L'explication reside dans sa taille. L'espace des priorites du Nugent15 est tres
reduit, la taille de l'arbre a entonnoir devient donc tres petite.
These Paris VI, Janvier 1996
5.1. L'algorithme de Branch and Bound
94
700
Skew Heap Marquage-Priority
Skew Heap
Funnel Tree Marquage
Funnel Table
600
Temps
500
400
300
200
100
0
0
5
10
15
Nombres de processeurs
20
25
Figure 5.8 : QAP: Test de plusieurs les de priorite SDOP (KSR1, Nugent15).
500
Skew SDDP
Funnel Tree SDDP
Funnel Table SDDP
Skew SDODP
Funnel Tree SDODP
Funnel Table SDODP
450
400
350
Temps
300
250
200
150
100
50
0
0
5
10
15
Nombres de processeurs
20
25
Figure 5.9 : QAP: Test des strategies d'equilibrage de charge (SkewHeap,Ksr1,Nugent12).
Structures SDDP et SDODP La gure 5.9 montre les performances des al-
gorithmes SDDP et SDODP. Le nombre de sous-structures pour les algorithmes
SDODP est xe a 1 pour 2, 4, 6, et 8 processeurs, puis a 2 pour 12 et 16 puis a 3
pour 24 processeurs.
Nous pouvons remarque qu'il n'y a pas de dierences entre les algorithme SDDP
et SDODP pour les Funnel-tree et le Funnel-Table. Ceci peut s'expliquer par le fait
que les co^uts de l'algorithme SDOP sur la Ksr1 etant tres importants (transfert
memoire voir gure 5.8), ils recouvrent le gain en co^ut de l'algorithme SDDP.
Le fait que tres peu d'anomalies peuvent se produire sur le probleme de l'aectation
quadratique est une deuxieme raison. En eet, la borne superieure initiale sur ce
probleme etant proche de la valeur de la solution optimale, peu de sommets inutiles
peuvent ^etre generes. La propriete de stabilite des structures Funnel limite d'autant
plus ce risque. Et l'inter^et d'utiliser une SDODP n'appara^t donc pas tres clairement
These Paris VI, Janvier 1996
5.2. L'algorithme A*
95
sur ces resultats.
En revanche, peu d'anomalies peuvent se voir sur les resultats de la Skew-Heap.
L'algorithme SDDP a un comportement en "dents de scie" alors que l'algorithme
SDODP donne des resultats plus reguliers.
5.2 L'algorithme A*
Ce travail a ete fait avec Van-Dat Cung [CuLe94b].
L'espace de solutions potentielles est deni en Intelligence Articielle en terme
de d'espace d'etats.
L'espace d'etats est represente par un graphe note G = (V; E; C), ou
E est l'ensemble des arcs du graphe representant les transitions possibles entre
etats,
cij represente le co^ut du passage de l'etat vi a l'etat vj ,
V est l'ensemble des etats/sommets.
Trouver une solution optimale du probleme est equivalent a trouver le chemin
minimal d'un etat initial v0 a un etat nal vn .
Dans la suite, nous confondons les termes etat, et sommet du graphe.
L'algorithme A* [Nils80, Pear84] eectue une recherche de la solution optimale
avec une strategie meilleur d'abord.
Chaque sommet a une valeur assignee, calculee par une fonction d'evaluation
note f. Pour un sommet vi , elle vaut :
f(vi ) = g(vi ) + h(vi )
ou g est la valeur du chemin de v0 a vi, et h est une fonction heuristique evaluant
le chemin de vi a vn .
L'algorithme A* utilise le m^eme schema d'execution que l'algorithme Branch
and Bound avec une strategie meilleur d'abord. A chaque pas de l'algorithme, le
sommet ayant la meilleure valeur de h est selectionne pour ^etre explore.
Plusieurs proprietes de l'algorithme A* peuvent ^etre donnees. Nous les rappelons
brievement.
Propriete 23 L'algorithme A* trouve l'etat nal si il existe.
Propriete 24 Si la fonction h est admissible, c'est-a-dire si h(vi) h(vi ) ou
h (vi ) est la valeur du chemin optimal de vi a vn ;
alors l'algorithme A* trouve le chemin minimal de vi a vn (si il existe).
Propriete 25 Quelque soit vi un sommet du graphe, et pour tout vj suivant de vi,
si la fonction h est admissible et monotone, c'est-a-dire si :
0 < h(vi ) ? h(vj ) cij
alors la fonction f est monotone croissante,
f(vi ) f(vj ):
These Paris VI, Janvier 1996
5.2. L'algorithme A*
96
5.2.1 Structures de donnees pour l'algorithme
La structure utilisee pour stocker les sommets non explores est appelee la liste
ouverte.
Si l'espace de recherche est un arbre, la liste ouverte est une simple le de priorite. L'algorithme A* est dans ce cas equivalent au Branch and Bound meilleur
d'abord.
En revanche, si l'espace de recherche est un graphe, chaque sommet peut ^etre
reference par une clef, representant la conguration de l'etat. Nous notons k(vi ) la
conguration de l'etat vi .
Dans ce cas, plusieurs chemins peuvent exister d'un sommet vi a un sommet
vj Le sommet vj peut donc ^etre explore plusieurs fois, des parcours redondants de
l'espace de recherche peuvent donc ^etre eectues.
Pour cela, les sommets deja explores sont stockes dans une liste appelee liste
fermee. Ils y sont ranges selon leur clef pour tester s'ils ont deja ete explores. La
semantique des operations de la liste fermee correspond donc a celle des operations
des structures de recherche.
Lorsqu'un nouveau sommet vi est genere, il n'est insere que si il n'existe pas
deja dans la liste fermee. Toutefois, il est insere dans la liste ouverte, si il n'existe
pas un element de clef k(vi ), ou si un tel element x existe mais avec une priorite
inferieure a celle de vi . Dans ce dernier cas, vi est insere et x doit ^etre supprime.
La semantique des operations de la liste ouverte est celle des les de priorite
mais le critere supplementaire represente par la clef d'un element doit ^etre pris en
compte.
Le structure doit donc gerer le double critere (priorite, clef).
Les parallelisations de l'algorithme A* presentees dans la litterature ne considerent jusqu'ici qu'un espace de recherche sous forme d'arbre, reduisant le probleme
de la parallelisation des structures listes ouverte et fermee, a celui d'une le de priorite parallele. Rao et Kumar [RaKu88] presente des versions SDOP puis SDDP
fondee sur le black-board (voir les paragraphes 1.2.4.c et 1.3.4) Mahapatra et
Dutt [?] etudient les problemes d'equilibrages de charge pour une structure SDDP
pour MMD. Ils donnent une tres breve explication de leur solution pour la recherche
dans un graphe.
Cung, Fouche [Fouc93] ont propose l'implementation du couple liste ouverte, liste
fermee par une combinaison d'une le de priorite et d'une structure de recherche.
Cette solution, bien que tres performante en sequentiel, donne de mauvais resultats
en version SDOP. Nous montrons qu'il est plus interessant d'utiliser une version
modiee de la Treap (Tree-Heap) pour implementer la liste ouverte en versions
SDDP et SDOP.
5.2.1.a Combinaison de le de priorite+structure de recherche
La solution proposee par Cung et Fouche [Fouc93], regroupe les deux listes (ouverte
et fermee).
Une structure de recherche est utilisee pour stocker tous les sommets (explores
ou non) selon leur clef. Pour pouvoir selectionner le sommet a explorer, une le de
priorite est utilisee.
Les sommets deja explores n'apparaissent que dans la structure de recherche.
Par contre, chaque sommet non-explore est stocke a la fois dans la structure de
recherche et dans la le de priorite. Les deux nuds formant un sommet sont lies
par des pointeurs croises.
La gure 5.10 montre cette combinaison ou les representations des deux structures sont des arbres binaires.
These Paris VI, Janvier 1996
5.2. L'algorithme A*
97
File de priorité
Arbre de recherche
12
15
F
12
17
G
D
C
E
A
Figure 5.10 : La structure combinee le de priorite+structure de recherche.
L'algorithme de suppression est le suivant. Le sommet le plus prioritaire, c'est
a dire celui ayant la meilleur valeur de f, est supprime de la le de priorite. Le
pointeur referencant le nud de la structure de recherche est retourne.
L'insertion d'un sommet vi nouvellement cree, comporte plusieurs etapes.
1. tester l'existence d'un nud x tel que la clef de x est egale a k(vi ) dans la
structure de de recherche.
2. Si x existe, il faut reactualiser sa priorite. Cela signie qu'il faut supprimer le
nud associe dans la le de priorite.
3. Sinon inserer le sommet vi dans la structure de recherche et le nud associe
dans la le de priorite.
En sequentiel, cette structure donne de tres bons resultats. En revanche, en parallele, cette combinaison de structures est dicile a gerer. Le fait qu'une operation
soit composee d'un ensemble d'operations sur des representations distinctes, entra^ne des risques d'interblocage. Selon notre modele SDOP, deux processus peuvent posseder chacun deux fen^etres, une sur la le de priorite et une sur la structure de recherche. Or, l'ordre d'acces a chacune d'elles depend de l'operation (pour
l'insertion : structure de recherche puis le de priorite, pour la suppression : le de
priorite puis structure de recherche).
De plus des acces directs etant necessaires dans chacune des structures, le protocole par marquage est impossible a utiliser.
5.2.1.b La Treap
La gestion de la le ouverte, est donc typiquement celle d'une structure de donnees
a double critere. La le ouverte doit orir les operations d'une le de priorite avec
une contrainte d'unicite de clef.
Pour le realiser, nous proposons d'utiliser une version modiee d'une structure
appelee Treap. Nous montrons son ecacite lorsqu'elle est parallelisee en SDOP.
These Paris VI, Janvier 1996
5.2. L'algorithme A*
98
Representation et algorithme des operations sequentielles La representation
de la treap est un arbre binaire, dont chaque nud x stocke un element qui contient
deux informations:
1. une priorite,
2. une clef.
L'arbre est tel que :
1. les clefs respectent l'invariant des arbres binaires de recherche.
2. les priorites respectent l'invariant des tas.
Dans la suite, nous confondons un nud et l'element qu'il contient. Nous notons
respectivement la clef et la priorite d'un nud x, par x:k et x:p.
Il est clair que, quelques soient les valeurs des couples (priorite,clef) un tel arbre
existe. Mais, la disposition des nuds depend de ces valeurs. Si la valeur des couples
fait que les nuds ont le m^eme ordre selon leur priorite et leur clef, l'arbre est reduit
a une simple liste.
L'ordre induit par les priorites et les clefs denissent la longueur des branches
et par suite l'equilibrage de l'arbre. Nous reviendrons sur ce probleme, apres avoir
explique les semantiques et les algorithmes des operations pour implementer la le
ouverte de l'algorithme A*.
Rechercher(clef) cherche un nud x dans la treap tel que x:k =clef.
Algorithme : le nud est recherche comme dans un arbre binaire classique, en
suivant les valeurs de clefs des nuds rencontres.
Inserer(x) ajoute un nud x dans la treap, en s'assurant que x:k est unique.
Soit x0 un nud existant dans la treap tel que x0 :k = x:k. Deux cas sont alors
possibles :
x0:pr < x:pr: x est insere et x0 est supprime,
x0:pr x:k : x n'est pas ajoute.
Algorithme : une premiere phase consiste a rechercher la position ou le nud
x doit ^etre insere, suivant les valeurs de clef et de priorite. Cette premiere
phase s'arr^ete sur un nud y du chemin parcouru, lorsque y est tel que :
y:pr < x:pr. x est insere en tant que pere de y.
Bien que les invariants soient respectes vis-a-vis du chemin deja parcouru,
ils ne le sont pas vis-a-vis du sous-arbre de racine x.
Pour retablir les invariants sur ce sous-arbre, une deuxieme phase consiste
a le separer en deux sous-arbres L et R tels que R (respectivement L)
contient tous les nuds de clef superieure (respectivement inferieure) a
x:k.
Finalement, R (L) est aecte en tant que sous-arbre droit (gauche) de x.
y:k = x:k. x n'est pas insere car il existe deja un nud de m^eme clef, plus
prioritaire que lui.
Supprimer(clef) retire le nud x tel que x:k =clef.
Algorithme : une premiere phase consiste a rechercher le nud x. Puis un
sous-arbre est construit a partir des sous-arbres droit R et gauche L issus de
x. L'algorithme suivi, consiste a fusionner la branche droite de L et la branche
gauche de R, en respectant les invariants.
These Paris VI, Janvier 1996
5.2. L'algorithme A*
99
SupprimerMin() supprime l'element contenu dans la racine de la treap. L'algorithme
de fusion presente precedemment est utilise pour realiser cette operation.
Comme nous l'avons dit, l'equilibrage de l'arbre depend des valeurs des couples
(clef, priorite). Il est donc clair que la complexite des operations en depend aussi.
Aragon et Seidel [ArSe89] ont propose une treap pour implementer une structure de recherche ou la valeur de priorite de chacun des elements est utilisee pour
garder l'arbre equilibre. Ils proposent de choisir aleatoirement la valeur de priorite de chacun des nuds. Ils demontrent que si ces valeurs sont independantes et
equitablement distribuees, la profondeur de l'arbre est O(log n)
En fait, il faut que l'ordre des priorites soient independants de celui des clefs.
La valeur de priorite ne peut ^etre changee. En revanche, l'ordre des clef peut ^etre
modie par une fonction s'appliquant sur la conguration de l'etat.
Les operations paralleles Nous presentons une parallelisation SDOP puis SDODP.
Les algorithmes de chacune des operations parcourant l'arbre dans le m^eme sens,
notre methode de verrouillage partiel presentee au chapitre 3, peut ^etre appliquee.
De, plus le sens de parcours etant racine-feuille, le protocole par marquage peut
aussi y ^etre applique.
Une parallelisation SDODP d'une treap, consiste donc a utiliser plusieurs soustreaps. Si les algorithmes des operations, permettent d'assurer l'unicite des clefs
dans chacune des sous-structures, ils ne le permettent pas sur l'ensemble des sousstructures.
L'algorithme SDODP doit donc tenir compte de cette contrainte supplementaire.
Nous avons choisi la technique consistant a associer un ensemble de valeurs de
clefs particulieres a chaque sous-treap. Ceci revient a la methode de "declustering"
utilisee en Base de donnees ou a une technique de hachage. Une valeur de clef
representant une conguration du probleme traite par l'algorithme A*, la fonction
de hachage depend donc aussi du probleme.
Si la structure de donnees globale est composee de D sous-treaps, et si P processus sont utilises, chaque groupe de DP processus est aecte a une sous-treap.
Les processus suppriment chacun des elements a explorer dans leur sous-treap, et
inserent un element nouvellement genere dans la sous-treap correspondant a sa
valeur de clef.
La fonction de hachage denissant un placement statique des elements, il n'est
pas utile de faire un equilibrage de charge en terme de nombre d'elements.
Toutefois, il peut arriver qu'une sous-treap deviennent vide, ou que les elements
qu'elle contienne, soient bien moins prioritaires que ceux contenus dans les autres
sous-treap. Nous utilisons alors, le m^eme algorithme que pour les les de priorite
dans un B&B. Un blackboard stocke des bons elements.
La structure de liste fermee est en fait dans notre implementation une treap
SDODP. Les operations n'utilisant pas le critere de priorite, il n'y a pas de semantique
de l'operation de suppression a assurer. Le nombre D de sous-treaps, peut donc ^etre
choisi aussi grand que voulu.
5.2.2 Experimentations
Le probleme pris comme exemple, est le jeu du taquin (15-puzzle). Ce jeu est considere comme le probleme test pour l'algorithme A*. Le jeu de taille 15 est une grille
de 4x4 emplacements possibles, contenant quinze tuiles et un emplacement vide (le
trou).
Chaque tuile est numerotee, une permutation des tuiles sur les emplacements,
est appelee conguration. Le but du jeu est d'obtenir, a partir d'une conguration
initiale, une conguration nale, en faisant glisser les tuiles.
These Paris VI, Janvier 1996
5.2. L'algorithme A*
100
L'algorithme A* est utilise pour trouver le minimum de glissements, (appeles
mouvements), pour atteindre la conguration nale.
La clef est la conguration du jeu. La valeur de g est le nombre de mouvement
deja eectues. Nous avons utilise comme fonction h, la somme des distances de
Manhattan pour chacune des tuiles, entre sa position actuelle dans la grille et sa
position nale.
Korf [Korf85] a donne une liste d'instances de problemes. Nous en avons choisi
quatre de tailles dierentes. Le nombre d'etats engendres varie approximativement
de 60 milles (Korf12) a 1,5 million (Korf78). La longueur du chemin de l'etat initial a
un etat nal sont respectivement de 45 (Korf12), 41 (Korf55), 53 (Korf78 et Korf94).
Les temps d'execution sont illustres par les gures 5.11 et 5.12. Les accelerations
correspondantes par la gure 5.13.
Sur les courbes presentant les temps d'execution exprimes en secondes, nous
observons une decroissance rapide en fonction du nombre de processeurs utilises
pour toutes les instances du probleme. Ceci est vrai pour les deux machines utilisees
Ksr1 et Sequent Balance. Cependant, nous n'avons pas pu resoudre des instances
de grande taille sur la Sequent Balance a cause du manque d'espace memoire. Seule
l'instance Korf12 a ete resolue.
Les dierences d'acceleration entre les instances sont dues a la dierences de
taille des instances. L'instance Korf78 necessite une exploration signicativement
plus grande que les autres.
500
450 3
Korf 12 3
400
350
300
250 3
200
3
3
150
3 3
100
1 2 3 4 5 6 7 8
N0mbre de processeurs
Figure 5.11 : Taquin: Resultats en secondes de l'algorithme SDOP sur une Sequent
Balance 8000.
Nous observons une anomalie d'acceleration surlineaire pour l'instance Korf78
lorsque 2 ou 3 processeurs sont employes. Cela est provoque par le fait qu'un etat nal peut ^etre trouve plus rapidement avec plusieurs processeurs qu'avec un seul. Des
etudes detaillees de ce phenomenes peuvent ^etre trouvees dans [Rouc90, Mans92].
Pour le taquin de taille 15, la generation et l'evaluation des etats ls d'un etat
necessitent tres peu de temps par rapport au temps d'acces a la treap malgre la
concurrence. D'autre part, l'arbre de recherche developpe au cours de l'exploration
a un facteur de branchement tres faible, chaque etat n'ayant que trois etats ls
possibles.
Ceci explique pourquoi les accelerations ne sont pas lineaires par rapport au
nombre de processeurs utilises. De meilleures accelerations pourraient ^etre obtenues
si les calculs pour l'exploration d'un etat etaient plus importants, par exemple
plus d'etats ls a engendrer et plus de temps pour calculer leur evaluation. Rao
et al. [RaKR87a] ont mis en evidence experimentalement que les accelerations de
These Paris VI, Janvier 1996
5.2. L'algorithme A*
101
55
50 3
Korf 12 3
45 3
40
35 3
3
30
3
25
3
33
20
0 2 4 6 8 10 12 14 16
Nombre de processeurs
9000 3
8000
Korf 78 3
7000
6000
5000
4000 3
3000 33
333
2000
3
1000
0 2 4 6 8 10 12 14 16
Nombre de processeurs
500
Korf 55 3
450 3
3
400 3
350
3
300
3
33
250
3
200
0 2 4 6 8 10 12 14 16
Nombre de processeurs
1100 3
1000
Korf 94 3
900 3
800
700 3
3
600
3
500
33
3
400
0 2 4 6 8 10 12 14 16
Nombre de processeurs
Figure 5.12 : Taquin: Resultats en secondes de l'algorithme SDOP sur une KSR1.
8
7
6
Korf 12 sur KSR1
Korf 55 sur KSR1
Korf 94 sur KSR1
Korf 78 sur KSR1
Korf 12 sur Sequent
5
4
3
2
4
4
4 2 32
2 3
3
+ +
+
14
3
2 +
2
4
4
2
3
+
3
+
2
4
4
2
3
+
2
3
+
6
8
10
Nombre de processeurs
2
3
+
12
14
16
Figure 5.13 : Taquin: Accelerations sur la KSR1.
ce type de parallelisation centralisee sont meilleures quand l'arbre de recherche
developpe a un facteur de branchement b plus important impliquant plus de calculs
locaux.
These Paris VI, Janvier 1996
5.2. L'algorithme A*
102
Si les temps d'execution, sur l'instance Korf12, sont plus faibles sur la KSR1 que
sur la Sequent Balance (pour un m^eme nombre de processeurs utilises), l'acceleration
est cependant meilleure sur la Sequent Balance. La KSR1 disposant d'une memoire
virtuellement partagee, les co^uts sont plus importants que sur la Sequent Balance
qui dispose d'une memoire physiquement partagee.
These Paris VI, Janvier 1996
103
6
BOB : une bibliotheque
d'aide au developpement
d'applications utilisant la
methode Branch and Bound
Chapitre
L'equipe PNN de Versailles regroupe plusieurs chercheurs travaillant aussi bien en
Optimisation Combinatoire qu'en Algorithmique Parallele, et utilise des machines
d'architecture tres diversiee, station, reseau, multiprocesseurs, memoire partagee
ou distribuee. Il est donc tout naturel qu'une bibliotheque d'aide au developpement
de methodes exactes d'optimisation y ait vu le jour.
La notion precedemment introduite de structure de donnees globale a permis la
realistion d'une telle bibliotheque.
Si BOB est le fruit d'un travail d'equipe (la BobTeam regroupe M. Benachouche,
S. Dowaji, V.D. Cung, T. Mautor, C. Roucairol et moi-m^eme), ma part a concerne
la denition globale de l'architecture de la bibliotheque, l'introduction des structures
de donnees sequentielles et paralleles sur machine a memoire partagee.
BOB a ete presentee a plusieurs conferences :
nationales, ECOLE
CAPA, janvier 95 [AGFR+95], Journees du LIPN, Groupe
Combinatoire AFCET, Seminaires PUC, UFRJ Rio (Bresil),
internationales, INFORMS Institute for OR and Managment Science, New
Orleans Fall 1995, INFORMS Computer and OR, Dallas Janvier 1996.
De plus, l'article presente par l'equipe a ete selectionne comme contribution
nationale de la France pour le congres IFORS, International Federation of OR
Societies a Vancouver en 1996.
6.1 Motivations
Lorsqu'un utilisateur ecrit des algorithmes Branch and Bound pour resoudre des
problemes reels, bien souvent il ecrit plusieurs fois les m^emes composantes : la gestion
de la le de priorite, la gestion de la borne superieure, etc. Il n'a plus le temps de
se consacrer entierement aux parties de l'application proprement-dite (principe de
separation, fonction d'evaluation).
These Paris VI, Janvier 1996
6.1. Motivations
104
De plus son centre d'inter^et etant plus le cote Optimisation Combinatoire, il ne
s'interesse souvent que tres peu aux parties "purement informatiques" de son application comme la le de priorite. Par exemple, il utilisera une le de priorite sous
forme de D-Heap (ou Implicit-Heap) alors que d'autre formes de les de priorite
sont beaucoup plus performantes (comme montre au chapitre 5). Le temps total de
son application s'en ressentira. En sequentiel, une bibliotheque doit donc faciliter
le developpement d'une application de type Branch and Bound tout en
orant des composantes performantes.
De plus, ce m^eme utilisateur disposant d'une application de type Branch and
Bound sequentiel ecace, ne la portera que tres rarement sur une machine parallele.
Alors que l'utilisation d'une telle machine pourrait l'aider a faire reculer la barriere
de l'explosion combinatoire, en lui permettant d'obtenir plus rapidement la solution
optimale de son probleme.
Une autre raison pour construire une bibliotheque, est de pouvoir valider les
parallelisations de Branch and Bound sur des exemples qui ne soient pas de
simples problemes d'"ecole" ou des "jouets". En eet, les chercheurs travaillant
sur la parallelisation de tel ou tel algorithme s'attardent peu sur la resolution du
probleme au sens Optimisation Combinatoire. Ils utilisent souvent un exemple simple d'application de Branch and Bound ne reetant pas forcement un bon contexte
d'execution pour leur parallelisation.
En fournissant aux utilisateurs de Recherche Operationnelle un moyen aise de
developper leur B&B, nous procurons aussi aux chercheurs en parallelisme une base
interessante de B&B performants.
L'ecriture d'une bibliotheque est aussi un bon moyen pour essayer de fournir un
standard d'ecriture de B&B et faciliter par suite les echanges de codes entre
chercheurs. C'est aussi un biais pour rassembler les deux communautes: Optimisation Combinatoire et Algorithmique Parallele.
Notre formulation de la parallelisation d'applications (voir chapitre 1) a ete le
point de depart du developpement de la bibliotheque BOB. La notion de structure
de donnees globale permet donc de proposer une bibliotheque regroupant dierentes
implementations de structures de donnees sequentielles et surtout paralleles.
Du point de vue de l'application, la gestion de l'organisation de la structure
et/ou du parallelisme devient transparente quelques soient :
la le de priorite (D-Heap, Pairing-Heap, Leftist-Heap, Skew-Heap, Funneltree, Funnel-Table, Splay-trees),
les choix de parallelisation (SDES, SDOP, SDDP, SDODP),
l'environnement de programmation (PVM, MPI, LANDA, P4, PM2, Athapascan, Pthread)
et l'architecture de la machine (sequentielle, parallele a memoire distribuee,
partagee).
BOB a ete utilisee dans STRATAGE ME par Lille et Grenoble pour la mise
au point des regulateurs. Des algorithmes pour resoudre des problemes diciles de
l'Optimisation Combinatoire ont ete implantes a Versailles avec BOB (Couverture
minimale, Voyageur de Commerce), a Lille avec la collaboration de Versailles (Affectation Quadratique).
These Paris VI, Janvier 1996
6.2. Principe de fonctionnement de la bibliotheque
105
A notre connaissance, il existe quelques bibliotheques similaires. Pour celles qui
ne sont pas simplement des projets ou en cours de realisation, on peut remarquer
qu'elles se veulent souvent moins generales et n'orent pas un aussi large choix de
fonctionnalites que BOB (structures de donnees, strategies d'equilibrage, de parallelisation,...). Elles ne couvrent pas non plus tous les types de machines, les machines ciblees sont uniquement a memoire distribuee (bibliotheque de l'equipe de
Luling et Monien a Paderborn, Allemagne).
6.2 Principe de fonctionnement de la
bibliotheque
Nous allons tout d'abord decrire notre conception d'un programme B&B, en donnant une vision uniee de l'algorithme sur des machines sequentielles, paralleles
a memoire partagee ou distribuee, ou m^eme sur un reseau de stations de travail.
Puis nous en degagerons les composantes qui seront a la charge du programmeur
de l'application, et celles pouvant ^etre implementees par la bibliotheque BOB en
fonction de l'architecture de la machine.
6.2.1 Programme Branch and Bound
Un programme B&B se compose de trois parties ou procedures principales.
Initialisation: Cette procedure a pour charge l'initialisation de certaines variables
comme celle representant la meilleure solution connue, son co^ut (la borne
inferieure dans une maximisation ou la borne superieure dans une minimisation), et les dierentes donnees propres a l'application (matrices, des vecteurs,
etc).
Parcours: Cette procedure s'occupe du parcours de l'arbre de recherche. Elle inclut la generation (par le principe de separation), et l'evaluation des nuds
ls (sous-problemes).
An de pouvoir choisir entre plusieurs strategies de recherche, nous avons isole
dans cette procedure, une sous-procedure qui s'occupera de la generation et
de l'evaluation des nuds ls d'un seul nud, recu en parametre.
L'exploration d'un ls, est soit dieree (il est insere dans une le de priorite),
soit immediate (appel recursif a cette sous-procedure). De cette maniere, les
strategies de recherche "Meilleur d'abord" et "Profondeur d'abord" pourront
^etre testees pour une m^eme application.
Une strategie mixte, ou des sous-arbres choisis par la strategie meilleur d'abord,
sont explores en profondeur d'abord sur une hauteur donnee, est egalement
possible. La \granularite" de calcul entre deux acces a la le de priorite peut
^etre ainsi reglee.
La procedure "parcours" fait donc appel a des operations sur une le de
priorite stockant les nuds en attente d'exploration.
Cette procedure doit aussi pouvoir acceder a la borne superieure/inferieure,
pour des mises a jour eventuelles lorsqu'une nouvelle solution est trouvee. Elle
doit aussi la lire pour savoir si un sous-probleme doit ^etre explore (condition
d'elagage).
Les composantes de la procedure sont donc les fonctions de generation et
d'evaluation, la le de priorite, et la borne superieure (nous nous placons par
la suite dans le cas d'une minimisation).
These Paris VI, Janvier 1996
6.2. Principe de fonctionnement de la bibliotheque
106
Fin : Cette procedure de terminaison ache la solution trouvee, et diverses mesures
comme le temps d'execution, le nombre de nuds explores, le nombre d'operations
sur la le de priorite, etc.
6.2.2 Le parallelisme
Un B&B peut ^etre parallelise de plusieurs facons, Gendron et Crainic [GeCr95] en
ont propose une classication.
Type 1 : parallelisation de la procedure de parcours, assimilable a la parallelisation "interne" introduite au chapitre 1.
Cette forme de parallelisation porte sur la methode de resolution utilisee (fonction d'evaluation, principe de separation) pour un probleme particulier. Elle
genere un grain n, et est donc trop dependante du probleme a resoudre pour
qu'il en soit propose une bibliotheque generique.
Type 2 : parallelisation de recherche, correspondant a la parallelisation "externe", (chapitre 1).
La notion de structure de donnees globale qu'elle soit complexe ou simple,
permet de proposer une bibliotheque d'aide a la programmation de B&B.
Du point de vue de l'application, la gestion des structures sequentielles ou
paralleles est cachee.
BOB est une bibliotheque pour ce type de parallelisation.
Type 3 : parallelisation du critere de recherche, deux recherches de types
dierents (Meilleur d'abord et Profondeur d'abord) sont eectuees en parallele.
Cette forme de parallelisation, est en fait une composition de deux B&B avec
des strategies dierentes. Si beaucoup de processeurs sont disponibles, deux
parallelisations de type 2 peuvent cooperer pour trouver une solution plus rapidement. Peu de travaux de la litterature concernent de type de parallelisme.
Nous proposons donc une bibliotheque fondee sur la parallelisation de type 2.
Toutes les les de priorite sequentielles, paralleles que nous avons presentees
dans les chapitres precedents, peuvent ^etre implementees dans ce modele.
En plus de la le globale, la bibliotheque doit gerer la terminaison de l'algorithme
parallele ainsi que la coherence de la borne superieure.
6.2.3 Les composantes critiques d'une application
Le modele considere de programme B&B met en avant cinq composantes.
1. La procedure d'initialisation et la procedure de generation/evaluation.
Elles dependent directement de la nature du probleme a traiter. Leur ecriture
est laissee a la charge de l'utilisateur de la bibliotheque.
2. La le de priorite globale. Elle pourra utiliser des algorithmes dierents,
selon l'architecture de la machine parallele, et les choix de l'utilisateur.
3. La ou les sous-les de priorite locales ou partagees ou distribuees.
Elles sont dependantes d'une part du choix de la structure (tas, arbre de
recherche, etc), et d'autre part de la parallelisation choisie (acces concurrents,
acces locaux, operations particulieres, etc).
4. La borne superieure globale. Sa strategie de gestion depend de l'architecture
de la machine, et du choix de la parallelisation.
These Paris VI, Janvier 1996
6.2. Principe de fonctionnement de la bibliotheque
107
5. Les mesures et les statistiques liees au comportement de l'algorithme.
Seules les fonctions de la premiere composante ne peuvent ^etre fournies par la
bibliotheque, car elles dependent du probleme a traiter. Elles doivent donc ^etre
developpees par l'utilisateur, et pourront ^etre codees sans se soucier des problemes
lies au parallelisme.
En revanche, les fonctions des autres composantes ne sont dependantes que
de l'architecture de la machine et des choix de l'utilisateur. Elles n'ont besoin de
conna^tre du probleme que la structure de nuds de l'arbre de recherche (le type
BobNode). Elles peuvent donc ^
etre implementees dans la bibliotheque BOB. Leur
utilisation se fait par l'intermediaire d'appels a des fonctions predenies, rendant
ainsi transparentes les dierentes gestions du parallelisme implementees dans ces
composantes.
FILE DE PRIORITE GLOBALE
PROCESSUS
PROCESSUS
PROCESSUS
...
Bob_GenChild()
Génération
Evaluation
Figure 6.1 : Vue d'un B&B parallele.
La gure 6.1 montre les interactions entre la le de priorite globale, les processus, et les appels recursifs de la procedure de generation/evaluation.
Une autre composante geree par la bibliotheque est la notion de priorite. Elle
peut ^etre soit l'evaluation du sous probleme seule, soit l'evaluation et la profondeur
du nud, soit la potentialite [DoRo95a]. Cette liste n'est pas exhaustive. Un guide
de developpement (actuellement en cours de redaction) contiendra toutes les explications pour denir une nouvelle notion de priorite utilisable dans toutes les
implementations de BOB.
En ce qui concerne la borne superieure,la bibliotheque est capable de gerer des
problemes de minimisation ou de maximisation, selon l'indication de l'utilisateur.
Un des buts de la bibliotheque est de pouvoir fournir plusieurs types de les de
priorite globales et de bornes superieures globales, pour ainsi en tester les performances, et donc isoler celles qui sont les mieux adaptees a une machine particuliere
et a un type de probleme particulier.
La bibliotheque BOB est donc constituee d'une collection de bibliotheques. Chacune de ces bibliotheques prend en compte l'architecture de la machine et le choix
These Paris VI, Janvier 1996
6.3. Structure conceptuelle de la bibliotheque
108
de l'utilisateur. Lors de la compilation de son application, l'utilisateur indique le
modele de machine, ainsi que les options precisant le type de parallelisation.
Nous avons choisi cette maniere de faire pour eviter un co^ut a l'execution d^u
aux choix de parallelisation et augmentation de la taille de l'executable par des
fonctions inutiles.
La bibliotheque prend en compte aussi la gestion de processus, qu'ils soient des
processus au sens UNIX ou des processus legers (threads).
Les parametres d'un executable BOB permettent de specier le nombre de processus, la \granularite" de calcul, et des options d'achage de statistiques (cf. sections 6.5 et 6.6.5).
6.2.3.a La le de priorite globale
Nous developpons ici plus longuement les choix concernant le classement des les
de priorite globales, proposees par BOB.
Nous avons choisi de distinguer, dans un premier temps, les les de priorite
globales par l'architecture de machines (sequentielles, paralleles memoire partagees
et memoire distribuee).
Une troisieme architecture a ete ajoutee recemment. Elle concerne toutes les
parallelisations utilisants les bibliotheques "multi-threadees" comme PM2 et Athapascan.
Pour les deux premieres architectures paralleles, le classement propose est fonction du contexte d'execution supporte par la structures : ferme, synchrone, asynchrone. Le modele de ferme est en fait assimilable aux SDES. Les modeles synchrone
et asynchrone englobent les modeles SDOP, SDDP, SDODP.
6.2.3.b La le de priorite locale ou partagee
Les dierents modeles de le de priorite globale ont tous besoin de les de priorite qui
seront locales (sequentielles) ou partagees (pouvant supporter plusieurs protocoles
de verrouillage partiel). BOB propose un choix de les de priorite locales/partagees
classees par genre :
Tas : D-Heap, Skew-Heap, Pairing-Heap, Leftist-Heap,
Arbres de recherche: Splay-Tree (Semi, Simple-Semi,Single-Semi,Single-SimpleSemi),
Funnels ou Structures a entonnoir: Funnel-Tree, Funnel-Table.
Cette liste non exhaustive, reporte les structures de donnees actuellement disponibles,
mais toute utilisateur peut developper sa propre implementation d'une structure.
Dans le cas de machines paralleles a memoire partagee, la ou les les de priorite
doivent supporter des acces concurrents.
Nous avons deni pour ce cas, trois protocoles d'exclusion mutuelle. Dans le
premier, un processus se reserve un acces exclusif (SDES) a toute la le de priorite
pour chaque operation. Les deux autres sont les protocoles de verrouillage partiel,
(verrous ou marquage denis au chapitre 3). Le choix du protocole est laisse a
l'utilisateur.
6.3 Structure conceptuelle de la bibliotheque
La gure 6.2 presente la structure conceptuelle de BOB. L'utilisateur doit fournir
a BOB quatre fonctions decrivant sa methode de resolution.
These Paris VI, Janvier 1996
6.4. Types et fonctions des applications
109
La denition de ces fonctions est detaillee dans le paragraphe 6.4.1. Toutes les
autres fonctions necessaires a l'algorithme B&B sont gerees par le noyau de la
bibliotheque.
L'utilisateur n'a pas besoin de bien conna^tre les fonctions du noyau, sauf si il
veut enrichir la bibliotheque en les de priorite, en strategies d'equilibrage de charge
et en methodes de parallelisation. Un guide destine aux developpeurs de BOB est
fourni avec la bibliotheque.
Application
Fonctions utilisateur
(Evaluation, Solution initiale, construction des noeuds)
Moniteur
Fonctions utilisateurs BOB
Bob_Init(), Bob_GenChild(),
Bob_End(), Bob_PrintSolution().
Noyau BOB
Opérations
sur la
FP Globale
Bob_GPQIns()
Bob_GPQDel()
Bob_GPQGelG()
Bob_GPQAlloc()
Bob_GPQFree()
Statistiques
−FP
−EC
−Processus
−Solution
Gestion
Lancement
de la
des
Borne Sup
Processus
Bob_PriCreat() Bob_ULBInit()
Bob_ULBGet()
Bob_PriGE()
Bob_ULBUpd()
Bob_PriE()
Bob_ULBSup()
Bob_PriLE()
...
Fonctions
des
Priorités
Figure 6.2 : Structure fonctionnelle de BOB.
Le moniteur a pour but principal de donner des statistiques sur les dierents
objets manipules par une application (les de priorite, charge des processus, nombre d'equilibrages de charge,...). Ces chires permettent a l'utilisateur d'analyser
les dierents parametres de son application (ecacite de la fonction d'evaluation,
critere de branchement,...) et eventuellement d'y apporter des ameliorations.
6.4 Types et fonctions des applications
Les "objets" manipules par les applications sont de deux origines. Les uns sont
denis par l'utilisateur pour son application, les autres appartiennent a la bibliotheque BOB.
6.4.1 Les types et fonctions denis par l'utilisateur
L'utilisateur a le libre choix de la denition de ces objets pour son application, il
doit cependant respecter les noms de ces types et fonctions.
Les types
Ce type doit ^etre une structure denissant un nud de l'arbre de recherche
dependant de l'application. L'utilisateur aura la charge de remplir cette structure avec les variables denissant un element de l'espace de recherche propre
a son application.
BobSolution Ce type doit repr
esenter la solution au probleme.
BobNode
Les fonctions
These Paris VI, Janvier 1996
6.4. Types et fonctions des applications
Initialisation:
110
void Bob Init(BobArgc, BobArgv)
Cette fonction regroupe toutes les initialisations dont a besoin un B&B : la
borne inferieure initiale, la borne superieure initiale, la racine de l'arbre de
recherche, la taille du probleme et la meilleure solution initiale connue.
Les parametres de cette fonction representent les parametres passes a l'executable
(forme classique du C, argc et argv).
La terminaison:
void Bob End()
Cette fonction donne la possibilite a l'utilisateur d'executer en complement
des instructions choisies en fonction de son application a la n de l'execution
du programme.
Achage de la solution:
void Bob PrintSolution(s)
Cette fonction ache la meilleure solution courante (BobSolution *s). Cette
fonction sera executee a chaque demande d'achage des statistiques, et a la
n de l'execution du programme.
Generation des sous problemes (nuds ls):
void Bob GenChild(BobCurrNode, BobDepth, BobExpCt)
L'utilisateur ecrit dans cette fonction la generation via le critere de separation
de son choix et l'evaluation des sous problemes ls du sous probleme courant
BobCurrNode (qui est de type BobNode recu en param
etre). Le parametre
BobDepth repr
esente la profondeur actuelle de l'exploration. Le parametre
BobExpCt pointe sur une structure de type BobTExpCt donnant entre autre la
profondeur de l'exploration (cf. paragraphe 6.4.2).
6.4.2 Les types, variables et fonctions fournis par la
bibliotheque
Ces "objets" denis dans la bibliotheque sont mis a la disposition de l'utilisateur
pour son application sans qu'il ait besoin de les developper.
Les types
Ce type denit la priorite d'un nud. Un utilisateur peut choisir dierentes
notions de priorite pour la recherche meilleur d'abord. La priorite d'un nud
est son evaluation, ou son evaluation et sa profondeur dans l'arbre de recherche.
La notion de "potentialite" est prevue parmi ces choix.
BobTid Ce type repr
esente l'identite d'un processus. Il est dierent selon le type de
machines utilise. La variable associee est BobId.
BobTExpCt Ce type regroupe les informations utiles au contr^
ole de la granularite
d'exploration.
Les variables Plusieurs variables globales, que l'utilisateur doit initialiser dans
la fonction Bob Init, sont oertes par la bibliotheque:
BobRoot : pointeur sur un nud de type BobNode repr
esentant la racine de l'arbre
de recherche. La bibliotheque s'occupera de l'insertion de ce nud.
BobPbSize : taille initiale du probl
eme (optionnelle).
BobTPri
These Paris VI, Janvier 1996
6.5. Moniteur
111
Les fonctions La bibliotheque ore des fonctions de gestion de la borne superieure
et d'insertion dans la/les structure(s) de donnees contenant les nuds a explorer.
1. Fonctions pour la borne superieure et/ou inferieure :
erieure globale.
void Bob ULBInit(BobULB,s) : initialisation de la borne sup
La valeur de la variable BobULB est donnee par l'utilisateur. Ce dernier
doit fournir la variable s contenant la solution initiale.
int Bob ULBGet() : fonction renvoyant la valeur de la borne sup/inf
erieure
globale.
int Bob ULBSup(BobEval) : fonction testant si BobEval est inf/sup
erieure a
la valeur de la borne sup/inferieure globale BobULB.
Elle renvoie
1 si BobULB > BobEval,
0 sinon.
int Bob ULBUpd(BobNewULB,BobNewSol) : fonction testant si la nouvelle solution realisable peut prendre la place de la meilleur solution connue.
Elle renvoie
1 si BobULB a ete modie,
0 sinon.
Cette fonction s'occupe aussi de supprimer les nuds obsoletes de la
structure globale, c'est-a-dire des nuds ayant des evaluations sup/inferieures
strictement a BobULB.
2. Fonction de contr^ole de la granularite de calcul : int Bob ExpCtrl(BobDepth,
BobExpCt)
Teste si la profondeur maximale d'exploration, contenue dans la structure
pointee par BobExpCt, est atteinte pour le processus appelant cette fonction.
Elle renvoie
1 si BobDepth est egal a la profondeur maximum d'exploration,
0 sinon.
Dans le cas de machine parallele, cette fonction teste egalement si le nombre
de nuds dans la structure de donnees globale est susant pour que tous les
processus aient du travail.
3. Fonctions pour la structure de donnees globale:
void Bob GPQIns(BobCurrNode)
orite globale.
: insere le nud courant dans la le de pri-
: retire le nud le plus prioritaire de type BobNode
de la le de priorite globale ou d'une partie de la le de priorite globale
(cas de certaines parallelisations).
BobNode *Bob GPQDel()
La gure 6.3 donne une autre vue des fonctions de la bibliotheque. Les eches
traduisent les relations appelant-appele entre les fonctions.
6.5 Moniteur
La bibliotheque ore un moniteur \temps-reel" donnant des statistiques sur le
comportement de l'application. L'achage de ces statistiques ainsi que celui de la
meilleure solution courante est fait par l'intermediaire de la fonction Bob PrintStat().
These Paris VI, Janvier 1996
6.5. Moniteur
112
Bob/ArchXXX/
Bob/Common/start.c
main()
Bob_Algo()
goprocs.c
Bob_Main()
Bob_GoJob()
ASC SYC FRM
op.c
Bob/PQ/XXX.c
Bob_GPQAlloc()
Bob_PQAlloc()
Bob_GPQFree()
Bob_PQFree()
Bob_GPQIns()
Bob_PQIns()
Bob_Init()
Bob_GPQDel()
Bob_PQDel()
Bob_End()
Bob_GPQDelG()
Bob_PQDelG()
App/app.c
Bob_GenChild()
Fonctions
Utilisateurs
upbd.c
Bob_ULBInit()
Bob_ULBSup()
Bob_ULBUpd()
Bob_ULBGet()
Figure 6.3 : Synoptique des fonctions de BOB.
Les statistiques sont divisees en deux groupes : les statistiques sur l'activite du ou
des processus, et les statistiques sur l'etat des les de priorite.
A la n de l'execution, toutes ces statistiques ainsi que le temps d'execution sont
aches automatiquement.
6.5.1 Activite des processus
Pour chacune des architectures, les statistiques donnent des elements d'information
sur :
le nombre de nuds evalues,
le nombre de nuds supprimes de la le,
le nombre de nuds non inseres
(d'evaluation sup/inferieure a la borne BS/IG),
le nombre de nuds inseres dans la le,
le nombre de nuds supprimes par un DeleteGreater (pour lesquels la borne
BS/IG est devenue inf/superieure a leur evaluation),
l'evaluation du dernier nud supprime.
Mais pour les applications paralleles, il est prevu des statistiques supplementaires
dependantes de la parallelisation choisie. Par exemple, dans le cas des les de priorite
asynchrones sur une architecture distribuee (les de priorite locales avec equilibrage
de charge), les statistiques peuvent renseigner l'utilisateur sur le nombre de nuds
envoyes, recus, supprimes et traites avant de trouver une solution.
These Paris VI, Janvier 1996
6.6. Architecture de la Librairie
113
6.5.2 Etat des les de priorite locales ou partagees
Les statistiques sur les les de priorite locales ou partagees renseignent sur :
le nombre de nuds a un instant donne,
le nombre maximal de nuds,
l'evaluation du dernier nud supprime.
Comme precedemment, dans le cas d'une execution parallele, des informations
supplementaires relatives a la parallelisation sont prevues.
6.6 Architecture de la Librairie
6.6.1 Organisation des repertoires
Les sources composant la bibliotheque se trouvent dans le repertoire Bob. Au m^eme
niveau que Bob se trouvent les repertoires des dierentes applications (Ex : Qap,
TspLittle, TspDicho, TspPoly, Vcp, etc).
BB
QAP
TSP
makefile typedef.h source1.c source2.c ...
Bin
machine1
Obj
machinen
VCP
bb.h Define.h datastruct.h macro.h
Bob
Include
PQ
ArchiSEQ
define.h
ArchiSHARED
define.h mrk_define.h ksr_define.h ...
ArchiDISTRIB
define.h pvm_define.h pvm@ ...
JoSk.c futr.c futb.c Sp.c SiSp.c SiSmSp.c SmSp.c lh.c ph.c
makefile.pq
Common
start.c
makefile.com
ArchSEQ
goproc.c upbd.c op.c makefile.arch
goproc.c makefile.arch
ArchSHARED
ASC
makefile.async makefile.ds makefile.lb
upbd.c FXDop.c MRGop.c ONEop.c
SCY
makefile.async makefile.ds makefile.lb
upbd.c op.c
FRM
makefile.async makefile.ds makefile.lb
upbd.c op.c
goproc.c makefile.arch
ArchDISTRIB
ASC
makefile.asc upbd.c SMPop.c XXXop.c
SCY
FRM
Loadbal
makefile.frm upbd.c op.c
lbs.c
Figure 6.4 : Schema des repertoires.
6.6.2 Le repertoire Bob
Dans Bob, coexistent six repertoires et un makele (makefile.bb).
Bob/Include contient les chiers d'ent^
ete (.h) communs a tous les B&B.
These Paris VI, Janvier 1996
6.6. Architecture de la Librairie
114
contient le chier start.c, incluant les fonctions suivantes :
fonction main(),
fonction d'etude des parametres.
Il contient aussi le makele specique a ce chier.
Bob/PQ contient les chiers sources des les de priorit
e,
Bob/ArchSEQ le source pour une ex
ecution sequentielle.
Bob/ArchSHARED les sources pour des ex
ecutions paralleles a memoire partagee.
Bob/ArchDISTRIB les sources pour des ex
ecutions paralleles a memoire distribuee.
makefile.bb il aiguille la compilation vers l'architecture demand
ee.
Bob/Common
6.6.3 Les repertoires d'architecture: ArchSEQ, ArchSHARED,
ArchDISTRIB
Ces repertoires contiennent les sources gerant la borne superieure (upbd.c), la structure de donnees globale (op.c), ainsi que les sources contenant la gestion eventuelle
des processus en parallele et des statistiques (goproc.c).
Sequentiel : Bob/ArchSEQ Ce catalogue contient les trois chiers cites precedemment et un chier makele makefile.arch.
Parallele : Bob/ArchSHARED, Bob/ArchDISTRIB Les deux repertoires parallele
contiennent chacun, le chier goproc.c, un makele makefile.arch et trois repertoires
correspondant aux modeles de parallelisation:
ASC contient la gestion de la le de priorit
e et de la borne BS/IG en asynchrone.
SYC contient la gestion de la le de priorit
e et de la borne BS/IG en synchrone.
FRM contient la gestion de la le de priorit
e et de la borne BS/IG lorsque la ou les
les de priorite sont detenues par un ou plusieurs serveurs.
Chacun de ces trois repertoires contient un ou plusieurs sources des algorithmes
de gestion des FPGs (op.c) et de BS/IG (upbd.c).
6.6.4 La portabilite de la bibliotheque
BOB doit ^etre portable. La partie sequentielle de BOB ne pose pas de problemes,
dans la mesure ou elle utilise l'environnement standard UNIX.
En parallele, BOB necessite, sur une machine a memoire partagee, l'utilisation
de primitives d'exclusion mutuelle. BOB utilise un jeu de macros C, permettant
de gerer ces primitives. La correspondance entre le jeu de macros et les fonctions
presentes sur la machine parallele se fait par l'intermediaire de chiers de conguration. Actuellement, la bibliotheque est portee sur KSR1 (utilisant la bibliotheque
Pthread) et sur Sequent Balance.
Plusieurs versions de la partie distribuee de BOB ont ete implementees.
L'une repose sur PVM qui appara^t comme un standard de fait pour les machines
paralleles a memoire distribuee et sur les reseaux de stations de travail.
l'autre utilise la bibliotheque de communication propre aux machines paralleles
d'INTEL (PARAGON,IPSC2).
These Paris VI, Janvier 1996
6.6. Architecture de la Librairie
115
Un travail actuellement en cours en collaboration avec M. Benachouche, S.
Dowaji, V.D Cung et S. Poujade, propose de developper une couche de communication orientee B&B. Les communications faite dans une telle application, concernent
les nuds representant un sous probleme de l'application, la notion de charge locale,
et enn la valeur de la borne superieure. Cette sous bibliotheque etant de tres haut
niveau, elle pourra ^etre implementee avec des bibliotheques de passage de messages,
et multi-threadees, sans generer de co^uts supplementaires a l'execution.
Le but nal est de concevoir un noyau d'execution generique d'equilibrage de
charge.
Le concepteur fournit la notion de charge locale, la fonction du critere de declenchement,
et la procedure d'equilibrage de charge, pour chaque region de la hierarchie, qu'il a
denie.
Tschoke, Luling et Monien [Tsch94], ont propose une bibliotheque de ce type.
Mais elle se place dans un cas particulier d'equilibrage de charge. Une seule region
est utilisee, la strategie est synchrone, et centralisee par un processus ma^tre.
6.6.5 La compilation et l'execution
6.6.5.a La compilation
La compilation d'une application est eectuee par l'intermediaire de la commande
make. Comme BOB est compos
ee d'un ensemble de sous bibliotheques distinctes
et/ou dependantes, le processus de compilation dans BOB est en fait une suite
d'appels \recursifs" a la commmande make, chacun des appels s'occupant d'une
\composante" de la bibliotheque.
La commande make lancee par l'utilisateur dans le repertoire application, appelle
une autre commande make dans le repertoire d'architecture choisi ou donne.
Le chier Common/start.c est ensuite compile. Finalement, ce dernier appellera
une autre commande make sur le chier PQ/makefile.pq qui genere l'executable.
Par defaut, un executable sequentiel est engendre. Il est possible de denir un
ensemble d'executables a generer par l'intermediaire de variables d'environnement
passees a la commande make. Nous ne pouvons pas donner toutes les variables
d'environnement correspondantes a tous les choix possibles, nous renvoyons a la
brochure utilisateur. Nous nous limitons a decrire ici les principales variables:
PRTP notion de priorit
e EVAL (evaluation), EVDP (evaluation+profondeur), POTE (potentialite).
PQTP algorithme de les de priorit
e locales ou partagees SKEW, FUNNEL, SPLAY, HEAP,
OTHERS.
Si la le est partagee, le protocole de verrouillage PLTP peut ^etre EXC, LCK,
MRK.
ARTP type d'architecture : SEQ, SHARED ou DISTRIB. Pour une structure de donn
ees
parallele:
MDTP type de m
ethodes employees ASC, SYC, FRM.
DSTP repr
esentation de la structure. Sur machine a memoire partagee, les
choix possibles sont ONE (SDOP), FXD (SDODP avec D xee), et cours
de developpement MRG (SDODP dynamique).
LBTP strat
egie d'equilibrage de charge.
Par exemple, la commande, executee dans le repertoire Qap (probleme de l'aectation
quadratique) sur une KSR1:
make PRTP=EVAL ARTP=SHARED MDTP=ASC DSTP=FXD LBTP=2 PLTP=MRK
PQTP=SKEW
These Paris VI, Janvier 1996
6.7. Le developpement d'une application
116
engendre l'executable correspondant a un B&B parallele resolvant le probleme
d'aectation quadratique sur la KSR1 avec une structure de donnees asynchrone de
type FXD, la strategie d'equilibrage de charge est 2; la le de priorite utilisee est la
Skew-Heap, avec le protocole de verrouillage partiel par marquage.
L'executable est dans le repertoire Qap/Bin/ksr1 et s'appellera EVALASCFXD2MRKskh.
Ce type de nom d'executable bien que complique, a l'avantage de dierencier les
executables selon les choix de l'utilisateur.
6.6.5.b L'execution
Nous denissons les parametres qu'une application BOB peut prendre. Certains
d'entre eux sont directement lies a la gestion interne de BOB, les autres passes a la
fonction Bob Init() sont denis par l'application.
exec [ -p np[:nd] ] [ -v s ] [ -d md[:td] ] ...
denit le nombre de processus et le nombre de structures de donnees
ou le nombre de serveurs (reserve au parallelisme),
-v s d
enit le niveau de statistiques,
-d md[:td] d
enit la granularite de calcul (en nombre de niveaux) et le type
de calcul (chacun des processus peut avoir une granularite dierente calculee
selon une fonction),
... param
etres reserves a l'application.
-p np[:nd]
6.7 Le developpement d'une application
Nous presentons un squelette de programme de B&B utilisant la bibliotheque BOB.
Les chiers cites ici doivent ^etre dans le repertoire de l'application. Cet exemple est
celui donne dans le guide utilisateur.
6.7.1 Le chier d'ent^ete typedef.h
Toutes les denitions de structures et de macros doivent ^etre regroupees dans un
chier d'en-t^ete an que les dierents chiers sources de la bibliotheque puissent
y avoir acces. Nous appelons ce chier typedef.h, mais un autre nom peut ^etre
choisi.
Si le probleme d'optimisation consiste a maximiser une fonction de co^ut, le chier
typedef.h doit contenir la ligne suivante :
#define ORTP MAXIMISATION
Par defaut, la bibliotheque BOB est conguree pour une minimisation.
Le type BobNode doit ^etre deni dans le chier d'ent^ete. Les deux champs obligatoires que doit contenir la structure BobNode sont le champs Pri de type BobTPri,
et le champs BobNdInfo de type BobTNdInfo. Les noms de ces champs ne peuvent
^etre changes car sinon BOB ne les reconna^t pas.
BOB a besoin aussi d'un type appele BobSolution decrivant la solution du
probleme d'optimisation traite.
/*| Structure BobNode pour la simulation d'un Branch and Bound |*/
typedef struct {
BobTNdInfo BobNdInfo; /* Informations sur le noeud (lecture seule) */
int Depth;
/* Profondeur du noeud */
...
/* Informations relatives a l'application */
...
BobTPri Pri;
/* Priorite du noeud */
These Paris VI, Janvier 1996
6.7. Le developpement d'une application
117
} BobNode;
typedef struct {
int Sol[100];
} BobSolution;
6.7.2 Le(s) chier(s) source(s)
Toutes les fonctions sont ici regroupees dans un seul chier source que nous appellons
app.c.
/*|||| Include des chiers d'entetes ||||-*/
#include <stdio.h>
#include <math.h>
#include "../Bob/Include/bb.h"
/*|||||||||||||||||||||*/
void Bob_GenChild(an,Depth,ExpCt)
BobNode *an;
int Depth;
BobTExpCt *ExpCt;
{
BobNode *n;
int Eval,dp;
dp = an->Depth+1;
/* Profondeur des ls */
for (i=0; i<NBFILS ; i++) {
/* Boucle de generation des NBFILS ls */
n = (BobNode *)Bob_NodeAlloc(0); /* Allocation memoire pour le noeud ls */
if ( n==NULL ) {fprintf(stderr,"Erreur memoire\n");return;}
Branch(i,an,n);
Eval = Evaluate(n);
Bob_PRICREAT(n->Pri,Eval,0,dp); /* Creation de la priorite du ls */
Bob_STEXP();
/* Statistique nombre de noeuds evalues */
if ( Bob_ULBSup(n->Pri) ) { /* Test par rapport a la borne superieure */
if ( Bob_ExpCtrl(prof+1,ExpCt) ) { /* Test par rapport a profondeur maximale */
Bob_GenChild(n,prof+1,ExpCt); /* Parcours en profondeur */
Bob_NodeFree(n);
/* Desallocation du noeud ls */
} else
Bob_GPQIns(n);
/* Insertions dans la le globale */
} else {
Bob_STNIS();
/* Statistique nombre de noeud non parcourus */
Bob_NodeFree(n);
/* Desallocation du noeud ls */
}
}
}
/*|||||||||||||||||||||*/
void Bob_Init(n,v)
int n;
char **v;
{
int bs;
int Eval;
BobSolution Sol;
if ( n!=NbParametres ) {
fprintf(stderr,"Erreur de parametre : ... ... ...\n");
exit(1);
}
BobPbSize = TailleProblem();
/* Taille du probleme */
bs = SolutionInitiale(&Sol);
/* Initialisation de la solution initiale */
Bob_ULBInit(bs,&Sol);
/* et de la borne superieure initiale */
BobRoot=(BobNode *)Bob_NodeAlloc(0); /* Allocation memoire pour le noeud racine */
if ( BobRoot==NULL ) {fprintf(stderr,"Erreur memoire\n");return;}
Eval = Evaluate(BobRoot);
Bob_PRICREAT(BobRoot->Pri,Eval,0,0); /* Creation de la priorite du noeud ls */
}
/*|||||||||||||||||||||*/
void Bob_End() {
printf("C'est ni !\n");
}
/*|||||||||||||||||||||*/
void Bob_PrintSolution(s)
BobSolution *s;
{
These Paris VI, Janvier 1996
6.8. Conclusion et perspectives
118
int i;
for (i=0;i<BobPbSize ; i++ ) {
printf("%2d ",s->Sol[i]);
}
printf("\n");
}
6.7.3 Le chier makefile
Le chier makefile dans le repertoire application est le premier des makeles appele
pour construire l'executable. Les variables a denir sont :
OBJAPP contenant tous les objets (.o) de l'application.
INC contenant le chier d'ent^
ete de votre application.
Pour chacun des chiers sources, les commandes liees a sa compilation doivent
faire l'objet de trois lignes. Dans notre cas, le chier makefile est :
LDIR = ../Bob
OBJ = Obj/$(HOSTTYPE)/$(PRTP)
OBJAPP= $(OBJ)app.o
DEBUG =
APPDEBUG = $(DEBUG)
INC = ../../App/typedef.h
DSFLAG = $(ARTP) ARTP=$(ARTP) PRTP=$(PRTP) OBJAPP="$(OBJAPP)" INC=$(INC) DEBUG=$(DEBUG)
all : $(OBJAPP)
make -f $(LDIR)/makele.bb $(DSFLAG)
$(OBJ)app.o : app.c typedef.h
cc -c app.c $(APPDEBUG) -DAPPINC=\"$(INC)\" -DPRTP=$(PRTP)
mv app.o $(OBJ)app.o
6.8 Conclusion et perspectives
Nous avons presente la premiere version d'une bibliotheque d'aide au developpement
d'applications utilisant la methode B&B.
6.8.1 Developpements a venir
L'achage des statistiques est pour l'instant sous forme textuelle (ASCII) et uniquement a la demande de l'utilisateur. Une interface graphique representant l'evolution
de l'activite des processus et de l'etat des dierentes structures de donnees, sous
forme de courbe, serait interessante.
La compilation de l'application, reste une phase dicile a mener a bien. Nous
avons prevu l'ecriture d'un utilitaire permettant de choisir facilement les dierents
parametres de la compilation par une interface graphique.
Bien que la sous-bibliotheque memoire distribuee et equilibrage de charge soit
avancee, elle est encore en etat de developpement.
BOB ne gere actuellement que la strategie de parallelisation de type 2, celle de
type 3 est facilement implementable.
6.8.2 Fusion avec une bibliotheque de metaheuristiques
Un autre travail a venir consiste a fusionner BOB et la bibliotheque LOREST [Dela94]
du laboratoire LIFO d'Orleans. Cette derniere propose un ensemble de fonction
paralleles permettant d'experimenter plusieurs parallelisations des metaheuristiques
(Recuit Simule, Tabou) a partir d'un m^eme programme sequentiel. La bibliotheque
LOREST presente une architecture en couches. Celle-ci permet une implantation
independante de la machine cible et constitue, pour l'essentiel, une machine virtuelle
de communication.
These Paris VI, Janvier 1996
6.8. Conclusion et perspectives
119
Deux implantations de LOREST ont ete nalisees, l'une sur une machine TNODE de Telmat equipee de 16 Transputers et, l'autre, sur un reseau de stations de
travail, au dessus de la bibliotheque de communication Parallel Virtual Machine
(PVM).
hh
ii
Une bibliotheque BOB+LOREST presente deux inter^ets en plus de ceux de
chacune des bibliotheques prises separement.
Un premier inter^et est d'utiliser pour un m^eme probleme, les meta-heuristiques
comme aide a la resolution exacte de probleme par methode B&B. Elles se placeraient comme un calcul de mise a jour de la borne superieure du B&B. Ainsi,
l'espace de recherche explore par le B&B serait reduit.
Le second est d'ameliorer les procedures de recherche locales, par l'utilisation
d'une recherche B&B.
6.8.3 Bibliotheque pour parcours d'espace de recherche
Nous avons presente dans ce chapitre, la version 1.0 de BOB ne traitant que le
modele d'execution de programme B&B. Nous nous sommes restreints a la version
actuellement diusee.
Or, il est evident que BOB a servi de support de tests, pour une grande majorite
des travaux que nous avons presentee dans les chapitres precedents, concernant les
structures pour les algorithmes B&B, mais aussi celle des algorithmes A*.
La version beta 2.0 de BOB est capable d'eectuer une recherche dans un graphe.
La notion de structure de donnees globale inclut la le ouverte et fermee de A*.
La treap a ete ajoutee a l'ensemble des les de priorite sequentielles et paralleles.
Les fonctions de tests sur les clefs des sous problemes utilisees a l'interieur de la
structure BOB, sont fournies par le cote applicatif. L'utilisateur choisit l'espace de
recherche considere par le probleme. Ainsi, il est possible de resoudre le probleme
du taquin par une recherche B&B et par une recherche A*, a partir du m^eme programme source.
Cette version de BOB propose aussi un choix de strategies de recherche, et
de granularite. La recherche peut ^etre faite en une seule phase (B&B, A*), ou en
plusieurs phases iteratives, denissant une recherche IDA*. Il est ainsi possible de
resoudre le taquin, mais aussi le QAP, le TSP, et le VCP par une recherche IDA*.
Dans la version 1.0, la granularite d'exploration etait xe pour toute la duree de
l'execution. Or, plusieurs travaux ont propose d'utiliser une granularite dynamique.
Ainsi la granularite peut ^etre denie comme tres petite au debut pour eectuer
une recherche meilleur d'abord permettant de guider la recherche. Elle augmente
alors lineairement en fonction de la profondeur du sous-probleme dans l'arbre (ou
le graphe) de recherche jusqu'a atteindre une profondeur maximale. Elle peut aussi
decro^tre une fois que la granularite maximale est atteinte.
BOB a ete utilisee dans la cadre du projet STRATAGE ME par Lille et Grenoble
pour la mise au point des regulateurs. Des algorithmes pour resoudre des problemes
diciles de l'Optimisation Combinatoire ont ete implantes a Versailles avec BOB
(Couverture minimale, Voyageur de Commerce), a Lille avec la collaboration de Versailles (Aectation Quadratique). Elle a donc ete portee au-dessus des bibliotheques
multi-threadees PM2 (Lille) pour les machines IBM SP2 et ferme d'ALPHAs. Des
tests et de nouvelles strategies sont en cours sur un Cray T3D (Y. Denneulin).
M. Benachouche l'a egalement testee ainsi sur iPSC2 et Paragon [Bena96].
hh
ii
These Paris VI, Janvier 1996
6.8. Conclusion et perspectives
120
6.8.4 Diusion
La version 1.0 est disponible depuis septembre 95 pour les universitaires sur les
serveurs
WWW (http://www.prism.uvsq.fr/french/parallel/cr/bob fr.html) et
ftp (ftp.prism.uvsq.fr/pub/logiciels/BobX.X.tar.Z) du laboratoire PRiSM, avec deux brochures,
utilisateur et developpeur, et a d'ores et deja ete prise par les universites suivantes
(equipes de Recherche Operationnelle) : Wharton School-Pennsylvanie UniversityUSA, Polytechnique de Mons-Belgique, CRT-Centre de Recherche en TransportMontreal-Canada, Universite de Dauphine et Orsay, PUC Rio.
Ce chapitre et les precedents ne presentent pas tous les tests experimentaux de
toutes les possibilites qui existent actuellement dans les versions 1.0 et 2.0beta de
BOB.
Le but de notre travail de these reside dans les structures de donnees. Le nombre
de possibilites de BOB est maintenant proche de l'"explosion combinatoire" !.
BOB dans le futur peut servir a degager les structures de donnees qui sont
les plus ecace et les mieux adaptees a dierents comportements d'application.
Pour une application donnee, il peut permettre de trouver l'espace de recherche, la
strategie de recherche, la granularite de calcul, la structure de donnees sequentielle,
la methode de parallelisation (SDES, SDOP, SDDP, SDODP) synchrone ou asynchrone, l'equilibrage de charge, l'architecture de la machine, la bibliotheque de passage de messages ou multi-threadee, le protocole de verrouillage. La diculte est
alors que tous ces choix ne peuvent pas ^etre faits independamment des uns des
autres, car ils sont lies. Ils s'inuencent mutuellement.
Nul ne pourra plus denir des choix de parallelisation au juge !
These Paris VI, Janvier 1996
121
7
Conclusion
Chapitre
Les structures de donnees paralleles ont suscite ces dernieres annees de tres nombreux travaux, et restent encore a l'heure actuelle, une voie de recherche qui interesse
directement ou directement bon nombre de chercheurs.
Nous en avons propose un classement fonde sur un modele utilisant la notion
de structure de donnees globale. Si ce classement etait generalement utilise pour les
structures de recherche, il ne l'etait pas du tout pour les les de priorite. Ainsi, il
nous a permis de degager trois grandes familles de structures de donnees paralleles:
accelerees, a execution sequentielle et nalement a capacite parallele.
Cette derniere famille est la plus couramment utilisee, car elle est la seule a
admettre un nombre de processeurs egal a celui des machines qualiees de massivement parallele.
Une structure de donnees au sens objet etant composee d'une representation et
des operations qui peuvent y ^etre eectuees, le parallelisme peut ^etre introduit dans
ces deux composantes.
Trois approches peuvent alors ^etre denies pour les structure de donnees a capacite parallele: structures de donnees paralleles a donnees paralleles, a operation
paralleles et nalement a donnees et operations paralleles.
Ce classement nous a permis de mettre en valeur les performances de chacune des
approches en terme de capacite, de co^uts de gestion, et de complexite des operations
supportees.
Nous avons ensuite propose des methodes et des algorithmes paralleles dans chacune de ces trois approches, bien adaptes aux les de priorite.
Le probleme majeur des les de priorites a donnees parallele etant l'equilibrage
de charge et le respect de la semantique de l'operation de suppression, nous avons
propose dans le chapitre 2, une methode appelee fusion&recopie resolvant ces deux
problemes. Cette methode illustre les moyens qu'il faut mettre en uvre et les co^uts
entra^nes pour resoudre parfaitement ces problemes.
Puis, nous avons discute de l'inuence de notre formulation du probleme pour les
machines a memoire distribuee. Nous avons fait appara^tre deux notions de priorite,
une dependante de la charge de travail, utilisees pour l'equilibrage de charge, et
l'autre denie par l'application.
Nous avons egalement contribue a l'etude de l'equilibrage de charge pour les
applications irregulieres dans le cadre du projet STRATAGE ME.
These Paris VI, Janvier 1996
7 : Conclusion
122
Au chapitre 3, nous proposons une methode, appelee verrouillage partiel, permettant la realisation concurrente d'operations sur une representation de structure
de donnees. Le co^ut supplementaire d'execution etant celui des appels aux primitives d'exclusion mutuelle, nous avons demontre que dans certains cas, toutes les
primitives d'exclusion mutuelle interne a l'arbre, peuvent ^etre remplacees par de
simples mecanismes de marquage.
Nous avons ensuite etendu la methode aux machines a memoire distribuee.
Cette extension fondee sur des fonctionnements dierents de simulation de memoire
partagee, a mis en evidence l'importance des co^uts d'acces a une memoire virtuellement partagee. Elle nous a permis egalement de montrer comment toutes les structures de donnees de ce type presentees dans la litterature se dierenciaient. Elle ont
pu ^etre ainsi comparees suivant le placement de la structure realise.
Les approches a donnees et a operations paralleles, n'etant pas incompatibles,
nous avons presentes au chapitre 4, les limitations, co^uts, et capacites des les de priorite de ce type. Tous ces parametres ont ete discutes en fonction du comportement
de l'application et des parametres propres a la machine. Nous avons propose de plus
deux structures SDODP, la premiere maintient un nombre de sous-structures xe,
la seconde gerent un nombre de sous-structures variable selon le nombre d'elements
stockes.
Les structures de donnees sequentielles et paralleles ne peuvent ^etre testees sans
un contexte d'execution, sans une application orant dierents comportements.
Nous proposons donc au chapitre 5 des tests experimentaux de structures de donnees
sequentielles et paralleles dans le contexte de la methode Branch and Bound et de
l'algorithme A*. Tous deux sont des applications dites irregulieres.
En ce qui concerne l'algorithme de Branch and Bound, notre etude des les
de priorite est donne pour une simulation de resolution de probleme puis pour un
probleme reel : l'Aectation Quadratique.
Dierentes les de priorite sequentielles, ainsi que plusieurs d'entre elles parallelisees selon les trois approches ont ete testees pour ces applications, mettant
ainsi en valeur leur inter^et et performances respectives.
En ce qui concerne l'algorithme A*, nous avons propose une version modiee de
la treap comme structure de donnees a operations paralleles, pour implementer la
liste ouverte denie par l'algorithme. Nous avons donnee des experimentations de
cette structure selon l'approche parallelisation SDOP sur le probleme du taquin.
Tous ces travaux ont conduit a la specication et a l'ecriture de la bibliotheque
BOB. Nous avons donne ses fondements, son fonctionnement et decrit nalement
les possibilites que son modele ore, ou qu'il orira dans un proche avenir.
Perspectives
Nous avons deja largement developpe au chapitre 6 les divers enrichissements dont
pourrait proter BOB : augmentation des fonctionnalites de la bibliotheque, tests
sur de nombreuses applications.
Une autre perspective provient de l'emergence des environnements multi-threades.
Ils representent des plates-formes souples et ecaces dans notre contexte. Leur mode
de communication les rend facile a programmer et proche du modele a memoire
These Paris VI, Janvier 1996
7 : Conclusion
123
partagee. Tester nos parallelisations dans ce style d'environnement dans BOB est
une de nos perspectives.
Cette these est une premiere etape, contribuant a la comparaison des performances de plusieurs structures de donnees paralleles, theoriquement et experimentalement
ou par le biais de la fourniture d'une bibliotheque.
These Paris VI, Janvier 1996
124
A
Des structures de donnees
sequentielles
Annexe
Nous presentons dans cette annexe un certain nombre de structures de donnees
sequentielles. Certaines d'entre elles sont reprises lors des presentations des dierentes
approches de parallelisation presentees dans cette these.
Le but n'est pas de presenter toutes les SD sequentielles existantes, car ce travail
representerait un livre complet. Nous voulons donner un apercu de la litterature.
Nous detaillons plus celles qui ont donne lieu (ou pour lesquelles nous proposons)
une parallelisation.
Notre description des structures de donnees est volontairement "oriente objet".
Nous assimilons une structure de donnees particuliere a un objet dont un attribut
est la representation en memoire (tableau, liste, arbre binaire ou naire) de la structure, et les methodes sont les operations qui peuvent ^etre eectuees sur l'attribut,
c'est-a-dire la representation.
Nous abordons tout d'abord quelques structures de recherche, puis detaillons
plusieurs les de priorite.
Notations
E lement Le but d'une structure de donnees est de stocker un ensemble d'information,
de donnees, de m^eme type. Cette information de base est appelee element.
Nud la brique de base de la representation d'une structure de donnees est appelee nud. Selon la structure, cette entite contient un ou plusieurs elements.
Pointeurs Lorsque la structure est dite dynamique, des liens modiables associent un ou plusieurs nuds. Ces liens entre les nuds sont appeles pointeurs. Un nud stocke donc en plus de l'information (element) les pointeurs
permettant d'eectuer le parcours de la representation.
Indice Losrque la structure est dite statique, sa representation est xee au depart.
Elle est g'eneralement implementee par un tableau de nuds. Un nud est
directement adresse par un indice. et le parcours de la representation est
eectue par calculs d'indices.
n Le nombre d'elements stockes dans une structure est note n.
These Paris VI, Janvier 1996
A.1. Les structures de recherche
125
A.1 Les structures de recherche
Les structures de recherche (SR) stockent un ensemble d'elements composes d'une
clef et d'une information.
Les operations de base portant sur la clef sont :
1. la recherche d'un element de clef xee,
2. l'insertion d'un element,
3. la suppression d'un element.
D'autres operations peuvent ^etre envisagees.
1. la recherche des voisins d'un element de clef donnee,
2. la modication d'une clef.
Un classement peut ^etre donne selon les representations utilisees.
A.1.1 Les listes
Les listes simplement cha^nees ou doublement cha^nees sont les premieres structures
de donnees dynamique enseignees dans le cursus d'un etudiant en Informatique.
Nous ne nous etendons pas sur ces structures; des descriptions detaillees peuvent
^etre trouvees dans [Knut73, AhHU74].
En revanche, une liste plus originale a ete propose par Pugh [Pugh90]. Elle est
appelee Skip-List.
L'originalite des Skip-List reside dans le cha^nage des nuds. Un nud ne contient plus seulement les pointeurs sur son predecesseur et son successeur, mais aussi
sur des nuds plus lointains .
Cette nouvelle forme de representation de liste, permet de faire des sauts dans
la liste, accelerant ainsi le parcours de la structure.
Le probleme est de savoir quels nuds vont contenir le ou les pointeurs de sauts.
Pugh propose d'utiliser une valeur aleatoire qui represente le nombre de pointeurs
de saut pour chaque element insere. Il demontre que la complexite en moyenne des
operations d'insertion et de suppression est de O(log n).
hh
ii
Munro, Papadakis et Sedgewick [MuPS92] ont quant a eux repris la representation
des Skip-List et ont propose des algorithmes deterministes. Leur approche consiste
a faire l'analogie des Skip-List avec les B-arbres (voir paragraphe A.1.3).
A.1.2 Les arbres binaires
Les nuds d'un arbre binaire contiennent un element (une clef) et deux pointeurs :
un sur le nud ls droit et un sur le nud ls gauche. Les valeurs des clefs contenues
dans les deux ls doivent respecter l'invariant des arbres binaires de recherche :
Denition 18 Pour tout nud x de clef i, les nuds du sous-arbre droit (resp:gauche)
de x ont des clefs superieures (resp:inferieures) a i.
Bien qu'utilisant toutes, la m^eme representation, les structures de donnees presentees
ci-dessous dierent par l'algorithme permettant de garder l'arbre equilibre.
Generalement, l'operation de base utilise des rotations. Pour un nud x, une
rotation gauche (resp: droite) permet de reduire la taille du sous-arbre droit (resp:
gauche) de x et d'augmenter la taille du sous-arbre gauche (resp: droit) de x.
Il existe beaucoup de structures de recherche representees par des arbres binaires.
Nous nous limitons a la description du Splay-Tree et de ses variantes, et l'arbre de
recherche a priorite. Il existe d'autres structures de recherche representees par des
arbres binaires, comme l'arbre AVL, le Red-Black-Tree [GuSe78].
These Paris VI, Janvier 1996
A.1. Les structures de recherche
126
A.1.2.a Semi-Splay-Tree
Le Splay-Tree est un arbre binaire de recherche cree par Sleator et Tarjan [SlTa83].
Il est la version auto-ajustable des arbres Red-Black.
L'operation de base de cette structure est appelee le Splay. Le Splay integre dans
le parcours de l'arbre, une heuristique permettant d'equilibre l'arbre. Il consiste lors
de la recherche d'un element de clef i, a construire deux sous-arbres R et L ou R
(resp: L) contient les clefs superieures (resp: inferieures) a i.
Trois types de rotations : le ZIG, le ZIG-ZAG et le ZIG-ZIG sont utilises pour
construire R et L. La gure A.1 montre ces trois rotations.
x
y
L
R
A
L
R
y
(a)
B
A
x
B
x
z
L
R
A
L
R
y
(b)
C
y
z
B
A
x
B
x
C
z
L
R
A
L
R
y
(c)
C
y
z
A
x
B
A
C
Figure A.1 : Les dierentes rotations (a) ZIG, (b) ZIG-ZIG, (c) ZIG-ZAG. Les cas
symetriques ont ete omis.
x
x
L
R
A
L
R
B
A
B
Figure A.2 : La construction nale de l'arbre dans l'operation de Splay. Le nud x
contient la valeur recherchee.
La gure A.2 montre l'assemblage nal de l'arbre, lorsque le nud cherche x
a ete trouve. Nous pouvons remarquer que dans l'algorithme de Splay, l'element
cherche devient la racine de l'arbre. La complexite amortie de cette operation est
These Paris VI, Janvier 1996
A.1. Les structures de recherche
127
O(log n).
Plusieurs versions de l'algorithme de Splay existent. Parmi celles-ci, la version
appelee Semi-Splay est donnee par Tarjan comme etant une des meilleures.
Le Semi-Splay utilise une nouvelle version de la rotation ZIG-ZIG, qui contrairement a celle du Splay, reconstruit partiellement l'arbre.
T
T
Top
y
x
L
R
y
(b)
C
L
z
A
R
Top
B
x
z
B
C
A
Figure A.3 : ZIG-ZIG modie du Semi-Splay. Le cas symetrique est omis.
Comme le montre la gure A.3, la rotation accroche au nud Top de l'arbre
partiel T, un arbre construit a partir de R, L, x, et y. Puis, le pointeur sur le
nouveau nud Top est mis a jour.
Lors d'une operation de Semi-Splay, l'element concerne ne devient pas forcement
la racine de l'arbre.
L'algorithme de Semi-Splay etant assez dicile a implementer, Tarjan propose
une simplication qui ne change pas la complexite de l'algorithme. Elle consiste a
remplacer la rotation ZIG-ZAG par deux rotations ZIG. Le nouvel algorithme est
appele Simple-Semi-Splay.
A.1.2.b Les arbres binaire de recherche a priorite
L' arbre cartesien ou priority search tree ou treap1 est un arbre binaire, ou
chaque nud a une priorite associee, en plus de la clef.
L'arbre est tel que :
1. les clefs respectent l'invariant des arbres binaires de recherche,
2. les priorites respectent l'invariant des tas.
La forme de l'arbre depend donc de l'association (clef, priorite). Si l'association
(clef, priorite) denit un ordre des clefs egal ou inverse vis a vis de l'ordre des
priorites. l'arbre est une simple liste.
hh
1
ii
hh
ii
hh
ii
contraction de Tree et Heap
These Paris VI, Janvier 1996
A.1. Les structures de recherche
128
Il est demontre que quelques soient les valeurs des clefs et des priorites, un arbre
de ce type peut ^etre construit. De plus, s'il n'exite pas deux valeurs de clefs ou de
priorites egales, l'arbre est unique.
Vuillemin [FrVV78] a utilise cette representation pour implementer une le de
priorite appelee Pagodas.
McCreight [Crei85] a propose une structure de ce type, pour implementer une
structure de recherche multidimensionnelle.
Aragon et Seidel [ArSe89] ont propose une structure de recherche ou la valeur de
priorite de chacun des elements est choisie aleatoirement. Ils demontrent que si les
priorites sont independantes et equitablement distribuees, la profondeur de l'arbre
est O(log n)
Nous decrivons les operations de cette derniere structure.
20 3
5 5
2 10
1 20 4 15
3 20
25 10
10 10
6 20 15 25
7 25
(a)
7 2
5 5
2 10
1 20 4 15
3 20
23 17
24 20
30 15
32 17
20 3
6 20
10 10
15 25
(b)
25 10
23 17 30 15
24 20 32 17
Figure A.4 : (a)!(b) Insertion (7,2)
L'operation de recherche de la treap est la m^eme que pour un arbre binaire
classique tel l'arbre AVL. Elle consiste a parcourir l'arbre selon les valeurs de clefs
rencontrees.
Quant aux operations de suppression et insertion, elles utilisent le m^eme style
de schema que les Splay-Trees.
L'operation d'insertion de l'element x, de clef x:k et de priorite x:p, commence
par rechercher la position ou x devra ^etre insere en suivant le chemin deni par les
clefs des nuds rencontres. Elle s'arr^ete des qu'un nud y du chemin a une priorite
inferieure a x:p. Le nud x est insere a cette position, en tant que pere de y.
Nous pouvons noter que x respecte les deux invariants vis-a-vis du chemin deja
parcouru. En revanche, pour que les invariants soient respectes sur l'ensemble de la
structure, le sous-arbre de racine y doit ^etre modie. En fait, il sut de construire
deux sous-arbres L et R tels que L (resp : R) contienne les elements de clef inferieure
(resp : superieure) a x:k. Notons que L et R doivent ^etre construits en respectant
l'invariant des tas. L'arbre nal est obtenu en aectant L (resp : R) comme sousarbre gauche (resp : droit) de x.
La suppression d'un element de clef k procede comme suit : l'element x tel que
x:k = k est recherche. Puis, un sous arbre est construit a partir des sous-arbres
These Paris VI, Janvier 1996
A.1. Les structures de recherche
129
gauche L et droit R de x. Brievement, il est obtenu en fusionnant la branche gauche
de R et la branche droite de L, de sorte que les elements de la branche obtenue
respectent l'invariant des priorites.
Nous revenons sur en detail sur cette structure dans le paragraphe 5.2.
A.1.3 Les arbres n-aires
Il existe plusieurs structures de recherche representees par des arbres n-aire. Nous
pouvons citer le B-arbre, le B+arbre. Le 2-3-4 arbre est en fait un cas particulier de
B-arbre. Ces stuctures dierent par les proprietes de leur representations. Plusieurs
versions des algorithmes des operations de B-arbres existent.
La description des dierents algorithmes de B-arbres que nous faisons ici, constitue un resume du chapitre les concernant, dans le livre Introduction to Algorithms de Cormen, Leiserson et Rivest [CoLR89].
hh
ii
A.1.3.a Representation d'un B-arbre et de ses derives
Les proprietes d'un B-arbre sont les suivantes :
1. Chaque nud x contient les champs suivants :
x:n, le nombre de clefs actuellement stockees dans x,
les x:n clefs stockees dans l'ordre croissant,
x:k[1] x:k[2] ::: x:k[x:n],
un booleen x:leaf qui est vrai si le nud x est une feuille et faux si x
est un nud interne,
2. si x est un nud interne, il contient aussi x:n+1 pointeurs, x:c[1]; x:c[2]; :::; x:c[x:n+
1].
3. les clefs x:k[i] et x:k[i + 1] denissent l'intervalle des clefs contenues dans le
sous-arbre pointe par x:c[i].
4. toutes les feuilles sont a la m^eme profondeur.
5. un nombre minimal et un nombre maximal de clefs qu'un nud peut contenir,
sont calcules a partir du degre minimal b.
tout nud (sauf la racine) a au moins b ? 1 clefs. Les nuds internes ont
donc au moins b pointeurs. Si l'arbre est non-vide la racine a au moins
une clef.
tout nud contient au plus 2b ? 1 clefs. Les nuds internes ont donc
au plus 2b ls. Un nud x est dit plein si x contient exactement 2b ? 1
clefs.
Un arbre 2-3-4 est un B-arbre avec b egal a 2. Le B-arbre et le B+arbre sont
speciques a la gestion des tables d'index en Base de Donnees. Leur inter^et est
d'optimiser le nombre d'ecritures et de lectures sur disque, en considerant que la
taille d'un nud de B-arbre est la taille d'un bloc sur disque. Le degre minimal b
caracteristique de la structure, est donc calcule a partir de la taille d'un bloc sur
disque et de la taille d'une clef.
La representation du B+arbre stocke tous les elements dans les feuilles. Ces
dernieres etant cha^nees, le parcours de tous les elements est eectuee dans une liste
de nuds. Le prix a payer est une redondance des clefs dans l'arbre.
These Paris VI, Janvier 1996
A.1. Les structures de recherche
130
A.1.3.b Les operations
Rechercher un element de clef k consiste a parcourir les nuds en suivant l'ordre
des clefs. A partir d'un nud pere x, le pointeur x:c[i] sur le nud ls est trouve
par une recherche sur l'ensemble des clefs x:k. Cette recherche peut ^etre sequentielle
ou dichotomique.
L'insertion de la clef k consiste a rechercher la position de k dans le nud feuille
x, puis de l'inserer. L'insertion dans x n'est pas toujours possible, car x peut ^etre
deja plein. Dans ce cas, plusieurs algorithmes sont possibles. Nous en citons deux.
1. Operation de separation (split) systematique: la feuille x est separee en deux.
Un deuxieme nud feuille x0 est cree puis les clefs de x plus k sont reparties
sur x et x0. Le nud x contenant 2b ? 1 clefs, x et x0 contiennent maintenant
chacune b clefs.
L'operation de separation a un eet de bord sur les nuds peres. Une nouvelle
feuille x0 etant creee, il faut inserer la clef x0 :k[1] et le pointeur sur x a la bonne
place i dans le nud y pere de x.
Si y n'est pas plein, l'insertion est simple. Dans le cas contraire, l'algorithme
de separation est eectue sur y.
Si tous les nuds du chemin, sont pleins, cela conduit a separer la racine r
de l'arbre. Une nouvelle racine est donc creee pour recevoir les pointeurs sur
l'ancien r et le nud cree par la separation de r, r0 .
2. Operation de repartition : plut^ot que d'eectuer des separations systematiques,
une autre approche consiste a repartir les clefs de x sur ces voisins. Soient les
nuds xd et xg les freres respectivement gauche et droit de x. Si xd ou xg ne
sont pas pleins, certaines des clefs contenus dans x peuvent ^etre recopier dans
xd ou xg . Ceci permet de liberer de la place dans x. Dans le cas ou xd et xg
sont aussi pleins, l'operation de separation est eectuee sur x.
La suppression d'un element de clef k se decompose en deux phases comme pour
l'insertion.
Une premiere phase recherche l'element de clef k. Si un tel element existe, il est
supprime du nud x ou il se trouve.
La phase suivante consiste a restructurer l'arbre si x:n < b ? 1. Des operations
inverses a celle de l'insertion sont utilisees dans ce cas : l'operation de repartition
entre x et l'un de ses freres et l'operation de fusion (join) de x avec un de ses freres.
De m^eme que pour l'operation d'insertion, si tous les nuds y du chemin de la
racine r a x sont tels que y:n = b ? 1 et si r:n = 2, la suppression de l'element de
clef k dans x conduit a eectuer l'operation de fusion sur tous les nuds du chemin.
La racine r doit donc ^etre supprimee. Le nud ls de r devient la nouvelle racine
de l'arbre.
Il est clair que les algorithmes d'insertion et de suppression sont recursifs, an
de faciliter la gestion des deux phases (recherche, restructuration).
Plusieurs autres algorithmes ont ete proposes. Ils proposent d'eectuer la separation
ou la fusion des nuds a priori. Ceci permet de confondre les deux phases en une
seulle. Certes, cette facon de faire n'optimise pas la place occupee par la structure
vis-a-vis du nombre de clefs stockees. Mais d'une part la complexite est reduite d'une
constante et d'autre part, la gestion des acces concurrents s'en trouve facilitee (voir
chapitre 1).
These Paris VI, Janvier 1996
A.2. Les les de priorite
131
A.2 Les les de priorite
Une le de priorite (FP) est une structure de donnees stockant un ensemble d'elements
selon leur priorite. Les operations de base sont :
1. insertion d'un element de priorite quelconque,
2. suppression de l'element ayant la plus forte priorite.
Certaines applications necessitent d'autre operations comme:
1. modication de la priorite d'un element,
2. suppression de tous les elements de priorite inferieure a une valeur,
3. obtenir la plus forte priorite (sans suppression).
Nous presentons les dierentes FP en les classant selon leur representation.
Notations: Un element associe a un nud x est appele x:e.
Nous employons les signes <, > pour comparer la priorite des elements. Soient
les elements e1 et e2. Si e1 < e2 (respectivement e1 > e2), l'element e1 est moins
(respectivement plus) prioritaire que l'element e2.
A.2.1 Les tas
Le tas est une structure qui au depart a ete utilisee pour implementer un tri, appele
le Heapsort [Will64, Knut73, AhHU74].
Denition 19 Un tas est un arbre ou le contenu de chaque nud x respecte l'invariant
suivant des tas : pour chaque nud y ls de x
x:e y:e:
Comme dans tous les arbres, lorsqu'un element est rajoute ou supprime, il faut
assurer que l'arbre est "bien" equilibre.
Nous pouvons classer les structures representees par des tas dans deux categories :
les statiques et les dynamiques. Elles sont aussi appelees respectivement structures
a information externe et a information interne.
Un tas a information externe a une structure xe. Lorqu'une operation doit
inserer ou supprimer un element, l'invariant est respecte, en changeant la localisation
des elements dans les nuds. L'arbre est garde equilibre en choisissant de facon
appropriee le nud feuille supprime ou ajoute.
A notre connaissance, seul le d-heap est a information externe, toutes les autres
les de priorite representees par un tas sont a information interne.
Les tas a information interne ont une representation modiable. Un element est
alors associe a un et un seul nud. Lors d'une operation d'insertion ou de suppression, l'invariant et l'equilibre de l'arbre sont respectes par un jeu de pointeurs.
Dans tous les cas, les operations sur chacun de ces tas utilisent une operation
elementaire (oe). Nous presentons les dierents algorithmes des operations en insistant sur son oe.
Pour certaines FP, nous donnons une gure qui presente trois etats de la structure dans le m^eme contexte d'execution.
(a)!(b) (suppression), (b)!(c) (insertion de 39)
Dans ces exemples, les valeurs les plus petites sont considerees comme les plus
prioritaires.
These Paris VI, Janvier 1996
A.2. Les les de priorite
132
A.2.1.a Le d-heap
Le d-heap est une structure representee par un tas ou chaque nud a d ls. Elle est
aussi appelee Implicit-heap dans le cas ou d est egal a 2.
Sa representation est habituellement un tableau note T. Un nud d'indice i et
l'element associe sont notes respectivement T[i] et T[i]:e.
L'indice du pere d'un nud T[i] est di=de, d etant le nombre de ls. Les indices
des ls d'un nud T[i] sont (i ? 1) d+2; (i ? 1) d+3; :: :Min(i d+1; n). L'indice
de la racine est 1.
L'Insertion L'arbre doit ^etre a tout moment equilibre, pour assurer une complexite des operations en O(log n). L'insertion consiste donc a occuper le premier
nud vide, c'est-a-dire le nud T[n + 1]. Deux versions de l'algorithme d'insertion
existent.
Version ascendante : Lors d'une insertion d'un element e, e est place dans le
nud T[n+1]. Pour respecter l'invariant, l'algorithme suit le chemin du nud
T[n + 1] jusqu'a la racine (T[1]). L'algorithme est le suivant:
i est initialise a n + 1.
Tant que i est superieur a 0, l'oe suivante est executee: si T[di=de]:e < T[i]:e,
les elements T[di=de]:e et T[i]:e sont echanges.
Finalement n est incremente de 1.
Version descendante : L'algorithme d'insertion d'un element e consiste donc a
suivre ce chemin de T[1] jusqu'au nud T[n + 1].
Tant que i est inferieur a 0, l'oe est : si e > T[i]:e, e est echange avec T[i]:e.
Finalement, e est place dans T[n + 1] et n est incremente de 1.
La Suppression L'element a retourner est celui place dans la racine. Toujours
pour assurer une complexite en O(log n), l'arbre doit ^etre garde exactement equilibre.
Pour ce faire, l'element e place dans le nud T[n], est place dans la racine. Puis n
est decremente de 1.
Il est donc obligatoire maintenant de proceder a la restructuration du tas an
qu'il respecte l'invariant.
Cette phase est eectuee par un parcours d'une branche de l'arbre, de la racine
vers une feuille.
Tant que i est inferieur a n, l'oe est : j est l'indice du ls de T[i] contenant
l'element de plus forte priorite, Si T[j]:e > T[i]:e, T[j]:e et T[i]:e sont echanges.
Le parcours continue avec le nud T[j], c'est a dire que la prochaine oe est
executee avec i = j.
Le pseudo-code suivant presente les operations d'insertion (version descendante)
et de suppression d'un d-heap avec d egal a deux.
procedure Insoe(i,e)
begin
if ( T[i].e<e ) then
T[i].e$e
endif
end Insoe
procedure Insertion(e,T)
begin
NbElem(T)=NbElem(T)+1
i=0
while i<NbElem(T) do
These Paris VI, Janvier 1996
A.2. Les les de priorite
endo
end insert
133
Insoe(i,e)
i= CalculChemin(i,NbElem(T))
function Deloe(i)
begin
if ( T[2i].e<T[2i+1].e ) then
Next=2i+1
else
Next=2i
endif
if ( T[i].e<T[Next].e ) then
T[i].e$T[Next].e
endif
return Next
end Deloe
function Suppression (T)
begin
if ( T[1]==null ) then
return null
endif
e=T[1]
NbElem(T)=NbElem(T)-1
T[1]=T[NbElem(T)]
T[NbElem(T)+1]=null
return(e)
i=0
while (i<NbElem(T)) do
i = Deloe(i)
endo
end Suppression
Ameliorations Plusieurs ameloirations ont ete proposees an de reduire la complexite des operations [GoMu86, Carl91, CaCh92].
Dans l'operation d'insertion, le chemin a emprunter est connu a priori. L'algorithme
descendant ou ascendant peut donc ^etre choisi en fonction de la valeur de priorite
de l'element milieu du chemin. Ce choix permet de reduire la longueur du chemin
parcouru.
Une autre amelioration consiste a rechercher la position de l'element a inserer, en
eectuant une recherche dichotomique sur le chemin. Dans les deux cas, le nombre
de decalages a eectuer pour inserer un element reste inchange.
L'operation de suppression necessite deux comparaisons en chacun des nuds
du parcours : une pour trouver le ls le plus prioritaire, et l'autre pour tester la
priorite du ls selectionne avec celle du nud courant.
Une amelioration consiste a construire dans une premiere etape le chemin que
doit emprunter une suppression. Cette construction est eectuee avec log n comparaisons. Le chemin etant maintenant connu, les m^eme ameliorations que pour
l'operation d'insertion peuvent ^etre introduites.
A.2.1.b Leftist-heap
La representation du Leftist-heap, (Crane [Cran72]), est un tas binaire. Chaque
nud contient :
These Paris VI, Janvier 1996
A.2. Les les de priorite
134
30
33
31
36
39
33
37
32
36
(a)
31
33
32
36
33
(b)
31
33
32
36
39
35
36
37
39
35
33
37
35
36
39
(c)
Figure A.5 : D-Heap 2 Fils
36
32
33
36
32
33
36
32
33
35
35
35
39
39
39
30
33
37
(a)
31
33
(b)
31
33
37
(c)
31
36
36
37
36
39
Figure A.6 : D-Heap 3 Fils
These Paris VI, Janvier 1996
A.2. Les les de priorite
135
30
33
36 35 37 36
33
39
33
33
36 35 37 36
33
36 35 37 36
31
32
39
32
39
32
(a)
31
(b)
31
33
39
(c)
Figure A.7 : D-Heap 4 Fils
These Paris VI, Janvier 1996
A.2. Les les de priorite
136
un element et sa priorite,
les pointeurs sur le ls droit et gauche,
une valeur representant la dierence de hauteur entre le sous-arbre droit et le
sous-arbre gauche.
L'operation de base du Leftist-heap est la fusion (Melding)2. Elle consiste a
reunir deux tas en un seul, en fusionnant les branches droites de chacun des deux
tas par une phase descendante. Puis dans une phase ascendante, a chaque nud, la
dierence de hauteurs des deux sous-arbres est calculee. Les pointeurs ls droit et
gauche sont echanges si la branche droite du sous arbre droit est plus longue que
celle du sous-arbre gauche.
L'insertion est realisee en fusionnant le nud avec le tas. Lors d'une suppression,
les deux sous-arbres issus de la racine sont fusionnes.
La complexite de l'operation de Melding est dans le pire des cas O(log n).
37
39
39
32
36
36
30
33
39
(a)
31
36
36
31
36
35
32
37
35
(b)
31
36
35
(c)
33
33
32
39
33
33
33
37
Figure A.8 : Leftist Heap
A.2.1.c Skew-heap
Le Skew-heap est une version auto-ajustable du Leftist-heap. Pour garder l'arbre
equilibre, le leftist-heap utilise des tests explicites pour equilibrer le tas, alors que
le Skew-heap utilise une heuristique realisee systematiquement. Sleator et Tarjan [SlTa86] ont montre que pour la pire sequence de m operations, la complexite
est m O(log n), donnant une complexite amortie en O(log n) par operation.
L'operation de base utilisee est l'operation de fusion (Melding)3
2 Dans la suite, nous gardons le terme anglais pour d
esigner la fusion de deux tas, car le terme
de fusion est utilise dans le chapitre 2 pour designe la fusion de deux listes.
3 Pour les m^
eme realisee systematiquementraisons que dans le cas du Leftist-heap, nous gardons
le terme anglais
These Paris VI, Janvier 1996
A.2. Les les de priorite
137
L'operation d'insertion consiste a fusionner le tas avec l'element a inserer. L'operation
de suppression consiste a retourner la racine, le tas etant reconstruit en fusionnant
les deux sous-arbres ls.
L'algorithme de Melding fusionne les branches droites de deux Skew-heap de
facon que les elements de la nouvelle branche respecte l'invariant des tas. A chaque
pas du meld (pour chaque oe), l'heuristique utilisee consiste a echanger systematiquement
les pointeurs ls droit et ls gauche de chacun des nuds.
Tarjan demontre que quelles que soient les valeurs de priorites des elements
a inserer, cette heuristique tend a equilbrer l'arbre. La complexite amortie des
operations est O(log n).
Nous donnons ci-apres le pseudo-code des operations de base du Skew-heap.
procedure Insertion(x,h)
begin
left(x)=null
right(x)=null
h=meld(x,h)
end insert
function Suppression (h)
begin
x=h
h=meld(left(x),right(x))
return(x)
end deletemin
procedure oe(p,h1,h2)
if (h1.e>h2.e) then h1$h2 endif
left(p)=h1
p=h1
h1=right(p)
right(p)=left(p)
end oe
function meld(h1,h2)
begin
if (h1==null) then
return(h2)
else
if (h2==null) then return(h1) endif
endif
if (h1.e>h2.e) then h1$h2 endif
/* start melding */
q=h1
p=h1
h1=right(p)
right(p)=left(p)
while (h16=null) do
oe(p,h1,h2)
endo
left(p)=h2
return(q)
end meld
These Paris VI, Janvier 1996
A.2. Les les de priorite
138
30
31
35
32
33
33
36
39
36
37
(a)
31
33
35
36
32
39
37
33
36
(b)
31
32
36
39
33
33
35
(c)
36
39
37
Figure A.9 : Skew-Heap
These Paris VI, Janvier 1996
A.2. Les les de priorite
139
A.2.1.d Pairing-heap
Le Pairing-heap (Fredman, Sedgewick, Sleator et Tarjan [FSST86] puis Stasko et
Vitter [StVi87]) est la version auto-ajustable des Binomial-Queue (Vuilemin [Vuil78]
et Borwn [Brow78]).
La structure de Pairing est representee par un tas n-aire.
L'insertion d'un nud x consiste a lui donner la place de premier ls de la racine
puis d'echanger l'element de x et celui de la racine s'ils ne respectent pas l'invariant.
Cette operation est donc en temps constant.
procedure Insertion(x,h)
begin
if (h=null) then
h:=x
else
PrFr(x):=PrFs(h)
PrFs(h):=x
if (x.e<h.e) then
x.e$h.e
endif
endif
end Insertion
La suppression retire la racine du tas puis utilise l'operation de Pairing pour
construire un nouveau tas. Cette derniere parcourt les nuds ls de la racine deux
a deux. Chacun des groupes de deux nuds est utilise pour creer un sous-arbre.
Pendant ce parcours, le nud contenant l'element de plus forte priorite est
selectionne pour devenir la racine du nouveau tas.
Soit x et y deux nuds consecutifs et r la racine actuellement selectionnee, L'oe
est donc : Si y:e > x:e, alors x et y sont echanges. Inserer y en tant que ls a^ne
de x. Puis, si r:e est moins prioritaire que x:e, echanger les pointeurs x et r. La
prochaine oe est executee avec le frere suivant.
La complexite au sens amortie de l'operation de suppression est O(log n).
function Suppression(h)
begin
if (h=null) then return null endif
x:=h
if (PrFs(h)=null) then h:=null else
h:=pairing(PrFs(h))
n:=PrFr(h)
PrFr(h):=null
if ( PrFs(h)=null) then
PrFs(h):=n
else
PrFr(DeFs(h)):=n
endif
endif
return(x)
end Suppression
function pairing(h)
begin
if (h=null) then return null endif
if (PrFr(h)=null) then return h endif
n:=PrFr(h)
These Paris VI, Janvier 1996
A.2. Les les de priorite
140
PrFr(h):=null
reste:=PrFr(n)
if (h.e<n.e) then
h$n
endif
PrFr(n):=PrFs(h)
PrFs(h):=n
PrFr(h):=pairing(reste)
if (PrFr(h).e<h.e) then
tmp:=PrFr(h)
PrFr(h):=PrFr(tmp)
PrFr(tmp):=h
return tmp
endif
return h
end pairing
30
33
36
31
35
36
39
(a)
31
33
36
35
32
36
39
(b)
31
39
35
32
33
37
33
36
(c)
33
37
32
36
39
33
37
Figure A.10 : Pairing Heap
A.2.2 Les structures speciques
Le comportement de certaines applications est tel que les priorites prennent des
valeurs entieres dans un intervalle ni. Ces particularites peuvent ^etre utilisees pour
construire des les de priorite ecaces. L'intervalle des priorites est note [min::max].
Sa taille est S.
A.2.2.a Funnel-Table
Le Funnel-Table [MaRo90] est represente par un tableau T de S les d'attente.
Le Funnel-table peut ^etre pris comme une table de hachage a adressage direct,
utilisant la plus simple des fonctions de hachage : l'identite. Cette fonction gardant
These Paris VI, Janvier 1996
A.2. Les les de priorite
141
le m^eme ordre des cles vis-a-vis de l'ordre des indices de compartiments, trouver le
suivant d'un element de priorite p est tres simple. Notons que dans le pire des cas,
la complexite d'une telle operation est O(S).
Inserer un element e de priorite v dans un Funnel-Table consiste a inserer e dans
la le d'attente d'indice v ? min dans le tableau T.
L'algorithme de suppression du Funnel-Table maintient une variable appelee B
qui contient l'indice de la le de plus petite priorite. Deux cas doivent alors ^etre
geres :
1. la le T[B] est non vide, l'operation supprime le premier element de la liste
T[B].
2. la le T[B] est vide, T est parcouru a partir de la le d'indice B, dans l'ordre
decroissant des priorites jusqu'a trouver une le non vide. L'indice de cette
le est aecte a la valeur B.
Si le comportement de l'application est telle que les valeurs de priorite sont
non decroissantes, comme dans le cas d'un B&B, alors aucun element de priorite
inferieure a B, ne peut ^etre ajoute dans le tableau.
A.2.2.b Funnel-Tree
Cette structure a ete speciquement concue pour les algorithmes de Branch and
Bound. Le Funnel-Tree se compose d'un tableau T de S 0 les d'attente (S 0 est la
premiere puissance de deux superieure a S).
Comme pour le Funnel-Table, un element de priorite v sera present dans la le
d'indice v ? min.
Les operations accedent aux les du tableau T par l'intermediaire d'un arbre
binaire complet de hauteur log S. Chaque nud de l'arbre contient un entier qui
indique le nombre d'elements dans les les feuilles de sous arbre dont il est la racine.
Lors de l'insertion d'un element de priorite v, les valeurs des nuds du chemin de
la racine vers la le d'indice v ? min sont incrementees. Le parcours de la structure
peut se faire soit dans le sens feuille-racine, soit dans le sens racine-feuille.
La suppression consiste a chercher la le contenant les elements de plus petite
valeur. L'operation emprunte le chemin le plus a gauche an d'atteindre la le
contenant les elements de plus forte priorite. Si pour un nud x, la valeur contenue
dans son ls gauche est egale a 0, le parcours continue vers le ls droit de x.
L'algorithme des operations d'insertion et de suppression parcourt log S nuds.
Ces operations ont une complexite en O(log S).
A.2.2.c Le Calendar-Queue
Le Calendar-Queue a ete propose par Brown [Brow88]. Cette structure, comme le
Funnel-Table est representee par un tableau T de les d'attente. Le tableau est xe
a une taille arbitraire k.
Brown a propose le Calendar-Queue en faisant l'analogie avec un carnet de
rendez-vous. Un element est un rendez-vous, sa priorite represente la date du rendezvous.
La taille du tableau est 365, de facon a permettre des rendez-vous sur toute
l'annee. L'insertion d'un rendez-vous de date d consiste a placer l'element a la n
de la le correspondant a cette date.
Il faut gerer lors des suppressions, les rendez-vous du m^eme jour mais avec
des annees dierentes. Lors d'une consultation du carnet a une date particuliere
pour une annee donnee, les rendez-vous d'annees dierentes de celle voulue sont
immediatement reinseres a la n de la le.
Si l'espace des priorites est xee et est egal a S et si k est choisi egal a S, le
Calendar-Queue est equivalent au Funnel-Table.
These Paris VI, Janvier 1996
A.2. Les les de priorite
142
A.2.2.d File de priorite en log log n
Van Emde Boas, Kaas, Zilstra [BoKZ77] ont propose une le de priorite pour un
intervalle de priorite borne par S avec des operations de complexite O(log log S).
S est egal a n.
Dans une d-heap, la hauteur de l'arbre est log S. Le but recherche par les auteurs
est de reduire la longueur de ce chemin, en rendant le nombre de ls de chaque nud
dependant de la profondeur du nud.
Par exemple, si pour un nud de profondeur k, son nombre de ls est 2k, la le
peut contenir k! elements.
Pour une structure de n elements, k est egal a logloglogn n .
Une autre possibilite est de donner2 2k ls pour chaque nud de profondeur k.
La taille de la structure
devient O(2 k2 ). La longueur du chemin pour n elements,
p
est nalement O( log n).
p
p
Une derniere representation consiste a diviser
p S en S blocs de taille S.
Chaque bloc est une le de priorite de taille S, et l'ensemble de ces blocs forment eux-m^emes une le de priorite de m^eme taille. Les auteurs demontrent que la
complexite des operations en O(loglog n).
A.2.3 Les structures de recherche modiees
Les structures de recherche peuvent ^etre utilisees pour implementer des les de
priorites.
L'operation d'insertion est la m^eme dans les deux structures.
L'operation de suppression des les de priorite n'existe pas dans les structures
de recherche, mais elle peut ^etre facilement implementee dans beaucoup de celle-ci,
si on considere la valeur de cle comme une valeur de priorite. Il sut de supprimer
l'element de plus petite cle.
Toutes les structures de recherche ne permettent pas cette possibilite. Les structures dont la representation garde les cles ordonnees peuvent supporter une operation
de suppression des les de priorite. Dans ce type de representation, il est en eet
possible de trouver le successeur et le predecesseur d'un element de cle donnee, avec
une faible complexite. Les arbres, les liste, et certaines tables de hachage sont de ce
type.
A.2.3.a Le Splay-Tree
L'operation d'insertion initiale peut ^etre utilisee sans modication.
En revanche, l'algorithme de suppression doit retirer le nud de plus petite
priorite et donc de plus petite cle. Le nud a supprimer est place au bout de la
branche la plus a gauche de l'arbre. L'operation doit donc parcourir cette branche
tout en eectuant les rotations ZIG et ZIG-ZIG.
Les gures A.11 et A.12 donnent des exemples de suppression et d'insertion.
L'inter^et d'utiliser des structures de recherche pour implementer des les de
priorites, est de pouvoir regrouper sous une m^eme entite tous les elements de priorite
egale.
Par exemple, dans un arbre binaire de recherche, il est possible de n'utiliser
qu'un nud de l'arbre par valeur de priorite. Si comme precedemment, les valeurs
de priorites sont bornees par S, et si toutes sont representees, la complexite des
operations n'est plus O(log n), mais O(log S). Si le comportement de l'application
implique un grand nombre d'elements de m^eme priorite, cette forme de structure
permettra de reduire la complexite des operations.
These Paris VI, Janvier 1996
A.2. Les les de priorite
143
35
33
31
30
36
33
32
37
36
39
(a)
33
31
35
32
36
33
37
36
39
(b)
35
33
31
37
33
32
36
(c)
39
36
39
Figure A.11 : Semi-Splay Tree
33
32
31
36
33
30
37
35
39
36
(a)
32
33
31
36
33
37
35
36 39
(b)
33
32
31
37
33
36
(c)
35
39
36
39
Figure A.12 : Simple-Semi-Splay Tree
These Paris VI, Janvier 1996
A.2. Les les de priorite
144
Nous avons implemente cette forme de le de priorite avec les structures de
Semi-Splay et de Simple-Semi-Splay. Nous les avons appelees les Single-Semi-Splay
et Single-Simple-Semi-Splay.
La representation est modiee. Une le d'attente est attachee a chaque nud
de la structure. Le nombre d'elements presents dans la le d'un nud de priorite v
designe le nombre d'elements de priorite v presents dans l'arbre.
Les structures single utilisent les m^emes algorithmes pour la phase de recherche
que les non single . En revanche, selon la valeur v, la suppression (respectivement
l'insertion) n'entra^ne pas forcement la suppression (respectivement l'insertion) d'un
nud dans l'arbre.
Les gures A.13 et A.14 donnent des exemples de suppression et d'insertion pour
ces deux nouvelles les de priorite.
hh
ii
33 2
31 1
30 1
36 2
32 1
35 1
37 1
39 1
(a)
31 1
33 2
32 1
36 2
35 1
37 1
39 1
(b)
33 2
31 1
37 1
32 1
36 2
(c)
39 2
35 1
Figure A.13 : Single-Semi-Splay Tree
These Paris VI, Janvier 1996
A.2. Les les de priorite
145
33 2
32 1
36 2
31 1
35 1
30 1
37 1
39 1
(a)
32 1
31 1
33 2
36 2
35 1
37 1
39 1
(b)
33 2
32 1
37 1
31 1
36 2
(c)
39 2
35 1
Figure A.14 : Single-Simple-Semi-Splay Tree
These Paris VI, Janvier 1996
146
Bibliographie
[AFRV+94] Authie (G.), Ferreira (A.), Roch (J.-L.), Villard (G.), Roman (J.),
Roucairol (C.) et Virot (B.). { Algorithmique Parallele : Analyse et
Conception. { Hermes, Paris, 1994.
[AGFR+95] Authie (G.), Garcia (J.-M.), Ferreira (A.), Roch (J.-L.), Villard (G.),
Roman (J.), Roucairol (C.) et Virot (B.). { Parallelisme et Applications Irregulieres. { Hermes, Paris, 1995.
[AhHU74] Aho (A.V.), Hopcroft (J.) et Ullman (J.). { The Design and Analysis
of Computer Algorithms. { Addison-Wesley, New-York, 1974.
[ArSe89] Aragon (C.R.) et Seidel (R.G.). { Randomized search trees . FOCS
30, 1989, pp. 540{545.
[Bena95a] Benachouche (M.). { Regulation dynamique de la charge pour le B&B
distribue : Theorie et implementation. { Rapport technique n 95/21,
PRiSM, 1995.
[Bena95b] Benachouche (M.). { Resolution parallele de l'aectation quadratique (qap) et de la couverture minimale d'un graphe (vcp) par la
methode branch & bound . FRANCORO, Rencontres Francophones
de Recherche Operationnelle. { 1995.
[Bena96] Benachouche (M.). { Contribution a la parallelisation des methodes de
recherche arborescente dans des environnements distribues. { 4, Place
Jussieu, 75252 Paris Cedex 05, FRANCE, These de PhD, Universite
Pierre et Marie Curie { Paris VI, janvier 1996. In French.
[BiBr87] Bitwas (J.) et Browne (J.C.). { Simultaneous update of priority structures . IEEE International conference on parallel computing, 1987, pp.
124{131.
[BoKZ77] Van Emde Boas (P.), Kaas (R.) et Zilstra (E.). { Design and implementation of an ecient priority queue . Mathematical System Theory,
vol. 10, 1977, pp. 99{127.
[Brow78] Brown (M.R.). { Implementation and analysis of binomial queue
algorithmms . SIAM Comput., vol. 7, 1978, pp. 298{319.
[Brow88] Brown (R.). { Calendar queues: a fast o(1) priority queue implementation for the simulation event set problem . Communication of the
ACM, vol. 31, n 10, octobre 1988, pp. 1220{1227.
[BuBu93] Bui (M.) et Butelle (F.). { Construction repartie d'un arbre couvrant
de diametre minimum. { RR n 2017, INRIA, Rocquencourt, septembre 1993.
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
These Paris VI, Janvier 1996
Bibliographie
147
[BuKR91] Burkard (R.), Karisch (S.) et Rendl (F.). { Qaplib - a quadratic assignment problem library . European Journal of Operational Research,
vol. 55, 1991, pp. 115{119.
[CaCh92] Carlsonn (S.) et Chen (J.). { The complexity of heaps . ACM-SIAM
Symposium on Discrete Algorithm, pp. 393{402. { janvier 1992.
[CaFo84] Calhoun (J.) et Ford (R.). { Concurrency control mechanisms and the
serializability of concurrent tree algorithms . the 3rd ACM SIGACTSIGMOD Symposium on Principles of Database Systems. { Waterloo
Ontario, avril 1984.
[Carl91]
Carlsson (S.). { An optimal algorithm for deleting the root of a
heap . Information Processing Letters, vol. 37, n 2, janvier 1991, pp.
117{120.
[CBDW91] Colbrook (A.), Brewer (E. A.), Dellarocas (C. N.) et Weihl (W. E.). {
Algorithms for search trees on message-passing architectures. { Rapport technique n MIT/LCS/TR-517, Massachuset Institute of Technology, 1991.
[Chen90] Cheng (K.H.). { A simultaneous access queue . Journal of parallel
and distributed computing, vol. 9, 1990, pp. 83{86.
[CoLR89] Cormen (T.H.), Leiserson (C.E.) et Rivest (R.L.). { Introduction to
Algorithms. { MIT Press, McGraw-Hill Book Compagny, 1989.
[CoNR92] Cosnard (M.), Nivat (M.) et Robert (Y.). { Algorithmique Parallele.
{ Masson, etude et recherche en informatique, Paris, 1992.
[CoTr93] Cosnard (M.) et Trystram (D.). { Algorithmes et Architectures Paralleles. { InterEdition, Informatique Intelligence Articielle, Paris,
1993.
[Cran72] Crane (C.A.). { Linear Lists and priority queues as balanced binary
trees. { Rapport technique n 259, Stanford University, 1972.
[Crei85]
McCreight (E. M.). { Priority search trees . SIAM J Computing,
vol. 14, n 2, mai 1985, pp. 257{276.
[CuLe94b] Cung (V.-D.) et Le Cun (B.). { An ecient implementation of parallel a* . Lecture Notes in Computer Science, Parallel and Distributed
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
computing : Theory and Practice, Canada-France Conference on Parallel Computing, pp. 153{168. { mai 1994.
[DaHo91]
[DeFR90]
Das (S.K.) et Horng (W.-B.). { Managing a parallel heap eciently .
Proc. PARLE'91-Parallel Architectures and Languages Europe, pp.
270{288. { 1991.
Dehne (F.), Ferreira (A.) et Rau-Chaplin (A.). { Parallel branch and
bound on ne grained hypercube multiprocessors . Parallel Computing, no15, 1990, pp. 201{209.
Delamarre (Dominique). { Etude
et conception d'algorithmes paralleles
hh
ii
hh
ii
[Dela94]
d'optimisation combinatoire discrete approchee; implantation sur architecture MIMD. { These de PhD, Universite d'Orleans, decembre
1994.
These Paris VI, Janvier 1996
Bibliographie
[Deo89]
148
Deo (N.). { Data structures for parallel computation on sharedmemory machine . SuperComputing, pp. 341{345. { 1989.
Deo (N.) et Prasad (S.). { Parallel heap: An optimal parallel priority
queue . Journal of Supercomputing, vol. 6, n 1, mars 1992, pp. 87{98.
Dietz (P. F.). { Heap construction in the parallel comparison tree
model . SWAT'92 Third Scandinavian Workshop on Algorithm Theory, Scandinavie. { 1992.
Diderich (C.) et Gengler (M.). { Experimental results with synchronized parallel branch and bound algorithms . IFIP WG 10.3, IRhh
ii
[DePr92]
hh
ii
[Diet92]
hh
ii
[DiGe94]
hh
ii
REGULAR94 : Parallel Algorithms for Irregular Structured Problems,
Suisse, ed. par A. Ferreira, J. Rolim (Kluwer Academic). { septembre
[Dixo94]
1994.
Dixon (B.). { Concurrency in a o(loglogn) priority queue . Lecture
hh
ii
Notes in Computer Science, Parallel and Distributed computing : Theory and Practice, Canada-France Conference on Parallel Computing,
pp. 59{72. { mai 1994.
[DoRo95a] Dowaji (S.) et Roucairol (C.). { Load balancing strategy and priority
of tasks in distributed e nvironments . Fourteenth Annual IEEE Conhh
ii
ference - International Phoenix Conference on Computers and Communications, pp. 15{22. { Scottsdale, Arizona (USA), mars 1995.
[DoRo95b] Dowaji (S.) et Roucairol (C.). { Inuence of priority of tasks on load
balancing strategies for distributed branch-and-bound algorithms .
hh
ii
9th International Parallel Processing Symposium (IPPS'95) - Workshop on Solving Irregular Problems on Distributed Memory Machines,
pp. 83{90. { Santa Barbara (USA), avril 1995.
[Dowa95] Dowaji (S.). { Contribution a l'etude des problemes d'equilibrage de
charge dans des environnements distribues. { 4, Place Jussieu, 75252
Paris Cedex 05, FRANCE, These de PhD, Universite Pierre et Marie
Curie { Paris VI, juin 1995. In French.
[DuFe94] Duboux (T.) et Ferreira (A.). { Towards a dynamic parallel database
machine: databalancing techniques and pipeline. { Rapport technique
n 94-47, LIP Ens-Lyon, France, decembre 1994.
[DuFG94] Duboux (T.), Ferreira (A.) et Gastaldo (M.). { A scalable design for
VLSI dictionary machines. { Rapport technique n 94-33, LIP EnsLyon, France, decembre 1994.
[Eck94a] Eckstein (J.). { Control strategies for parallel mixed integer branch
and bound . Supercomputing'94, ed. par In I.C.S. Press (editor). { to
appear 1994.
[Eck94b] Eckstein (J.). { Parallel Branch-and-Bound algorithms for general mixed integer programming on the CM-5. { Rapport technique
n TMC-257, Thinking Machines Corporation, 1994.
[Elli80]
Ellis (C.S.). { Concurrent search and insertion in 2-3 trees . Acta
Informatica, vol. 14, 1980, pp. 63{86.
[Elli81]
Ellis (C.S.). { Concurrent search and insertion in avl trees . IEEE
Trans. on Cumputers, vol. C-29, n 9, septembre 1981, pp. 811{817.
hh
ii
hh
hh
ii
ii
These Paris VI, Janvier 1996
Bibliographie
149
[FaCh89]
Fan (Z.) et Cheng (K.H.). { A simultaneous access priority queue .
International conference on parallel processing, 1989, pp. I{95{98.
[FlGL93b] Florin (G.), Gomez (R.) et Lavallee (I.). { Recursive distributed
programming schemes and shortest paths . OPOPAC, International
Workshop on Principles of Parallel Computing. { 1993.
[FlGL93c] Florin (G.), Gomez (R.) et Lavallee (I.). { Recursive distributed
programming schemes . ISADS'93 Kawasaki Japan. { mars 1993.
[FlLa91] Florin (G.) et Lavallee (I.). { La recursivite comme mode de programmation distribuee. { RR n 1536, INRIA, Rocquencourt, 1991.
[Fouc93] Fouche (D.). { Parcours paralleles de type a* pour dierents problemes
combinatoires diciles. { Memoire d'ingenieur IIE-CNAM, juin 1993.
[FrVV78] Francon (J.), Viennot (G.) et Vuillemin (J.). { Description and analysis of an acient priority queue representation . In Proceedings of
the 19th Symposium on Fondation of Computer Science. { 1978.
[FSST86] Fredman (M.L.), Sedgewick (R.), Sleator (D.D.) et Tarjan (R.E.). {
The pairing heap: A new form of self-adjusting heap . Algorithmica,
vol. 1, 1986, pp. 111{129.
[Gast93] Gastaldo (M.). { Contribution a l'algorithmique Parallele des structures de donnees et des structures discretes : machine dictionnaire et
algorithmes pour les graphes. { These de doctorat, E cole Normale
Superieure de Lyon et l'Universite Claude Bernard Lyon I, France,
decembre 1993.
[GeCr93] Gendron (B.) et Crainic (T.G.). { Parallel implementation of a
branch-and-bound algorithm for multicommodityuncapacited location
with balancing requirements . INFOR, pp. 151{165. { 1993.
[GeCr95] Gendron (B.) et Crainic (T.G.). { A Branch-and-Bound algorithm
for depot location and container eet management. { Rapport technique n CRT-95-10, Universite de Montreal, C.P 6128, succ. Centreville, Montreal, Quebec, Canada H3C 3J7., CRT, Centre de Recherche
sur les Transports et departement d'informatique et de recherche
operationnelle, 1995 to appear in Location Science.
[Gilm62] Gilmore (P.C.). { Optimal and suboptimal algorithms for the
quadratic assignment problem . SIAM Journal on Applied Math.,
vol. 10, 1962, pp. 305{313.
[Gome95] Gomez (R.). { Conception et specication d'algorithmes distribues : la
vague recursive. { These de doctorat, Universite Paris 8, avril 1995.
[GoMu86] Gonnet (G.H.) et Munro (J.I.). { Heaps on heaps . SIAM Journal
of Computing, vol. 15, n 4, novembre 1986, pp. 964{971.
[GuSe78] Guibas (L.J.) et Sedgevick (R.). { A dichromatic framework for
balanced trees . Proceedings of the 19th Symposium on Fondation of
Computer Science. { 1978.
[HHM94] Hajian (M.T.), Hai (I.) et Mitra (G.). { A Distributed Processing Algohh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
rithm For Solving Integer Programs Using a Cluster Of Workstations.
{ Rapport technique n TR/14/94, Department of Mathematics and
Statistics, 1994.
These Paris VI, Janvier 1996
Bibliographie
150
[Huan91b] Huang (Q.). { An evaluation of concurrent priority queue algorithms . Third IEEE Symposium on Parallel and Distributed Processing, pp. 518{525. { decembre 1991.
[Isha92]
Ishak (R.). { Semantically consistent schedules for ecient and concurrent b-tree restructuring . Eight international Conference on Data
Engineering, pp. 184{199. { fevrier 1992.
[Jone89] Jones (D.W.). { Concurrent operations on priority queues . ACM,
vol. 32, n 1, janvier 1989, pp. 132{137.
[JoSh93] Johnson (T.) et Shasha (D.). { The performance of concurrent b-tree
algorithms . ACM Transaction on DataBase System, vol. 18, n 1,
mars 1993, pp. 51{101.
[Kind94] Kindervater (G.). { What is branch and bound ...? from folklore to
a computational model and its implementation . IFIP WG 10.3, IRREGULAR94 : Parallel Algorithms for Irregular Structured Problems,
ed. par A. Ferreira, J. Rolim (Kluwer Academic). { septembre 1994.
[KiTM84] Kitsuregawa (M.), Tanaks (H.) et Moto-Oka (Y.). { Architecture and
performance of relational algebra machine grace . the International
Conference on Parallel Processing. { 1984.
[KiTr88] Kindervater (G.) et Trienekens (H.). { Experiments with parallel
algorithms for combinatorial problems . EJOR, European Journal of
Operational Research, no33, 1988, pp. 65{81.
[Knut73] Knuth (D.E.). { The Art of Programming: Sorting and Searching. {
Addison-Wesley, 1973, volume 3.
[Korf85] Korf (R. E.). { Depth-rst iterative-deepening : An optimal admissible tree search . Articial Intelligence, no27, 1985, pp. 97{109.
[KuLe80] Kung (H.) et Lehman (P.). { Concurrent manipulation of binary
search trees . ACM Trans. on Database Systems, vol. 5, n 3, 1980,
pp. 354{382.
[KwWo83] Kwong (Y.) et Wood (D.). { A new method for concurrency in
b-tree . IEEE Trans. Software Engr, vol. SE-8, n 3, mai 1983, pp.
211{221.
[LaSa84a] Lai (T.-H.) et Sahni (S.). { Anomalies in parallel branch-and-bound
algorithms . Communication A.C.M., vol. 27, june 1984, pp. 594{602.
[Laval86] Lavallee (I.). { Contribution a l'algorithmique parallele et distribu ee,
application a l'optimisation combinatoire. { These d'etat, Universite
Paris XI, Orsay, 1986.
[Lavau95c] Lavault (C.). { Evaluation
des algorithmes distribues | analyse, complexite, methodes. { Hermes, Paris, janvier 1995.
[Lawl63] Lawler (E.). { The quadratic assignment problem . Management
Science, vol. 9, 1963, pp. 586{599.
[LeMR91] Le Cun (B.), Mans (B.) et Roucairol (C.). { Operations concurrentes
et les de priorite. { RR n 1548, INRIA-Rocquencourt, 1991.
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
These Paris VI, Janvier 1996
Bibliographie
151
[LeMR92] Le Cun (B.), Mans (B.) et Roucairol (C.). { Comparison of concurrent
priority queues for branch and bound Algorithms. { RR n 92-65, MASI
Universite Pierre et Marie Curie, 1992.
[LeMR93] Le Cun (B.), Mans (B.) et Roucairol (C.). { Etude de les de priorite concurrentes . OPOPAC, International Workshop on Principles of
Parallel Computing, ed. par Y. Paker et I. Lavallee (Hermes France).
{ novembre 1993.
[LeRo94] Le Cun (B.) et Roucairol (C.). { Concurrent data structures for tree
search algorithms . IFIP WG 10.3, IRREGULAR94 : Parallel Algorithms for Irregular Structured Problems, ed. par A. Ferreira, J. Rolim
(Kluwer Academic), pp. 135{155. { septembre 1994.
[LeYa81] Lehman (P.) et Yao (S.). { Ecient locking for concurrent operation
on b-tree . ACM trans. on Database Systems, vol. 6, n 4, decembre
1981, pp. 650{670.
[LiSR92] Li (J.), Srivastava (J.) et Rotem (D.). { Cmd: A multidimensional
declustering method for parallel database systems . the 18th VLDB
Conference, Vancouver, Canada. { 1992.
[LiWa86a] Li (G.) et Wah (B.W.). { Coping with anomalies in parallel branchand-bound . IEEE Trans. on Computers, vol. C-35, n 6, June 1986,
pp. 568{573.
[LuM89] Luling (R.) et Monien (B.). { Two strategies for solving the vertex
cover problem on a transputer network. . The 3rd Int. Workshop On
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
Distributed Algorithms, number 392 in Lecture Notes Of Computer
Sciences., pp. 160{171. { 1989.
[LuMo92]
Luling (R.) et Monien (B.). { Load balancing for distributed branch
and bound algorithms . International Parallel Processing Symposium
(IPPS)., pp. 543{549. { 1992.
Luling (R.), Monien (B.), Racke (M.) et Tschoke (S.). { Solving the
hh
ii
[LuMo95]
TSP with a distributed Branch-and-Bound Algorithms on a 1024 processor network. { Rapport technique n 160, University of Paderborn,
1995.
[LuMR91] Luling (R.), Monien (B.) et Ramme (F.). { Load balancing in large
network: A comparative study. . 3rd IEEE Symposium on Parallel and
Distributed Processing. { 1991.
[Mans92] Mans (B.). { Contribution a l'Algorithmique Non Numerique Parallele : Parallelisation de Methodes de Recherche Arborescente. { These
de doctorat, Universite Paris VI, Paris, France, juin 1992.
[Mans92a] Mans (B.). { Contribution a l'Algorithmique Non Numerique Parallele : Parallelisations de Methodes de Recherche Arborescentes. { 4,
place Jussieu, 75252 Paris Cedex 05, These d'universite, Universite
Paris VI, juin 1992.
[Mans95] Mans (B.). { Portable distributed priority queues with MPI . Web
server. { 1995.
[MaRo90] Mans (B.) et Roucairol (C.). { Concurrency in Priority Queues for
Branch and Bound algorithms. { Rapport technique n 1311, INRIA,
Rocquencourt, France, 1990.
hh
ii
hh
ii
These Paris VI, Janvier 1996
Bibliographie
[MaRo93]
152
Mans (B.) et Roucairol (C.). { Theoretical comparisons of parallel best-rst search branch and bound algorithms . OPOPAC, International Workshop on Principles of Parallel Computing, ed. par
Y. Paker et I. Lavallee (Hermes France). { novembre 1993.
Mautor (T.). { Contribution a la resolution des problemes
hh
ii
[Maut93]
[McKe91]
d'implantation : algorithmes sequentiels et paralleles pour l'aectation
quadratique. { 4, place Jussieu, 75252 Paris Cedex 05, These
d'universite, Universite Paris VI, fevrier 1993.
McKeown (G.), Rayward-Smith (V.), Rush (S.) et Turpin (H.). {
Using a transputer network to solve branch and bound problems .
hh
ii
Transputing 91, Proceedings of the world Transputer User Group Conference, pp. 781{800. { 1991.
[Meyb92]
Meybodi (M.R.). { Concurrent data structures for hypercube machine . Proceedings of the Conference on Parallel Architectures and
Languages Europe (PARLE'92). { juin 1992.
[MuPS92] Munro (J.I.), Papadakis (T.) et Sedgewick (R.). { Deterministic skip
lists . ACM-SIAM Symposium on Discrete Algorithm, pp. 367{375. {
janvier 1992.
[NaMe95] Namyst (R.) et Mehaut (JF.). { Pm2 : Parallel multithreaded
machine a computing environment for distributed architectures .
PARCO. { 1995.
[NaMe95b] Namyst (R.) et Mehaut (J.F.). { PM2: Parallel Multithreaded Machine. a Multithreaded Environment on top of pvm . Proceedings de
EuroPVM. { Hermes, Sep. 1995.
[Nils80]
Nilsson (N. J.). { Principles of Articial Intelligence. { Tioga Publishing Co., 1980.
[OlWe91] Olariu (S.) et Wen (Z.). { Optimal parallel initialization algorithms
for a class of priority queues . IEEE Transactions on Parallel and
Distributed Systems, vol. 2, n 4, octobre 1991, pp. 423{429.
[OtRS82] Ottman (T.), Rosenberg (A.) et L.Stockmeyer. { A dictionary machine (for vlsi) . IEEE Trans. on Computers, pp. 892{897. { septembre
1983.
[Pard94] Pardalos (P.). { Parallel algorithms for nonlinear assignment problems . IFIP WG 10.3, IRREGULAR94 : Parallel Algorithms for Irregular Structured Problems, ed. par A. Ferreira, J. Rolim (Kluwer
Academic Publishers). { septembre 1994.
[PaVW83] Paul (W.), Vishkin (U.) et Wagener (H.). { Parallel computation on
2-3 tree . RAIRO informatique theorique, France, vol. 17, n 4, 1983,
pp. 397{404.
[Pear84] Pearl (J.). { Heuristics. { Addison-Wesley, 1984.
[Pele90]
Peleg (D.). { Distributed data structures: a complexity-oriented
view . Proceedings of the 4th International Worshop on Distributed
Algorithms (WDAG'90), pp. 71{89. { 1990.
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
These Paris VI, Janvier 1996
Bibliographie
153
[PeMi92]
Pekny (J.) et Miller (D.). { A parallel branch and bound algorithm for
solving large asymmetric traveling salesman problems . Mathematical
Programming, vol. 55, 1992, pp. 17{33.
[PiPu92] Pinotti (M.C.) et Pucci (G.). { Parallel algorithm for priority queue
operations . SWAT'92 Third Scandinavian Workshop on Algorithm
Thoery. { 1992.
[PlRo89] Plateau (G.) et Roucairol (C.). { A supercomputer algorithm for the
0-1 multiknapsack problem . Impacts of Recent Computer Advances
on Operations Research, 1989, pp. 144{157.
[Pugh90] Pugh (W.). { Skip lists: A probabilistic alternative to balanced trees .
Communication of ACM, vol. 33, n 6, juin 1990, pp. 686{676.
[Quin90] Quinn (M. J.). { Analysis and implementation of branch-andbound algorithms on a hypercube multicomputer. . IEEE Transaction, vol. 39, n 3, March 1990.
[QuYo84] Quinn (M. J.) et Yoo (Y. B.). { data structure for the ecient solution of graph theoretic problems on tighly-coupled mimd computers .
Proceedings of the International Conference on Parallel Processing, pp.
431{438. { 1984.
[RaKR87a] Rao (V. N.), Kumar (V.) et Ramesh (K.). { Parallel Heuristic Search
on Shared Memory Multiprocessors : Preliminary Results. { Rapport
technique n AI85-45, Articial Intelligence Laboratory, The University of Texas at Austin, juin 1987.
[RaKu88] Rao (V.N.) et Kumar (V.). { Concurrent insertions and deletions in
a priority queue . IEEE proceedings of International Conference on
Parallel Processing, 1988, pp. 207{211.
[RaZh91] Rao (N.) et Zhang (W.). { Building heaps in parallel . Information
Processing Letter, no37, 1991, pp. 355{358.
[Rouc87a] Roucairol (C.). { Du sequentiel au parallele: la recherche arborescente
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
hh
ii
et son application a la programmation quadratique en variable 0-1,
These d'etat. { These de PhD, Universite Paris VI, juin 1987.
[Rouc87b] Roucairol (C.). { A parallel branch and bound algorithm for
the quadratic assignment problem . Discrete Applied Mathematics,
vol. 18, 1987, pp. 211{225.
[Rouc90] Roucairol (C.). { Recherche arborescente en parallele. { RR n M.A.S.I.
90.4, Institut Blaise Pascal - Paris VI, 1990. In French.
[SCOOP95] Member (SCOOP). { Scoop. { kluwer Verlag, 1995.
[SlTa83] Sleator (D.D.) et Tarjan (R.E). { Self-adjusting trees . 15th ACM
Symposium on theory of computing, pp. 235{246. { avril 1983.
[SlTa86] Sleator (D.D.) et Tarjan (R.E). { Self-adjusting heaps . SIAM J.
Comput., vol. 15, n 1, fevrier 1986, pp. 52{69.
[StVi87] Stasko (J.T.) et Vitter (J.S.). { Pairing Heap: Experiments and Analysis. { Rapport technique n 600, INRIA Rocquencourt, France, fevrier
1987.
hh
ii
hh
hh
ii
ii
These Paris VI, Janvier 1996
Bibliographie
[TaSl85]
[TrBr92]
[Tsch94]
[Vuil78]
[Will64]
154
Tarjan (R.E.) et Sleator (D.D.). { Self-adjusting binary search trees .
Journal of ACM, vol. 32, n 3, 1985, pp. 652{686.
Trienekens (H.) et de Bruin (A.). { Towards a Taxonomy of Parallel Branch and Bound algorihms. { RR n EUR-CS-92-01, Rotterdam, The Netherlands, Erasmus University, Computer Science Departement, 1992.
Tschoke (Stefan). { A portable parallel branch-and-bound library .
III Annual Implementation Challenge Workshop, DIMACS. { New
Brunswick, USA, octobre 1994.
Vuillemin (J.). { A data structure for manipulating priority queues .
Comm. ACM, vol. 21, 1978, pp. 309{314.
Williams (J.W.J.). { Algorithm 232: Heapsort . Communications of
the ACM, vol. 7, 1964, pp. 347{348.
hh
ii
hh
ii
hh
ii
hh
ii
These Paris VI, Janvier 1996

Documents pareils