TD n◦7 — MIM 2eann´ee Algorithmique Parall`ele 2003–2004
.Question 3, page 1
Pla¸cons-nous dans le pire des cas pour le mod`ele EREW, c’est-`a-dire le cas o`u la forˆet n’est constitu´ee
que d’un seul arbre, et consid´erons le nombre de processeurs qui peuvent apprendre qui est la racine `a
chaque ´etape. Dans le mod`ele EREW, le nombre de processeurs ayant acc`es `a l’information ne peut que
doubler `a chaque ´etape (un seul processeur peut lire une case m´emoire o`u est d´etenue l’information).
Dans le cas d’une forˆet `a un seul arbre, un processeur au plus connaˆıt la racine au d´epart, et il faut donc
O(log n) ´etapes pour propager l’information `a tous les processeurs.
.Question 4, page 1
A l’´etape i,Aeffectue m(i) op´erations, avec Pn
i=1 m(i) = m. On simule l’´etape iavec pprocesseurs
en temps lm(i)
pm6m(i)
p+ 1. On obtient le r´esultat en sommant sur les ´etapes.
.Question 5, page 1
On peut agencer ce calcul en temps O(log n) `a l’aide d’un arbre binaire : `a l’´etape 1, on proc`ede paire
par paire avec dn
2eprocesseurs, puis on continue avec les maximum des paires deux par deux, etc. C’est `a
la premi`ere ´etape qu’on a besoin du plus grand nombre de processeurs, donc il en faut O(n). Formellement,
si n= 2m, si le tableau Aest de taille 2net si on veut calculer le maximum des n´el´ements de Aen
position A[n], A[n+ 1], . . . , A[2n−1], on obtient le r´esultat dans A[1] apr`es ex´ecution de l’algorithme :
CALCUL MAXIMUM(A, n)
1: Pour k=m−1jusqu’`a 0:
2: Pour tout j∈J0,2k−1Ken parall`ele :
3: A[j]←max(A[2j], A[2j+ 1])
Que se passe-t-il si on dispose de moins de O(n) processeurs ? Le th´eor`eme de Brent nous dit qu’avec
pprocesseurs, on peut simuler l’algorithme pr´ec´edent en temps On
p+ log n(en effet, le nombre d’op´e-
rations total est m=n−1). Si on choisit p=n
log n, on obtient le mˆeme temps d’ex´ecution, mais avec
moins de processeurs !
.Question 6, page 1
Avec p0processeurs, on simule chaque ´etape de Aen temps proportionnel `a lp
p0m. On obtient un temps
total de Op
p0.t=Ot.p
p0.
.Question 7, page 2
L’analyse de l’exemple montre bien l’effet de la proc´edure SPLIT : les ´el´ements du vecteur Adont la
composante de Flags vaut 0 sont regroup´es au d´ebut du vecteur Result, en conservant leur ordre initial.
De mˆeme, les ´el´ements du vecteur Adont la composante de FLAGS vaut 1 sont regroup´es `a la fin du
vecteur Result, en conservant leur ordre initial.
Avec O(n) processeurs, les op´erations SCAN et PRESCAN ont un coˆut O(log n), et les autres op´erations
ont un coˆut constant, donc la proc´edure SPLIT toute enti`ere a un coˆut O(log n).
.Question 8, page 2
On commence avec l’exemple pour voir ce que fait cette myst´erieuse proc´edure :
1. A=[57314272]
bit(0) =[11110010]
A←SPLIT(A,bit(0))=[42257317]
bit(1) =[01101101]
A←SPLIT(A,bit(1))=[45122737]
bit(2) =[11000101]
A←SPLIT(A,bit(2))=[12234577]
A.Legrand , Y.Robert