Está en la página 1de 3

Universitatea Tehnic a ,,Gheorghe Asachi din Ias i Facultatea de Automatic as i Calculatoare

Dept.: Calculatoare s i Tehnologia Informat iei an IV Studii universitare de licent a Algoritmi Paraleli s i Distribuit i

Laborator nr. 7 Sortare paralel a

an univ. 2013 2014

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.

Universitatea Tehnic a ,,Gheorghe Asachi din Ias i Facultatea de Automatic as i Calculatoare

Dept.: Calculatoare s i Tehnologia Informat iei an IV Studii universitare de licent a Algoritmi Paraleli s i Distribuit i

Figura 1: Exemplu de execut ie a Algoritmului 1 pentru secvent a 2,6,3,8

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.

de 8 elemente Figura 2: Exemplu de execut ie a Algoritmului 2 pentru o secvent a

Aplicat ii

Implementat i Algoritmul 1 utiliz and OpenMP s i Algoritmul 2 utiliz and OpenMP s i MPI.

Universitatea Tehnic a ,,Gheorghe Asachi din Ias i Facultatea de Automatic as i Calculatoare

Dept.: Calculatoare s i Tehnologia Informat iei an IV Studii universitare de licent a Algoritmi Paraleli s i Distribuit i

Algoritmul 2 Algoritmul Impar-Par pseudocod


1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:

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

También podría gustarte