Programation Parallèle et Distribuée

18
Programation Parallèle et Distribuée PhD Marco Antonio Ramos Corchado

description

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 - PowerPoint PPT Presentation

Transcript of Programation Parallèle et Distribuée

Page 1: Programation Parallèle et Distribuée

Programation Parallèle et Distribuée

PhD Marco Antonio Ramos Corchado

Page 2: Programation Parallèle et Distribuée

• 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)

Page 3: Programation Parallèle et Distribuée

• 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

Page 4: Programation Parallèle et Distribuée

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

}

Page 5: Programation Parallèle et Distribuée

• 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.

Page 6: Programation Parallèle et Distribuée

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.

Page 7: Programation Parallèle et Distribuée

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

} }

}

Page 8: Programation Parallèle et Distribuée

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])

Page 9: Programation Parallèle et Distribuée

Exercice

Calculer les sommes partielles de la suite d’entiers (ti )i .

Page 10: Programation Parallèle et Distribuée

Comparaisons des PRAMs Pour pouvoir mieux choisir il est important de

comparer les différents modèles en termes de • Calculabilité • Complexité

Page 11: Programation Parallèle et Distribuée

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]

Page 12: Programation Parallèle et Distribuée

• 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.

Page 13: Programation Parallèle et Distribuée

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

Page 14: Programation Parallèle et Distribuée

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 ...

Page 15: Programation Parallèle et Distribuée

Comparaison des Modèles Les modèles EREW, CREW er CRCW ne sont

donc pas équivalents. Peut-on mieux les comparer, les hiérarchiser ?

Page 16: Programation Parallèle et Distribuée

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

Page 17: Programation Parallèle et Distribuée

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.

Page 18: Programation Parallèle et Distribuée