Programation Parallèle et Distribuée

publicité
Programation Parallèle et
Distribuée
PhD Marco Antonio Ramos Corchado
• Machines PRAM
Parallel Random Access Machine
Il s’agit d’une “machine parallèle abstraite”
– Un suite d’instructions à effectuer
– Un pointeur d’instruction
– Une mémoire partagée
– Une suite (non bornée) de processeurs (parallèles)
• Communication
Elle se fait via la mémoire partagée:
– Le coût d’accès à une emplacement mémoire est
contstant
– Modes d’accès
• EREW (exclusive read exclusive write)
• CREW (concurrent read exclusive write)
• CRCW (concurrent read concurrent write)
– Mode arbitraire
– Mode consistant
– Mode assiciation
Eléments du langage de Programation
• Pseudo-langege simple
conditioinnels, 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
}
• Remarques Sémantiques
Les instrutions peuvent donc être paramétrées par
i, le numéro du processeur.
Une boucle parallèle
Pour chaque proc i en parallele
x[i] = y [i]
Est réalisée en effectuant (en parallèle)d’abord
toutes les lectures, puis tout les écritures.
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.
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
}
}
}
Complexité
L’algorithme s’exécute en log2 n 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])
Exercice
Calculer les sommes partielles de la suite
d’entiers (ti )i .
Comparaisons des PRAMs
Pour pouvoir mieux choisir il est important de
comparer les différents modèles en termes de
• Calculabilité
• Complexité
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]
•
•
•
•
Exemple – Complexité
CRCW (mode consistant) : constant
CREW et EREW : log2 n
Les accès concurrents sur une valeur par n
processeurs ne peuvent se faire qu’en log2 n
étapes.
Autre Exemple
Recherche de l’appartenance d’une valeur e à une suite
d’éléments distincts (ei )i .
L’algorithme suivant résoud 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
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 ...
Comparaison des Modèles
Les modèles EREW, CREW er CRCW ne sont donc
pas équivalents.
Peut-on mieux les comparer, les hiérarchiser ?
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.
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 : Cseq / C
Definition
L’efficacité d’un algorithme PRAM sur n processeurs est d´efinie par
eff = Cseq / n * C
Théeorèmes de comparaison
Theorem
Tout algorithme sur une machine PRAM CRCW
mode consistant `a p processeurs ne peut être
O(log n) fois plus rapide que le meilleur
algorithme (pour le même problème) sur une
machine EREW `a p processeurs.
Téléchargement