Machines PRAM
Transcription
Machines PRAM
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