Algorytmy dla maszyny PRAM

Transkrypt

Algorytmy dla maszyny PRAM
Algorytmy dla maszyny PRAM
Daniel Golubiewski
Instytut Informatyki
21 listopada 2015
Daniel Golubiewski
Algorytmy dla maszyny PRAM
PRAM
Podstawowym modelem służącym do badań algorytmów
równoległych jest maszyna typu PRAM. Jej głównymi
składnikami są globalna pamięć oraz zbiór procesorów. Do
rozważań teoretycznych przyjmuje się, że zbiór procesorów
oraz zasoby pamięci są potencjalnie nieskończone, jednak w
skończonych obliczeniach wykorzystuje się jedynie skończony
ich podzbiór.
Daniel Golubiewski
Algorytmy dla maszyny PRAM
Cechy maszyny:
1
Wszystkie procesory są taktowane jednym zegarem
systemowym. PRAM może być maszyną typu SIMD2a lub
MIMD3b , przy czym standardowe algorytmy są
projektowane na pierwszy z wymienionych typów.
Oznacza to, że w danej chwili wszystkie procesory
wykonują dokładnie taki sam program operując na
różnych danych lub pozostają w stanie oczekiwania. W
implementacjach sprzętowych to założenie zazwyczaj jest
realizowane programowo, ponieważ nie można zapewnić
synchronizacji lepszej niż na poziomie pojedynczego
rozkazu procesora.
a
b
ang. Single Instruction, Multiple Data
ang. Multiple Instruction, Multiple Data
Daniel Golubiewski
Algorytmy dla maszyny PRAM
Cechy maszyny:
2
Każdy procesor jest identyfikowany przez swój numer,
zwany także indeksem. Jest on unikatowy w skali danej
maszyny. Jest on także dostępny dla kodu programu
(najczęściej jako stała) i na jego podstawie zazwyczaj
określa się zakres prac przewidzianych dla danego
procesora.
3
Każdy procesor posiada własną pamięć podręczną o
dostępie swobodnym.
Daniel Golubiewski
Algorytmy dla maszyny PRAM
Cechy maszyny:
4
Wszystkie procesory mogą komunikować się bezpośrednio
z globalną pamięcią dzieloną dostępną dla wszystkich
jednostek. W zależności od potrzeb zapewnia się przy tym
możliwość jednoczesnego dostępu do tej samej komórki
pamięci (przy zapisie wprowadza się strategie określające,
które dane zostaną w takiej sytuacji zapisane) lub np.
zabrania jednoczesnego odczytu i/lub zapisu przez kilka
procesorów (maszyny typu EREW , CREW , CRCW ).
Daniel Golubiewski
Algorytmy dla maszyny PRAM
Podstawowe oznaczenia:
1
EREW – algorytmy z wyłącznym odczytem i wyłącznym
zapisem,
2
CREW – algorytmy z jednoczesnym odczytem i
wyłącznym zapisem,
3
ERCW – algorytmy z wyłącznym odczytem i
jednoczesnym zapisem,
4
CRCW – algorytmy z jednoczesnym odczytem i
jednoczesnym zapisem.
Daniel Golubiewski
Algorytmy dla maszyny PRAM
Zalety:
1
Istnieje wiele technik i metod pozwalających rozwiązywać
problemy pochodzące z różnych klas algorytmów.
2
Nie ma potrzeby zajmowania się problemami
synchronizacji i komunikacji. Pozwala to na
skoncentrowanie się na istotnych elementach algorytmu.
3
W prosty sposób można ocenić efektywność danego
algorytmu.
Daniel Golubiewski
Algorytmy dla maszyny PRAM
Przykłady Algorymtów Równoległych:
W przypadku dostępu CRCW dla PRAM można założyć, że
procesory, które wpisują jednocześnie do tej samej komórki
pamięci, to wpisują tą samą wartość. Na przykład jeśli
output=0, to wówczas następujący algorytm obliczy logiczną
alternatywę w czasie stałym na maszynie CRCW PRAM:
for each 1 ¬ i ¬ n do in parallel
if A[i]=1 then output =1;
Daniel Golubiewski
Algorytmy dla maszyny PRAM
Przykłady Algorymtów Równoległych:
Innym przykładem dla dostępu typu CREW jest liczenie
kolejnych wierszy trójkąta Pascala. Początkowo zakłada się, iż
A=[0;0;0;0;0;1]:
A[i]:=A[i]+A[i+1];
for each 1 ¬ i ¬ 5 do in parallel
A[i]:=A[i]+A[i+1];
0
0
0
0
0
0
1
0
0
0
0
0
1
5
0
0
0
0
1
4
10
Daniel Golubiewski
0
0
0
1
3
6
10
0
0
1
2
3
4
5
1
1
1
1
1
1
1
Algorytmy dla maszyny PRAM
Przykłady Algorymtów Równoległych:
Następujący algorytm oblicza pierwszą pozycję najmniejszego
elementu w tablicy C[1...n] w czasie O(1).
for each 1 ¬ i ¬ n do in parallel
M[i]:=0;
for each 1 ¬ i, j ¬ n do in parallel
if i != j and C[i] ¬ C[j] then M[i]:=1;
for each 1 ¬ i ¬ n do in parallel
if M[i]=0 then output:=i;
Algorytm korzysta z O(n2 ) procesorów.
Daniel Golubiewski
Algorytmy dla maszyny PRAM
Algorytm List-Rank
Daniel Golubiewski
Algorytmy dla maszyny PRAM
Algorytm List-Rank
Daniel Golubiewski
Algorytmy dla maszyny PRAM
Algorytm Fast-Max
Daniel Golubiewski
Algorytmy dla maszyny PRAM
Koniec
Dziękuję za uwagę :)
Daniel Golubiewski
Algorytmy dla maszyny PRAM