Post on 19-Jan-2016
description
Programation Parallèle et Distribuée
PhD Marco Antonio Ramos Corchado
• Machines PRAMParallel Random Access MachineIl 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)
• CommunicationElle 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èlePour 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 PointeurProblè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.