Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Dept.: Calculatoare s i Tehnologia Informat iei an IV Studii universitare de licent a Algoritmi Paraleli s i Distribuit i
Algoritmul Muller-Preparata
A[0 . . . n 1] s i P[0 . . . n 1] dou a tablouri de dimensiune n. R[0 . . . 2n 2, 0 . . . n 1] este un tablou de dimensiune (2n 1)xn; prin R[ j] se noteaz a coloana j.
Notat ii:
Premise: datele de intrare sunt memorate n tabloul A[0 . . . n 1]; pozit iile relative vor memorate n tabloul R, n liniile n 1, n, . . . , 2n 2; pozit iile nale vor ret inute n tabloul P. Algoritmul 1 Algoritmul Muller-Preparata pseudocod
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
function S ORTARE PARALELA M ULLER P REPARATA(A, R, n) for i, j : 0 i, j n 1 par do if A[i] < A[ j] then R[i + n 1, j] = 1 else R[i + n 1, j] = 0 end if end for for j : 0 j n 1 par do C OMPRIM ITER(R[ j], +) P[ j] = R[0, j] end for for j : 0 j n 1 par do A[P[ j]] = A[ j] end for end function Un exemplu de rulare al Algoritmului 1 poate observat n Figura 1.
Dept.: Calculatoare s i Tehnologia Informat iei an IV Studii universitare de licent a Algoritmi Paraleli s i Distribuit i
Algoritmul Impar-par
Premise: init ial, o unitate de procesare pi memoreaz a elementul ai n registrul r. Un exemplu de rulare al Algoritmului 2 poate observat n Figura 2.
Aplicat ii
Implementat i Algoritmul 1 utiliz and OpenMP s i Algoritmul 2 utiliz and OpenMP s i MPI.
Dept.: Calculatoare s i Tehnologia Informat iei an IV Studii universitare de licent a Algoritmi Paraleli s i Distribuit i
function S ORTARE PARALELA I MPAR PAR( pi , r, n) for f aza = 1 to n do if f aza este impara then if i este par then trimite valoarea memorata in r catre pi+1 primeste de la pi+1 o valoare v r = min(r, v) else trimite valoarea memorata in r catre pi1 primeste de la pi1 o valoare v r = max(r, v) end if else if i este impar then trimite valoarea memorata in r catre pi+1 primeste de la pi+1 o valoare v r = min(r, v) else trimite valoarea memorata in r catre pi1 primeste de la pi1 o valoare v r = max(r, v) end if end if end for end function