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 (x i ) i une suite (finie) de nombres, ⊗ une opération associative. Comment calculer en parallèle la suite (y i ) i définie par récurrence : – y 1 = x 1 – y k = y k−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 log 2 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 (t i ) 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 max i (T (i)). On utilise une machine à n 2 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 : log 2 n Les accès concurrents sur une valeur par n processeurs ne peuvent se faire qu’en log 2 n étapes.
Autre Exemple Recherche de l’appartenance d’une valeur e à une suite d’éléments distincts (e i ) 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 e i é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 C seq la complexité du meilleur algorithme séquentiel connu pour le résoudre. Definition Le facteur d’accélération est le rapport : C seq / C Definition L’efficacité d’un algorithme PRAM sur n processeurs est d´efinie par eff = C seq / 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.