Machines PRAM

publicité
Machines PRAM
Machines PRAM
Arnaud Labourel
Courriel : [email protected]
Université de Provence
2 février 2012
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Systèmes Parallèles
Problème
Découper un gros problème en de nombreux petits
problèmes :
Processeur multi-cœur
Stations multiprocesseurs
Grille de calculs
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Modèle PRAM
Parallel Random Access Machine
Il s’agit d’une “machine parallèle abstraite” :
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Modèle PRAM
Parallel Random Access Machine
Il s’agit d’une “machine parallèle abstraite” :
une suite d’instructions à effectuer
un pointeur d’instruction
une mémoire partagée par l’ensemble des
processeurs
une suite (non bornée) de processeurs
(parallèles)
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Modèle PRAM
Caractéristiques :
Synchrone : tous les processeurs exécutent la
même opération au même moment.
Déterministe : une seule exécution possible.
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Communication
Elle se fait via la mémoire partagée :
le coût d’accès à un emplacement mémoire est
constant
Modes d’accès
EREW (exclusive read exclusive write)
CREW (concurrent read exclusive write)
CRCW (concurrent read concurrent write)
mode arbitraire
mode consistant
mode association
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
EREW
Definition
exclusive read exclusive write (EREW) :
Seul un processeur peut lire et écrire à un moment
donné sur une case donnée de la mémoire partagée.
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
CREW
Definition
exclusive read exclusive write (CREW) :
plusieurs processeurs peuvent lire en même temps
une même case, par contre, un seul à la fois peut y
écrire.
C’est un modèle proche des machines réelles (et de
ce que l’on a vu à propos des threads JAVA).
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
CREW
Definition
Concurrent Read Concurrent Write (CRCW)
Plusieurs processeurs peuvent lire ou écrire en même
temps sur la même case de la mémoire partagée.
mode consistant : tous les processeurs qui
écrivent en même temps sur la même case
écrivent la même valeur.
mode arbitraire : c’est la valeur du dernier
processeur qui écrit qui est prise en compte.
mode fusion : une fonction associative
(max,somme,...), est appliquée à toutes les
écritures simultanées sur une case donnée.
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Eléments du Langage de Programmation
pseudo-langage simple
conditionnels, boucles, tableaux.
toutes les variables sont partagées par défaut.
itérateur parallèle
pourchaque proc i enparallele
pourchaque proc i enparallele {
x[i] = 2*i
}
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Remarques Sémantiques
Les instructions peuvent donc être paramétrées par
i, le numéro du processeur.
Une boucle parallèle
pourchaque proc i en parallele
x[i] = y[i]
est réalisée en effectuant (en parallèle) d’abord
toutes les lectures, puis toutes les écritures.
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Technique de Saut de Pointeur
Problème Générique:
Soit (xi )i une suite (finie) de nombres, ⊗ une
opération associative.
Comment calculer en parallèle la suite (yi )i définie
par récurrence:
y1 = x1
yk = yk−1 ⊗ xk
On va utiliser une PRAM avec autant de
processeurs que de valeurs dans nos suites, et la
technique du saut de pointeur.
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Algorithme Parallèle
pourchaque proc i en parallele {
y[i] = x[i]
tantque ( il existe proc i tq next[i] != NULL ) {
si ( next[i] != NULL ) {
y[next[i]] = op(y[i], y[next[i]])
next[i] = next[next[i]] // saut de pointeur
}
}
}
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Exécution
P1
(1, 1)
P1
(1, 1)
P1
(1, 1)
P1
(1, 1)
P2
(2, 2)
P2
(1, 2)
P2
(1, 2)
P2
(1, 2)
P3
(3, 3)
P3
(2, 3)
P3
(1, 3)
P3
(1, 3)
Arnaud Labourel, [email protected]
P4
(4, 4)
P5
(5, 5)
P4
(3, 4)
(4, 5)
Machines PRAM
P6
(5, 6)
P5
(2, 5)
P4
(1, 4)
(6, 6)
P5
P4
(1, 4)
P6
P6
(3, 6)
P5
(1, 5)
P6
(1, 6)
Machines PRAM
Complexité
L’algorithme s’exécute en blog2 nc itérations :
CREW : temps logarithmique
EREW : aussi logarithmqiue en transformant
y[next[i]] = op(y[i], y[next[i]])
en
temp[i] = y[next[i]])
y[next[i]] = op(y[i],temp[i])
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Comparaisons des PRAMs
Pour pouvoir mieux choisir il est important de
comparer les différents modèles en termes de
calculabilité
complexité
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Exemple – Calcul du Maximum
On recherche maxi (T (i)).
On utilise une machine à n2 processeurs. Chaque
processeur (i, j) accèdera à T [i] et T [j]. On utilise
de plus un tableau de booléen auxiliaire m(i).
pourchaque 1 < i < n en parallele
m[i]=TRUE
pourchaque 1< i,j<n en parallele
if ( T[i] < T[j])
m[i] = FALSE
pourchaque 1 < i < n en parallele
if ( m[i] = TRUE )
max = T[i]
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Exemple – Complexité
CRCW (mode consistant): constant
CREW et EREW : blog2 nc
Les accès concurrents sur une valeur par n
processeurs ne peuvent se faire qu’en blog2 nc
étapes.
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Autre Exemple
Recherche de l’appartenance d’une valeur e à une
suite d’éléments distincts (ei )i .
L’algorithme suivant résout le problème en temps
constant sur une PRAM à n processeurs. Le
processeur i accède à e[i].
res = FALSE
pourchaque 0 < i < n en parallele
si ( e[i] == e )
res = TRUE
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Autre Exemple – Complexité
CREW : les ei étant distincts, une seule
écriture se fera éventuellement sur res.
EREW : la valeur de e doit être dupliqué n fois.
Au mieux log n étapes par dichotomie ...
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Comparaison des Modèles
Les modèles EREW, CREW et CRCW ne sont donc
pas équivalents.
Peut-on mieux les comparer, les hiérarchiser ?
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Complexité et Efficacité
Definition
La complexité C d’un algorithme PRAM est le
nombre d’étapes (parallèles) nécessaires à son
exécution.
NB. Cette complexité dépend de la taille de l’entrée
et du nombre de processeurs.
La complexité totale d’un algorithme PRAM est le
nombre total d’opérations. C’est la complexité
qu’on obtiendrait avec un seul processeur.
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Complexité et Efficacité
C : complexité d’un algorithme PRAM
Etant donné un problème, on note Cseq la
complexité du meilleur algorithme séquentiel connu
pour le résoudre.
Definition
Le facteur d’accélération est le rapport:
Definition
L’efficacité d’un algorithme PRAM sur n
Cseq
processeurs est définie par eff = n×C
.
Arnaud Labourel, [email protected]
Machines PRAM
Cseq
C .
Machines PRAM
Théorèmes de comparaison
Théorème
Tout algorithme sur une machine PRAM
CRCW mode consistant à p processeurs ne peut
être O(log p) fois plus rapide que le meilleur
algorithme (pour le même problème) sur une
machine EREW à p processeurs.
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Preuve
Soit un algorithme CRCW à p processeurs.
pour émuler les accès CW en EW,
On va choisir quelle écriture est possible
On utilise un tableau auxiliaire A
Principe
pour chaque écriture de Pi de la valeur x à
l’adresse a
=⇒ A[i] = (a, x)
Par algorithme de Cole, on trie A selon la première
coordonnée (en O(log p))
chaque processeur i regarde A[i − 1] = (a0 , x 0 ) puis
A[i] = (a00 , x 00 )
si a00 6= a0 , on écrit x 00 en a00
Arnaud Labourel, [email protected]
Machines PRAM
Machines PRAM
Exemple de simulation de CRCW avec
EREW
P0
12 8
P1
P2
43 29
P0 → (29, 43) = A[0]
(8, 12) → P0
P1 → (8, 12) = A[1]
(8, 12)
P2 → (29, 43) = A[2]
tri
P1
(29, 43) → P2
P3
P3 → (29, 43) = A[3]
(29, 43)
P3
P4
P4 → (92, 26) = A[4]
(29, 43)
P4
P5 → (8, 12) = A[5]
(92, 26) → P5
P5
26 92
mode CRCW
Arnaud Labourel, [email protected]
mode EREW
Machines PRAM
Machines PRAM
Théorème de Brent
Théorème
Soit A un algorithme PRAM s’exécutant en t étapes
avec un nombre total d’opérations m sur une
PRAM. On peut simuler A sur une machine PRAM
de même type à p processeurs en O( mp + t) étapes.
Preuve:
A
i, A effectue mi opérations avec
Pl’étape
t
i=1 mi = m. On simule
l ml’étape i avec p
processeurs en temps mpi ≤ mpi + 1. On obtient le
résultat en sommant sur les t étapes.
Arnaud Labourel, [email protected]
Machines PRAM
Téléchargement