Chapitre 10
Complexit´e parall`ele
Une machine parall`ele est une machine capable d’effectuer plusieurs op´e-
rations simultan´ement. Les machines parall`eles peuvent r´esoudre certains pro-
bl`emes plus rapidement que les machines s´equentielles, qui elles ne peuvent
effectuer qu’un nombre born´e d’op´erations `a la fois.
Nous allons introduire le mod`ele de calcul parall`ele PRAM, qui est bas´e
sur le mod`ele RAM. Nous verrons ensuite les mod`eles parall`eles bas´es sur les
circuits. Nous pr´esenterons alors des r´esultats reliant ces mod`eles parall`eles, et
aussi ces mod`eles aux mod`eles s´equentiels.
10.1 Retour sur les machines RAM
10.1.1 Calculabilit´e et machines RAM
Avant de pouvoir parler de PRAM, nous devons revenir un peu sur le mod`ele
des machines RAM, et sur le pourquoi nous ne les avions pas mises dans l’´enonc´e
du th´eor`eme 8.1 du chapitre 8 affirmant l’´equivalence de la plupart des mod`eles
`a un temps polynomial pr`es.
Nous avons introduit le mod`ele des machines RAM dans la d´efinition 5.5 du
chapitre 5. Une machine RAM travaille sur les entiers, poss`ede des registres
x1, x2,· · · ,en nombre non-born´e, et est autoris´ee, selon la d´efinition 5.5 `a
effectuer des op´erations du type :
efinition 10.1 (Op´erations RAM) 1. xi0
2. xixi+ 1
3. xixi1
4. xixj
5. xixxj
6. xxixj
7. if xi= 0 then ctl state jelse ctl state j0
1
2CHAPITRE 10. COMPLEXIT ´
E PARALL `
ELE
Nous avons montr´e que l’on pouvait simuler les machines RAM par une
machine de Turing (th´eor`eme 5.7) travaillant sur un alphabet fini.
En fait, si l’on voit cette d´efinition comme un algorithme sur une structure
dont l’ensemble de base est les entiers, le th´eor`eme 5.8 montre qu’on peut aussi
simuler une machine RAM par une machine de Turing qui travaille sur les entiers
(c’est-`a-dire dont les cases du ruban contiennent des entiers).
Du point de vue de la calculabilit´e, cela ne fait pas vraiment de diff´erence,
puisque l’on peut simuler des calculs sur les entiers par des calculs sur leur
codage en binaire.
Dans le mˆeme esprit, du point de vue de la calculabilit´e, on pourrait aussi au-
toriser des types d’op´erations plus g´en´erales dans le mod`ele comme par exemple
ajouter aux op´erations de la d´efinition pr´ec´edente les op´erations du type xi
max(xi, xj), xixi+xj,xixixj, etc. En fait plus g´en´eralement,
toute op´eration du type xif(xi1, xi2,· · · , xik) o`u fest une fonction calcu-
lable sur les entiers, ou dont la repr´esentation binaire de la valeur est calculable
`a partir de la repr´esentation binaire des arguments, si l’on pr´ef`ere, calculable au
sens des structures finies.
10.1.2 Complexit´e et machines RAM
S’il on veut parler de complexit´e, il est vrai qu’un calcul en temps td’une
machine de Turing se simule en un temps polynomial en tpar une machine RAM
au sens de la d´efinition 5.5 : cela d´ecoule du th´eor`eme 5.6, en voyant une machine
de Turing comme une machine de Turing sur la structure B= ({0,1},0,1,=).
Cependant la r´eciproque n’est pas n´ecessairement vraie, car une machine
RAM comme d´efinie dans la d´efinition 5.5 peut `a priori manipuler des entiers
tr`es grands en temps unitaire, et donc un temps test pas simulable facilement
en un temps polynomial en t, si la taille des entiers impliqu´es ne reste pas
polynomiale en la taille des entr´ees et en t.
Aussi, si l’on souhaite parler de complexit´e sur une machine RAM, on mesure
g´en´eralement la taille des entr´ees de la fa¸con suivante : la taille d’un entier n
est |n|=dlog(n)e(le nombre de bits n´ecessaire pour l’´ecrire en binaire). Une
entr´ee d’une machine RAM est un mot w=w1w2· · · wnsur N: on mesure sa
taille |w|comme |w|=Pn
i=1 |wi|.
Remarque 10.1 Observons que cette subtilit´e est parfaitement inutile, si l’on
ne parle que de probl`emes et d’algorithmes impliquant des entiers de taille po-
lynomiale en la taille des entr´ees. Mais `a priori, dans le mod`ele RAM, on peut
avoir des entiers de taille arbitraire.
Si l’on utilise cette convention, un temps polynomial ten la (cette) taille
des entr´ees d’une machine RAM se simule bien en temps polynomial en tsur
une machine de Turing ou sur toute structure finie et r´eciproquement : il suffit
d’observer les preuves.
Autrement dit, avec cette convention, le temps polynomial est le mˆeme au
sens de tous les mod`eles consid´er´es dans le chapitre 5 (mis `a part les machines
`a k-compteurs).
10.2. LE MOD `
ELE PRAM 3
On va fixer dor´enavant cette convention, qui nous permettra de parler de
machines RAM (et de PRAM) avec une notion de complexit´e qui est bien la
complexit´e usuelle en algorithmique.
10.1.3 ´
Etendre les op´erations admissibles
Cette convention ´etant fix´ee, on peut aussi alors autoriser des types d’op´e-
rations plus g´en´erales dans le mod`ele comme par exemple ximax(xi, xj),
xixi+xj.
Mais pas des op´erations comme xixixj: le probl`eme est que cela
permet d’´ecrire xx2et qu’en partant avec x= 2, en effectuant kop´erations
xx2cons´ecutives on construit l’entier x= 22k, qui est de taille 2k: on peut
donc cr´eer des entiers ´enormes trop vite, et quitter le temps polynomial au sens
des structures finies.
efinition 10.2 (Op´eration admissible) En fait, on dira qu’une op´eration
du type xif(xi1, xi2,· · · , xik)est admissible si
1. il est possible de calculer la repr´esentation binaire de f(xi1, xi2,· · · , xik)
en temps polynomial en la taille des repr´esentations binaires de ses argu-
ments.
2. la taille de f(xi1, xi2,· · · , xik)est au plus une constante plus le maximum
de la taille de ses arguments.
Remarque 10.2 C’est la deuxi`eme condition qui est probl´ematique pour le pro-
duit, car log(xixj) = log(xi) + log(xj).
Remarque 10.3 Observons que cette subtilit´e sur la deuxi`eme condition est
parfaitement inutile, si l’on ne consid`ere des algorithmes dont les entiers mani-
pul´es restent de taille polynomiale en la taille des entr´ees.
Avec des op´erations admissibles, la taille des entiers au temps treste poly-
nomial en tet en la taille des entr´ees, et donc avec une notion de complexit´e
qui est bien la complexit´e usuelle en algorithmique.
10.2 Le mod`ele PRAM
Ceci ´etant dit, revenons `a la complexit´e parall`ele.
10.2.1 D´efinitions
Plusieurs mod`eles ont ´et´e d´evelopp´es pour ´etudier les algorithmes parall`eles.
Peut-ˆetre que le plus pr´edominant en algorithmique parall`ele est le mod`ele des
machines PRAM (Parallel Random Access Machine), construit `a partir du mo-
d`ele RAM.
Dans le mod`ele PRAM diff´erentes machines, ou processeurs, interagissent de
fa¸con synchrone par l’interm´ediaire d’une m´emoire partag´ee.
4CHAPITRE 10. COMPLEXIT ´
E PARALL `
ELE
Chaque processeur correspond `a une machine RAM, qui poss`ede comme
toute machine RAM, une m´emoire, c’est-`a-dire des registres, en nombre non-
born´e. Chaque processeur peut effectuer toutes les op´erations usuelles des ma-
chines RAM sur sa propre m´emoire, et ce, comme dans le mod`ele RAM en temps
unit´e. Chaque processeur n’a pas acc`es aux registres de la m´emoire locale d’un
autre processeur.
Par contre, il y a aussi une m´emoire globale, partag´ee : tous les processeurs
ont acc`es en lecture et en ´ecriture `a cette m´emoire partag´ee. L’acc`es par un
processeur `a un emplacement m´emoire partag´e se fait l`a aussi en temps unit´e.
Si l’on pr´ef`ere, une machine PRAM peut se d´efinir de la fa¸con suivante :
efinition 10.3 Une machine PRAM (Parallel Random Access Machine) cor-
respond `a un suite Π1,Π2,· · · ,Πqde programmes, chaque programme Πk´etant
du type
ctl state 0
repeat
seq
<i n s t r u c t i o n s >
endseq
until ctl state =qa
o`u <instructions>est une suite finie d’instructions de l’un des types suivants
(c’est-`a-dire une instruction d’une machine RAM au sens de la d´efinition 10.1)
1. xk,i 0
2. xk,i xk,i + 1
3. xk,i xk,i 1
4. xk,i xk,j
5. xk,i xk,xk,j
6. xk,xk,i xk,j
7. if xk,i = 0 then ctl state jelse ctl state j0
ou de l’un des types suivants (c’est-`a-dire une instruction d’acc`es en lecture ou
´ecriture `a la m´emoire partag´ee)
1. xk,i x0,j
2. xk,i x0,xk,j
3. x0,i xk,j
4. x0,xk,i xk,j
Ici chaque variable est doublement index´ee : xk,i d´esigne la variable locale nu-
m´ero idu programme k.x0,i d´esigne la variable globale num´ero i. Bien entendu
chaque variable ctl state est locale.
Le nombre qde RAM dans le programme PRAM est suppos´e ne pas ˆetre
une constante, mais une fonction q(n)de la taille nde l’entr´ee. Pour ´eviter les
10.2. LE MOD `
ELE PRAM 5
cas pathologiques1, on se restreint au cas L-uniforme, c’est-`a-dire au cas o`u la
fonction qui `a 1nassocie q(n)et les programmes Π1,Π2,· · · ,Πq(n)est calculable
en espace logarithmique.
Une configuration X= (X1,· · · , Xq)d’un programme PRAM est la donn´ee
des ´etats de chacun des programmes (au sens du postulat 1, c’est-`a-dire une
structure qui code l’´etat des registres de chacun des programmes). On passe d’une
configuration X`a sa configuration successeur X0= (X0
1,· · · , X0
q)si chacun des
X0
kest le successeur imm´ediat de Xkdans le programme k: autrement dit, en
effectuant simultan´ement une ´etape de chaque programme.
Un programme PRAM termine si chacun des programmes Πktermine, c’est-
`a-dire a sa variable ctl state =qa. On lit le r´esultat ´eventuel d’un calcul dans
la m´emoire globale.
Remarque 10.4 Une machine PRAM avec un seul processeur (q= 1) corres-
pond `a une machine RAM.
Remarque 10.5 On mesure la taille des entr´ees comme dans le mod`ele RAM
pour que le temps polynomial corresponde bien au temps polynomial dans le cas
o`u il y n’y a qu’un nombre born´e de processeurs.
Cependant, il faut pr´eciser comment sont g´er´es les ´eventuels conflits en lec-
ture ou ´ecriture dans la m´emoire partag´ee.
Cela donne naissance `a plusieurs variantes du mod`ele :
efinition 10.4 1. Le mod`ele CREW (Concurrent Read Exclusive Write)
est le mod`ele le plus usuel : le nombre de lectures simultan´ees d’un mˆeme
emplacement m´emoire partag´e n’est pas born´e. Par contre, l’acc`es en ´ecri-
ture d’un emplacement m´emoire partag´e n’est possible que par un proces-
seur `a la fois.
2. Le mod`ele CRCW (Concurrent Read Concurrent Write) est le mod`ele
le plus puissant : le nombre d’acc`es en lecture et en ´ecriture d’un mˆeme
emplacement m´emoire n’est pas born´e. Il y a alors plusieurs variantes pour
d´eterminer le r´esultat d’une ´ecriture simultan´ee :
– le mode consistant : on impose que tous les processeurs qui ´ecrivent
simultan´ement doivent ´ecrire la mˆeme valeur.
le mode arbitraire : on prend la valeur d’un processeur qui ´ecrit,
le mode prioritaire : on prend la valeur du processeur d’indice le plus
petit.
le mode fusion : on effectue au vol le calcul d’une fonction commutative
et associative des diff´erentes valeurs ´ecrites, comme un ET logique, ou
un OU logique, ou un max, etc.
3. Le mod`ele EREW (Exclusive Read Exclusive Write) est le mod`ele le plus
restrictif, mais peut-ˆetre aussi le plus proche des machines r´eelles : les
acc`es simultan´ees en lecture et ´ecriture ne sont pas autoris´es.
1Par exemple, o`u l’on utiliserait un nombre de processeurs non-calculable, et o`u l’on utili-
serait cette information.
1 / 21 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !