wykłady z przetwarzania równoległego i współbieznego
Post on 11-Jan-2017
227 Views
Preview:
TRANSCRIPT
Strona 1 z 51
Politechnika Częstochowska
Wydział InŜynierii Mechanicznej i Informatyki
Instytut Informatyki Teoretycznej i Stosowanej
Przetwarzanie WspółbieŜne i Równoległe
prof. Roman Wyrzykowski
Strona 2 z 51
Wykład 1
Trzy przykładowe zadania i czas jaki zajmie ich wykonanie sekwencyjne
Wykonanie trzech zadań sekwencyjnie
Wykonanie trzech zadań równoległe. PoniewaŜ zadania wykonują się równolegle na jednym procesorze, kaŜde z zadań będzie wykonywać się dłuŜej, przykładowo 110% czasu wykonywania na jednym procesorze sekwencyjnie.
Wykonanie trzech zadań równoległe
Obliczenia
Edytor tekstu
Drukowanie
11 jednostek procesora
11 jednostek procesora
11 jednostek procesora
0 11
Obliczenia
Edytor tekstu
Drukowanie (11+11+11)/3=11
0 10 20 30
Obliczenia Edytor tekstu Drukowanie
(10+20+30)/3=20
Obliczenia
Edytor tekstu
Drukowanie
10 jednostek procesora
10 jednostek procesora
10 jednostek procesora
Równoległość – szybsze wykonywanie jednego duŜego zadania poprzez rozbicie go na kilka podzadań i wykonanie ich równolegle na więcej niŜ jednym komputerze.
WspółbieŜność – zmniejsza czas reakcji systemu na Ŝądanie obsługi danego zadania ze strony jednego uŜytkownika. Zadania wykonywane są na jednym procesorze. Wykorzystuje się to, Ŝe róŜne zadania maja róŜne wymagania odnośnie zasobów komputera.
Strona 3 z 51
Podział procesorów
RISC (Reduced Instruction Set Computer) CISC (Complex Instruction Set Computer) • duŜo instrukcji • łatwość programowania
• większa wydajność • jednostka sterująca moŜe być
prostsza, mniejsza a to miejsce moŜna wykorzystać na pamięć
• moŜna zwiększyć częstotliwość • prościej zaimplementować potok
Serwer Klienci
Klient – serwer
Serwer Serwery
p2p = serwer – serwer = równy – równy
Wykonywanie rozproszone – wykonywanie obliczeń w sieci komputerowej
Potok – zadanie dzielimy na podzadania. Podzadania wykonywane są na osobnych jednostkach przetwarzających. RóŜne jednostki przetwarzające mogę pracować równolegle.
Strona 4 z 51
Przykładem ilustrującym działanie potoku moŜe być linia montaŜowa produkująca samochody. ZłoŜone zadanie jakim jest produkowanie samochodu zostało podzielone na mniejsze zadania. KaŜde takie małe zadanie wykonywane jest w innym miejscu linii produkcyjnej. W związku z tym, na jednej linii produkcyjnej składanych jest jednocześnie kilka samochodów co podnosi wydajność produkcji.
∆T
czas 1
1
1
1
1
1
2
2
2
2
2
2
3
3
3
3
3
3
Zadanie 3 zaleŜy od zadania 1, zadanie trzecie moŜe rozpocząć się dopiero gdy zadanie 1 się skończy
jednostki sterujące
T1
Przykład przetwarzania trzech zadań na 6 stopniowym potoku
FLOPS – FLoating Operations Per Second – ilość operacji zmiennoprzecinkowych na sekundę
Wzrost w ydajności na rok
66%
11%
0%
10%
20%
30%
40%
50%
60%
70%
Procesor Pamięć
Prawo Moore’a – wydajność procesorów zwiększa się dwukrotnie co 18 miesięcy
Strona 5 z 51
Wykład 2
Skupimy się na architekturze MIMD, czyli Multiple Instruction Multiple Data.
1. Systemy z pamięcią rozproszoną. MULTIKOMPUTER (słabo związany)
Zalety
Skalowalność – wraz ze wzrostem liczby procesorów proporcjonalnie wzrasta wydajność
Wady
Trzeba bezpośrednio programować operacje komunikacyjne np. przesyłanie zmiennej lokalnej z jednej do drugiej pamięci.
2. Systemy z pamięcią współdzieloną. MULTIPROCESOR (silnie związany)
MoŜna polepszyć wydajność poprzez dołączenie do cache-u ($) zazwyczaj drugiego poziomu
Architektura pamięci
Disturbed Memory (Rozproszona)
Shared Memory (Współdzielona)
Sieć komunikacyjna
P M P M P M . . .
x
wada
x – przekazywana zmienna
Sieć komunikacyjna
P P P . . .
M M M . . .
Systemy z pamięcią współdzieloną to „SMP” bo procesy spełniają te same funkcje (w kaŜdym procesorze jest jądro systemu operacyjnego)
Strona 6 z 51
Zalety
Lepsza komunikacja. Wszystkie procesory mają dostęp do wspólnej pamięci. Wady
Niska skalowalność; Wąskie gardło w dostępie do pamięci współdzielonej.
ARCHITEKTURA Z PAMIĘCIĄ ROZPROSZONĄ Zastosowanie w klasycznych komputerach równoległych (MPP – Massive Parallel Processor czyli
Maszyny Masywnie Równoległe). Obecnie zastępowane są przez KLASTRY (Cluster), gdzie zamiast węzłów stosowane są normalne komputery dostępne na rynku. Architektura Klastra:
1) SOI – Wspólny obraz systemu
Sieć komunikacyjna
. . .
M M M . . .
P $
y
y’ P $ P $
Wszystkie procesory mają dostęp do pamięci, a zatem y jest dostępna dla wszystkich
procesorów. ZauwaŜmy na powyŜszym rysunku, Ŝe pierwszy procesor działa na y’, pozostałe na y. Zachodzi wówczas tutaj przekłamanie np. podczas obliczeń
Aplikacje
Środowisko programowania (SOI) 1
Oprogramowanie warstwy pośredniej 2
SO3
K4
SO
K
SO
K
SO
K
SAN 5, LAN 6, WAN 7
Zastosowanie cache-u znacznie polepsza wydajność systemu, jednakŜe występuje problem z jego spójnością tzw. NUMA – Non Uniform Memory Access – z niejednorodnym dostępem do pamięci.
Strona 7 z 51
2) Jest to tzw. Middleware np. NFS (Network File System) – wspólny system plików. Kilka dysków jest widziana jako jeden dysk.
3) SO – System Operacyjny 4) K – Komputer 5, 6, 7) objaśnione przy omówieniu sieci (patrz niŜej)
Szybciej realizują zadania tzw. tryb przetwarzania równoległego
krótki czas reakcji na Ŝądanie obsługi uŜytkownika oraz zabezpieczenie przed awariami
SIECI
SAN (5)
System Area Network
• Myrinet (szybka) • Infiniband
LAN (6)
Local Area Network
• Gigabit Ethernet
WAN (7)
Wide Area Network
• Gigabit Ethernet • ATM
MAN Metropolitan Area Network
• 10 Gigabit Ethernet np. PIONIER (na jej bazie
powstał CLUSTERIX)
GRIDY
System rozproszony w skali geograficznej połączony za pomocą sieci rozległej WAN i widziany jako jedna całość. CLUSTERIX to 12 klastrów lokalnych połączonych za pomocą sieci optycznej PIONIER z wykorzystaniem odpowiedniego oprogramowania. Więcej informacji na temat CLUSTERIXA moŜna znaleźć na stronie http://clusterix.pcz.pl/
KLASTRY
obliczeniowe (wysokiej wydajności)
wysokiej dostępności
Strona 8 z 51
Wykład 3
Sieci dynamiczne i sieci statyczne
a) Sieci statyczne
Topologia liniowa
Topologia siatka
Topologia pierścieniowa
Topologia drzewiasta
Strona 9 z 51
Hipersześcian 0 rzędu
Hipersześcian 1 rzędu
Hipersześcian 2 rzędu
Hipersześcian 3 rzędu
0
000
10
001
10 11
00 01
010 011
100 101
110 111
010 011
000 001
110 111
101 100
Funkcja XOR x y x XOR y 0 0 0 0 1 1 1 0 1 1 1 0
111
Dystans Hamminga
010101111
111
111
111
Strona 10 z 51
b) Sieci dynamiczne zawierają przełączniki
Magistrala
Cross Bar
MSN – Multi Step Network OMEGA (8x8)
out1
out2
in
out in
Rodzaje przełączników
BUS
Pamięć Pamięć Pamięć
Procesor Procesor Procesor
Procesor Procesor Procesor
Pamięć
Pamięć
Pamięć
Strona 11 z 51
Przełączników jest NN
2log2
000
001
010
011
100
101
110
111
000
001
010
011
100
101
110
111
011 000 011
0 - prosto
1 - odwrotnie
Funkcja XOR x y x XOR y 0 0 0 0 1 1 1 0 1 1 1 0
Strona 12 z 51
Wykład 4
• Algorytmy równoległe • Wskaźniki Czas realizacji Trealizacji algorytmu składa się z 3 składników:
� To – czas obliczenia � Tkom – czas komunikacji � Tidle – czas przestoju
WZÓR:
p – liczba procesorów
Sp (Speed-up) – Przyśpieszenie na procesorach
(czas realizacji na procesorach)
T1 – np. najszybszy algorytm sekwencyjny na
świecie
1<Sp≤p
0<Ep≤1
Prawo Amdahla
1
2
3
4
t
procesory
∑−
=
++=1
0
)(1 p
i
i
idle
i
kom
i
o TTTp
T
pT
TSp 1=
p
SpEp = )( ćefektywnoś
Ep
p
1
Sp
p
idealnie
Zjawisko super przyśpieszenia. Przyśpieszenie większe niŜ liczba procesorów
Strona 13 z 51
czyli 0, gdy p→∞
gdy p→∞ to
β=0.05 → Sp<20 β – nie jest stałe. Wraz ze wzrostem rozmiaru algorytmu β jest coraz mniejsze
ALGORYTM MNOśENIA MACIERZY i=0, M-1 j=0, N-1 Dla jednego Cij mamy 1 procesor M=N=K=4
– procesor a – wiersze b – kolumny
Wskaźniki efektywności:
∑−
=
=1
0
k
k
kjikij baC
M
K
K
N N
M=
x
część
sekw
ency
jna
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
β 1-β
pT
TSp 1=T1
p
TTTp
11
)1( ⋅−+⋅=
ββ
p
TT
TSp
11
1
)1( ⋅−+⋅
=β
β
β
1→Sp
N β
b0 b1 b2 b3
a0
a1
a2
a3
03
12 13 11
01 02
21 22 23
30 31 32 33
10
00
20
1 2 3 4
5
6
7
N-1(M-1) w ogólnym przypadku
najkrótsza droga pracy ostatniego procesora
N-1(M-1)
Strona 14 z 51
00 01 10 02 11 20 03 12 21 30 13 22 31 23 32 33
p
t 4 5 6 7 8 9 10
10 taktów
1 2 3
Tp=T16=10 taktów (równolegle na procesorach), a sekwencyjnie 64
a) przyśpieszenie
T1 = N3 = 43 = 64 operacje mnoŜenia z dodawaniem Tp przy p=16
Następne z opóźnieniem 1 taktu.
Procesor potrzebuje 4 takty
p=16
pT
TSp 1=
12
16
p
t 4 5 6 7 8 9 10 1 2 3
4,610
64==Sp
4,016
4,6===
p
SpEp
pT
T
⋅=
1
1ν
Strona 15 z 51
Wykład 5 Mamy macierz procesorów MxN
0
1
2
3
c00 c10 c20 c30
K/M taktów
5 taktów
a0
a1
a2
a3
M
N
a0
a1
b0
=
c00
c10
...
a3a2a1a0
A
sekwencyjnie
b0 b1 b2 b3
c0 c1 c2 c3
TN=(K·M+N-1)·To
TNxM=(T+M+K-2)·Top
(4x5) x (5x4) M K K N
Strona 16 z 51
Ziarnistość – stosunek czasu obliczeń do czasu komunikacji Algorytm dwuwymiarowy MxN
Nazwa Przepustowość ts β Fast Ethernet 100 Mb/s 50 µs 0,08 Gigabit Ethernet 1 Gb/s 50 µs 0,008 Myrinet 2,5 Gb/s 8 µs 0,0032 Infiniband 10 Gb/s 4 µs 0,0008 β – wynika z przepustowości sieci. Jest to odwrotność przepustowości sieci
ts – czas przesyłania komunikatu o zerowej długości np. Fast Ethernet, 100 Mb/s tj. 12,5 MB/s Zad. 1
MxN ZałoŜenie: N=M=K czas startu ts=0 β=0,008 (Gigabit Ethernet)
p
pT
TS 1=
n
NT
TS 1=
o
op
NTNMK
TMKNS
⋅−+⋅
⋅⋅⋅=
)1( 1−+⋅
⋅⋅=
NMK
MKNSN
NN
N
NN
NSN ≈
+=
⋅+=
1)1(
23
1=≈=N
NEE Np
k
o
T
TG =
3~ rTo
2~ rTKr
r
rG ~~
2
3
, , ,
,
opo TLT ⋅=czas operacji
liczba operacji
czas trwania
operacji
β⋅+= LtT sK
czas komunikacji
czas startu
t0=0
liczba przesłanych
danych
(przesyłanie bajtów)
czas przesłania
1 bajtu
wraz ze wzrostem r
wzrasta ziarnistość
s66
1008,0105,12
1 −⋅=⋅
=β
opo TNT ⋅=
(wiersz x kolumna) β⋅⋅⋅= 84 NTKwiersz wiersz
kolumna
kolumna
strzałki
na kaŜdej strzałce mamy N
elementów
64 słowa
bitowe
G2>G1
GG
Strona 17 z 51
ALGORYTM CANNONA Przekątna w Cannonie
MnoŜenie macierzy
po cyklicznym przesunięciu:
00 01
02
03
11 12
13 10
22 23
20
21
33 31
30
32
10
21
32
03
20
31
02
13
30
12
01
23
A
c03
00 11
22
33
x =
B C
a00 x b03 = c03
00 11
00 11
00
11 00
11 00 01
02
03
11 12
13 10
22 23
20
21
33 31
30
32
00 11
22
33
10
21
32
03
20
31
02
13
30
12
01
23
A B
c03
C
x =
a03 x b33 = c03
00 01 02 03
10 11 12 13
20 21 22 23
30 32 31 33
00
11
22
33
00 11
22
33
A B
k
o
T
TG =
β⋅⋅⋅
⋅=
84 N
TNG
op
ssTop µµτ 25,044 =⋅=⋅=
takt
128
1
832
2
32
2=
⋅=
⋅=
s
ssG
µ
µ
β
µ
Częstotliwość taktowania: 2GHz → 0,5 µs
Strona 18 z 51
A01 A00
A10 A11
50
100
50
50
100
B01 B00
B10 B11
50
C01 C00
C10 C11
X =
C00 = A00B00 + A01B10
B10 B00
B11 B01
A00
A10 11
01
10
00 A01
A11
C00 = A00B00 C00 = C00 + A01B10
Wykład 6 Ziarnistość: TO – czas obliczeń TK – czas komunikacji System komputerowy: Pojedyncze komputery:
I. ALGORYTM BLOKOWY (NATURALNY, ZWYKŁY) a) Mamy macierz 100x100 i procesory 2x2 Praca na blokach: Tyle bloków ile procesorów w macierzy C.
K
O
T
TG =
K
O
T
TG =
– duŜe
– małe
K
O
T
TG =
– obliczenia są małe, szybko robione
– komunikacja jest duŜa
Algorytmy, które mają duŜą ziarnistość (przede wszystkim algorytmy blokowe) pozwalają się uniezaleŜnić od rozmiaru zadania i ilości procesorów.
Strona 19 z 51
00
01
10
11
liczba operacji: 503
X =
A0
A1
A2
B0
B1
B2
34
34
32
C00
34 34 32
b) Zastosujmy większe bloki N=100
Policzmy ziarnistość
C
B (liczba bloków)
N
K
O
T
TG = B
B B
NN B =
opO TBT ⋅= 3
β⋅⋅⋅= 84 2BTK
l. bitów
ββ ⋅⋅=
⋅⋅⋅
⋅=
8484 2
3opop T
BB
TBG
Im większy blok tym lepsza ziarnistość (więcej obliczeń mniej komunikacji)
Strona 20 z 51
Przykład Mamy macierz 6x6 oraz mniejszą macierz procesorów 3x3
II. ALGORYTM CANNONA
c12 = a12b22 + a13b32
Operacje na blokach: C01 = A01 x B11
Drugi krok: Teraz po cyklicznym przesunięciu otrzymujemy
c12 = c12 + a14b42 + a15b52
Operacje na blokach: C01 = C01 + A02 x B21
12
A B C
X =
40 41
50 51
02 03
12 13
42 43
52 53
04 05
14 15
24 25
34 35
20 21
30 31
00 01
10 11
44 45
54 55
22 23
32 33
40 41
50 51
02 03
12 13
42 43
52 53
04 05
14 15
24 25
34 35
20 21
30 31
00 01
10 11
44 45
54 55
22 23
32 33
00 01
10 11
20 21
30 31
40 41
50 51
02 03
12 13
22 23
32 33
42 43
52 53
04 05
14 15
24 25
34 35
44 45
54 55
00 01 02
12 10 11
20 21 22
00 01
10 11
44 45
54 55
22 23
32 33
00 01
10 11
44 45
54 55
22 23
32 33
00 01
10 11
40 41
50 51
02 03
12 13
42 43
52 53
04 05
14 15
24 25
34 35
44 45
54 55
22 23
32 33
20 21
30 31 00 01
10 11
44 45
54 55
22 23
32 33
00 01
10 11
44 45
54 55
22 23
32 33
00 01
10 11
40 41
50 51
02 03
12 13
42 43
52 53
04 05
14 15
24 25
34 35
44 45
54 55
22 23
32 33
20 21
30 31
12
A B C
X =
00 01 02
11 12 10
22 20 21
00 01 02
11 12 10
22 20 21
00 11 22
10 21 02
20 01 12 00 11 22
10 21 02
20 01 12
A A B B
Strona 21 z 51
0
0
0
0
0 0
krok 0 krok 1 krok 2
j
i
Mamy macierz 4x4
wiersz wodzący (wiersz 0)
ten wiersz odejmujemy od wiersza zerowego.
Tak samo robimy z pozostałymi wierszami (odejmując je od
wiersza zerowego)
kroków jest o jeden mniej niŜ wielkość macierzy tj. n-1 kroków
III. ALGORYTM ELIMINACJI GAUSSA
czyli mamy
krok 0: wiersz1 = wiersz1 – wiersz0 · m a10=0 0 = a10 – a00 · m
0 = a10 – a00 · = 0 Program do Eliminacji Gaussa
for (k=0; k<n-1; k++)
for(i=k+i; i<n; i++)
{
mik=aik/akk;
for(j=k+1; j<n; j++)
aij=aij-mik·akj
}
A · x = y wektor niewiadomych
prawa strona
A = L · U
Lower Upper
dolna
trójkątna
górna
trójkątna
L
U L · U · x = y //obustronnie dzielimy przez L-1
U · x = L-1 · y
U · x = b
a33
x0
b3
x1
x2
x3
X =
U x b
00
10
a
a
00
10
a
a
Strona 22 z 51
Wykład 7 Kontynuujemy rozwaŜania na temat Algorytmu Eliminacji Gaussa.
Mamy macierz 4x4. N=4
• k=0
• k=1
• k=2
a11 a12 a13
a21
a31
a22
a32
a23
a33
m21
m31
2 wiersz
3 wiersz
przechodzą do kolejnego kroku
w kolejnym kroku
wiersz 2 będzie
wierszem wiodącym
j
i
00
00
k
od danego wiersza odejmujemy wiersz
wodzący k
dzielenie mnoŜenie i odejmowanie
a00 a01 a02 a03
a10
a20
a30
a11
a21
a31
a12
a22
a32
a13
a23
a33
m10
m20
m30
1 wiersz
2 wiersz
3 wiersz
akj
przechodzą do kolejnego kroku
aij
w kolejnym kroku
wiersz 1 będzie
wierszem wiodącym
Strona 23 z 51
Przedstawmy to samo w 3D
mnoŜenie macierzy: cij = cij - aik · bkj
(1) (2) (3) (4) a32 = a32 - m31 · a12
(1) (2) (3) (4) a22 = a22 - m21 · a12
a22 a23
a32 a33
m32
i
j k
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6
5 6 7
7 8
3 wiersz
(3) (3)
(2)
(1) (4)
(3) (3)
(2)
(1)
(4) (4)
Strona 24 z 51
Aby odzwierciedlić naszą macierz na sieć procesorów trzeba dokonać projekcji. Zastosujemy metodę rzutowania-szeregowania. Trzeba równieŜ uszeregować operacje w czasie (co zostało zrobione i przedstawione na rysunku wyŜej)
a00 a01 a02 a03
1 wiersz
2 wiersz
3 wiersz
wiersz 0
macierz U
j
i
m
m
m
2 wiersz
1 wiersz
0 wiersz
a0 a1 a2 a3
mnoŜniki
macierz
U
kolumny macierzy
j k
5,28
201 ===p
pT
TS 278,0
9
5,2≈==
p
SE
p
p
5,28
201 ===p
pT
TS 2083,0
12
5,2≈==
p
SE
p
p
Strona 25 z 51
Wykład 8 Metodologia budowy algorytmów równoległych na podstawie algorytmów sekwencyjnych.
1. Wyznaczenie zbioru operacji bazowych algorytmu (wierzchołki grafu) 2. Wyznaczenie zaleŜności pomiędzy operacjami bazowymi (krawędzie grafu) 3. Agregacja operacji (wierzchołków grafu) – zwiększenie ziarnistości 4. Wyznaczenie uszeregowania (scheduling) w przestrzeni – czyli przydziału operacji do
procesorów 5. Wyznaczenie uszeregowania w czasie – czyli momentów wykonywania poszczególnych
operacji Filtr cyfrowy nierekursywny / algorytm splotu liniowego
Algorytm sekwencyjny np. dla K=3 y(0) = w(0) x(0) y(1) = w(0) x(1) + w(1) x(0) y(2) = w(0) x(2) + w(1) x(1) + w(2) x(0) y(3) = w(0) x(3) + w(1) x(2) + w(2) x(1) y(4) = w(0) x(4) + w(1) x(3) + w(2) x(2)
w x y
ciąg wejściowy ciąg wyjściowy
charakterystyka
filtru
A
x
∑−
=
−=1
0
)()()(K
k
kjxkwjyx(i) i=0, 1, ..., N-1 w(k) k=0, 1, ..., K-1 y(j) j=0, 1, ..., N+K-2
Strona 26 z 51
Ad 1, Ad 2) Wyznaczenie zbioru operacji bazowych algorytmu, Wyznaczenie zaleŜności pomiędzy operacjami bazowymi. Operacjami są kolejne mnoŜenia z dodawaniem. Zakładamy, Ŝe N=5, K=3
Ad3) (pominięta)
x(0) x(1) x(2) x(3) x(4)
w(0)
w(1)
w(2)
y(0)
y(1)
y(2) y(3) y(4) y(5) y(6)
+ + + +
+ + + +
j
k
Σ
X w
sumator
Strona 27 z 51
Ad 4) Wyznaczenie uszeregowania w przestrzeni Najlepiej jest to przedstawić za pomocą projekcji
Ad 5) Wyznaczenie uszeregowania w czasie
Trzeba sprawdzić czy nie występuje konflikt między uszeregowaniem w czasie a uszeregowaniem w przestrzeni, czyli sprawdzić czy w pojedynczym procesorze w jednym czasie wykonuje się tylko 1 zadanie. Nasze uszeregowanie w czasie spełnia ten wymóg.. Tp = 9 p = k = 3 T1 – tyle ile operacji Tp = (N+K-1+K-1)Top = (N+2K-2)Top T1 = N·K Przykład dynamicznego przydziału zadań do procesorów (Master Worker)
x(0) x(1) x(2) x(3) x(4)
w(0)
w(1)
w(2)
y(0)
y(1)
y(2) y(3) y(4) y(5) y(6)
+ + + +
+ + + +
j
k
1 2 3 4 5
3
5
4 5 6 7
6 7 8 9
w(0)
w(1)
w(2)
x
y
potrzebny jest 1 rejestr na
przesłanie y (Patrz Ad5)
potrzebne są 2 rejestry na
przesłanie x (Patrz Ad5)
22)22(1
−+
⋅=
⋅−+
⋅⋅==
KN
KN
TKN
TKN
T
TS
op
op
p
p
KN
KNS p ≈
⋅≈
Najlepiej gdyby Sp było równe K
(gdy N jest duŜo większe od K)
Strona 28 z 51
Mamy pewien zbiór procesorów: P1 – normalnie P2 – 2x wolniejszy niŜ P1 P3 – 4x wolniejszy niŜ P1 oraz mamy zbiór zadań: 3 zadania o złoŜoności 3
Zobaczymy jak będzie wyglądał wykres w przypadku gdy nasze zadania będą podzielne
1.1 P1
P2
P3
6
Procesory
Takty
2.1 2.2 3.1 3.2
1.2 2.3 3.3
1.3
1
2
3
P1
P2
P3
12
Procesory
Takty
Strona 29 z 51
Wykład 9
Szeregowanie zadań (task scheduling / job scheduling) Mamy:
1) Zbiór zadań (prac) Z={z0, z1, ..., zN-1) wi – pracochłonność, złoŜoność danego zadania 2) Zbiór maszyn (procesorów) P={P0, P1, ..., PM-1) fj – wydajność, szybkość danego procesora
Mając te dwa zbiory musimy znaleźć odwzorowanie zbioru prac na zbiór procesorów, a zatem musimy mieć pewne kryterium optymalności uszeregowania. Standardowym kryterium optymalności uszeregowania jest czas realizacji zbioru zadań na zbiorze procesorów.
min tk (minimalizacja czasu)
Algorytmy heurystyczne pozwalają nam przybliŜyć optymalną wartość złoŜoności.
Algorytmy listowe Algorytmy listowe będą generalnie szeregowały zadania w sposób dynamiczny. Rozpatrzymy dwa przypadki: zadania zaleŜne i zadania niezaleŜne (dla kaŜdego przypadku 2 strategie) Mamy uporządkowane listy zadań i procesorów. Zadania po kolei przydziela się pierwszemu wolnemu procesorowi na liście w sposób dynamiczny.
ZłoŜoność
wielomianowa niewielomianowa
N c stała
rozmiar
zadania
np. 10002=106
c N
stała
rozmiar
zadania
np. 21000=(210)100≈(1000)100
=10300
NP-złoŜoność
(Non-Polynomia)
Strona 30 z 51
Zbiór procesorów: P1 – nominalna 2 takty
P2 – 2x wolniejszy 4 takty
P3 – 2x szybszy 1 takt Zbiór zadań: z0,..., z8 (zadania) wi = i%3 + 1 (złoŜoność)
w0 = 1 w1 = 2 w2 = 3 w3 = 1 w4 = 2 w5 = 3 w6 = 1 w7 = 2 w8 = 3
I. Zadania niezaleŜne
1) Strategia: Procesory – od najwolniejszego do najszybszego
P2 – 2x wolniejszy 4 takty P1 – nominalna 2 takty
P3 – 2x szybszy 1 takt Zadania – od najmniej do najbardziej złoŜonego w0, w3, w6, w1, w4, w7, w2, w5, w8
1 2 3 (złoŜoności)
6 P3
P1
P2
3
0
1 7
4
5
8
2
16
złoŜoność = 1
złoŜoność = 2
złoŜoność = 3
Legenda
Strona 31 z 51
2) Strategia: Procesory (tak jak wyŜej) – od najwolniejszego do najszybszego
P2 – 2x wolniejszy 4 takty P1 – nominalna 2 takty
P3 – 2x szybszy 1 takt Zadania – od najbardziej do najmniej złoŜonego w2, w5, w8, w1, w4, w7, w0, w3, w6
3 2 1 (złoŜoności)
II. Zadania zaleŜne a) Ustalmy zaleŜności między zadaniami. MoŜna tego dokonać za pomocą grafu skierowanego
acyklicznego (bez pętli)
Powstaje pytanie dlaczego w grafie nie moŜna zastosować pętli (czyli np. przejść z a
i powrócić do a) ? Musi być spełniony warunek: tp
a, tka
tk
a ≤ tpb
tpb, tk
b
8 P3
P1
P2
5
2
12
7 4
1
6 3 0
0
4
8
2
7
5
1
3
6
a
b
a
b c
1,2
3,4
5,6
warunek nie byłby spełniony!
Strona 32 z 51
b) Dokonamy uporządkowania (sortowania) wierzchołków grafu budując graf uporządkowany. Na pierwszym poziomie znajdują się te wierzchołki, które nie zaleŜą od Ŝadnych innych wierzchołków.
1) Strategia:
Procesory – od najwolniejszego do najszybszego
P2 – 2x wolniejszy 4 takty P1 – nominalna 2 takty
P3 – 2x szybszy 1 takt Zadania – od najmniej do najbardziej złoŜonego (na danym poziomie!) w4, w7, w1, w6, w2, w3, w0, w8, w5
2 1 3 1 3 (złoŜoności)
I II III IV (poziomy)
4
1 7
2 6
0 8 3 5
I
II
III
IV
Aby wykonywać dany poziom (warstwę) nie trzeba czekać na skończenie całej warstwy, ale jedynie na wyniki z zaleŜnych wierzchołków.
P3
P1
P2 4
26
1
7 2 0
6 3
8
5
złoŜoność = 1
złoŜoność = 2
złoŜoność = 3
Legenda
Strona 33 z 51
2) Strategia: Procesory – od najszybszego do najwolniejszego
P3 – 2x szybszy 1 takt P1 – nominalna 2 takty
P2 – 2x wolniejszy 4 takty Zadania – od najbardziej do najmniej złoŜonego (na danym poziomie!) w4, w7, w1, w2, w6, w8, w5, w3, w0
2 3 1 3 1 (złoŜoności)
I II III IV (poziomy)
4 P3
P1
P2
14
7
1
2
6
8
5
0
3
złoŜoność = 1
złoŜoność = 2
złoŜoność = 3
Legenda
Strona 34 z 51
Wykład 10 Przy algorytmie eliminacji Gaussa mieliśmy:
czyli
Postępowanie odwrotne do eliminacji Gaussa
Mamy układ równań z górną macierzą trójkątną: u00x0 + u01x1 + u02x2 + u03x3 = y0
u11x1 + u12x2 + u13x3 = y1 u22x2 + u23x3 = y2 u33x3 = y3
obliczamy x (od końca) x3 = y3 / u33 x2 = (y2 - u23x3) / u22
x1 = (y1 - u13x3 - u12x2) / u11 x0 = (y0 - u03x3 - u02x2 - u01x1) / u00
MoŜemy teraz narysować graf (rysując od dołu)
dzielenie mnoŜenie
x1 x2 x3
x2 x3
x3
u01 u02 u03
u12 u13
u23
u33
u22
u11
u00
7
2
4
6
3
4 5
5
3
1
y3
y2
y1
y0
n
n - 1
A · x = y wektor niewiadomych
prawa strona
A = L · U
Lower Upper
dolna
trójkątna
górna
trójkątna
L
U L · U · x = y //obustronnie dzielimy przez L-1
U · x = L-1 · y
U · x = b
Strona 35 z 51
Postępowanie odwrotne Liczba operacji ZłoŜoność O(n2) Czas Tmin=(2n-1)To
Eliminacja Gaussa ZłoŜoność O(n3) Czas T=O(n)
Zamiast postępowania odwrotnego moŜemy zastosować algorytm Jordana-Gaussa. Dzięki algorytmowi Jordana-Gaussa otrzymujemy macierz diagonalną. Nie musimy juŜ robić postępowania odwrotnego. Wadą tego algorytmu jest to, Ŝe trzeba wykonać dwa razy więcej operacji. Rozpatrywaliśmy Gaussa przy załoŜeniu Ŝe ilość procesorów była tak jak wymiar macierzy.
Przykład 1
Mieliśmy projekcję na podstawę:
teraz będziemy mieli tylko 3 procesory.
N-1
N
N-1
2
)1( +=
nnL
x x x x
x x x x
x x x x
x x x x
x x x x
0 x x x
0 0 x x
0 0 0 x
x 0 x x
0 x x x
0 0 x x
0 0 0 x
x 0 0 x
0 x 0 x
0 0 x x
0 0 0 x
x 0 0 0
0 x 0 0
0 0 x 0
0 0 0 x
odejmujemy wiersz oznaczony przez od pozostałych
dokonajmy jeszcze raz projekcji
Strona 36 z 51
Przykład 2
dla n=7 (n-1=6)
Dekompozycja cykliczna (przydział cykliczny)
wirtualne połączenie
MoŜemy połączyć te procesory
i zamiast 6-ci będą 3
2, 1
4, 3
6, 5
1, 4
2, 5
3, 6
moŜliwe jest teŜ inne
połączenie:
ze skokiem o liczbę
procesorów (tutaj co 3)
UWAGA!!
Procesory 5 i 6 przetwarzają cały czas. Procesory są nierównomiernie obciŜone
Przydział wierszy do procesorów
Dekompozycja blokowa (przydział blokowy)
0
1
2
1
2
3
4
5
6
0
1
2
0
1
2
wiersze procesory
(zwiększona komunikacja)
Strona 37 z 51
Kombinowany przydział wierszy do procesorów (cykliczno – blokowy): N=19, 3 procesory
0
1
2
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
procesor
Strona 38 z 51
PROGRAMOWANIE WSPÓŁBIEśNE
PODSTAWOWE POJĘCIA I PROBLEMY
• proces - program sekwencyjny w trakcie wykonywania • dwa procesy są współbieŜne, jeŜeli jeden z nich rozpoczyna się
przed zakończeniem drugiego • będą nas interesować jedynie takie procesy, których wykonania są
od siebie uzaleŜnione, przy czym uzaleŜnienie wynika z faktu, Ŝe procesy ze sobą współpracują lub między sobą współzawodniczą.
• komunikacja i synchronizacja:
Współpraca wymaga od procesów komunikowania się. Akcje komunikujących się procesów muszą być częściowo uporządkowane w czasie, poniewaŜ informacja musi najpierw zostać utworzona, zanim zostanie wykorzystana. Takie porządkowanie w czasie róŜnych procesów nazywa się synchronizacją. Współzawodnictwo takŜe wymaga synchronizacji - akcja procesu musi być wstrzymana, jeśli zasób potrzebny do jej wykonania jest w danej chwili zajęty przez inny proces. • program współbieŜny jest zbiorem procesów (wątków)
Strona 39 z 51
PROBLEM WZAJEMNEGO WYKLUCZENIA • W teorii procesów współbieŜnych wspólny obiekt, z którego moŜe
korzystać w sposób wyłączny wiele procesów (np. łazienka, koszyk w sklepie) nazywa się zasobem współdzielonym, natomiast fragment procesu, w którym korzysta on z obiektu dzielonego (mycie się, zakupy), nazywa się sekcją krytyczną tego procesu
• Problem wzajemnego wykluczenia definiuje się następująco: zsynchronizować N procesów, z których kaŜdy w nieskończonej pętli na przemian zajmuje się własnymi sprawami i wykonuje sekcję krytyczną, w taki sposób, aby wykonanie sekcji krytycznych jakichkolwiek dwóch lub więcej procesów nie pokrywało się w czasie Aby ten problem rozwiązać, naleŜy do treści tego procesu wprowadzić dodatkowe instrukcje poprzedzające sekcję krytyczną (nazywa się je protokołem wstępnym) i instrukcje następujące bezpośrednio po sekcji krytycznej (zwane protokołem końcowym)
Strona 40 z 51
PRZYKŁĄD PROBLEMU WZAJEMNEGO WYKLUCZENIA
• system komputerowy (jedno- lub wieloprocesorowy) z pamięcią wspólną
• dwa procesy współbieŜne, z których jeden realizuje operację x =
x + 1, a drugi x = x + 2 • kaŜda z powyŜszych operacji realizowana jest w za pomocą trzech
operacji maszynowych, tj. (i) load x, (ii) add 1 lub 2, (iii) store x • przypuśćmy, Ŝe x = 5, wówczas jeden z moŜliwych scenariuszy
wygląda następująco: 1. Pierwszy proces pobiera swoją kopię x : x = 5 . 2. Pierwszy proces oblicza x = x + 1 : x = 6 (lecz wartość wynikowa
nie zostaje jeszcze zapisana do pamięci wspólnej) . 3. Drugi proces włącza się do akcji, pobierając swoją kopię x : x = 5
. 4. Drugi proces oblicza x = x + 2 : x = 7, nie zapisując wyniku do
pamięci wspólnej. 5. Pierwszy proces zapisuje swój wynik x = 6 do pamięci. 6. Drugi proces zapisuje swój wynik x = 7 do pamięci wspólnej. Wniosek: Otrzymujemy x = 7 zamiast prawidlowego wyniku x = 8
Strona 41 z 51
BLOKADA I ZAGŁODZENIE • W poprawnym programie współbieŜnym, tj. posiadającym własność Ŝywotności, w kaŜdym procesie powinno w końcu nastąpić oczekiwane zdarzenie
• W niepoprawnym programie mogą wystąpić zjawiska blokady lub
zagłodzenia • Zbiór procesów znajduje się w stanie blokady, jeŜeli kaŜdy z tych
procesów jest wstrzymany w oczekiwaniu na zdarzenie, które moŜe spowodowane tylko przez jakiś inny proces z tego zbioru
• Inna nazwa zjawiska blokady to zastój, zakleszczenie lub martwy
punkt • Specyficznym przypadkiem nieskończonego wstrzymywania
procesu jest zjawisko zagłodzenia • JeŜeli sygnał synchronizacyjny moŜe być odebrany tylko przez
jeden z czekających nań procesów, powstaje problem, który z procesów wybrać.
• Zjawisko zagłodzenia występuje wówczas, gdy proces nie zostaje
wznowiony, mimo, Ŝe zdarzenie na które czeka występuje dowolną liczbę razy. Za kaŜdym razem, gdy proces ten mógłby być wznowiony, jest wybierany jakiś inny czekający proces.
Strona 42 z 51
MECHANIZMY SYNCHRONIZACJI
• Do rozwiązania problemu wzajemnego wykluczenia moŜna
zastosować niskopoziomowy mechanizm, jakim są przerwania, które umoŜliwiają przelączenie procesora na wykonywanie innego procesu
• W systemie jednoprocesorowym do realizacji wzajemnego
wykluczenia moŜna wykorzystać (i) procedury obsługi przerwań spowodowanych wykonaniem specjalnej instrukcji oraz (ii) mechanizm maskowania przerwań, umoŜliwiający zablokowanie następnych przerwań w czasie, gdy jest realizowana procedura obsługi poprzedniego przerwania
• Wadą takiego podejścia jest konieczność ingerencji w obszar
systemu operacyjnego (instrukcje procedury obsługi przerwania wykonywane są przez system operacyjny, który posiada najwyŜszy priorytet)
• w systemie wieloprocesorowym mechanizm przerwań nie
gwarantuje wzajemnego wykluczenia przy dostępie do pamięci, gdyŜ dwa róŜne procesory mogą w tym samym czasie realizować róŜne przerwania
• mechanizmy wysokopoziomowe: semafory i monitory
Strona 43 z 51
SEMAFORY
Semafor - abstrakcyjny typ danych, na którym oprócz określenia jego stanu początkowego, moŜna wykonywać tylko dwie operacje, umoŜliwiające wstrzymywanie i wznawianie procesów, a mianowicie:
• opuszczenie semafora,
• podniesienie semafora,
o których zakłada się, Ŝe są niepodzielne, co oznacza, Ŝe dana operacja musi być wykonana od początku do końca bez moŜliwości przerwania przez inną operację
SEMAFOR BINARNY
definicja klasyczna: • opuszczenie semafora binarnego to wykonanie instrukcji PB(S):
czekaj aŜ S = = 1; wtedy ustaw S = 0 (i kontynuuj proces)
• podniesienie semafora binarnego VB(S) :
S = 1
definicja praktyczna : • opuszczenie semafora binarnego PB(S) :
jeŜeli S = = 1, to S =0, w przeciwnym razie wstrzymaj
działanie procesu wykonującego tę operację;
• podniesienie semafora binarnego VB(S) :
jeŜeli są procesy wstrzymane w wyniku wykonania operacji
opuszczania semafora S, to wznów jeden z nich, w przeciwnym
razie S = 1.
Strona 44 z 51
SEMAFOR OGÓLNY
definicja praktyczna : • opuszczenie semafora ogólnego P(S) :
jeŜeli S > 0, to S =S -1, w przeciwnym razie wstrzymaj
działanie procesu wykonującego tę operację;
• podniesienie semafora ogólnego V(S) :
jeŜeli są procesy wstrzymane w wyniku wykonania operacji
opuszczania semafora S, to wznów jeden z nich, w przeciwnym
razie S = S + 1 .
Definiowanie zmiennych semaforowych w programach semafor ogólny semaphore SEM = 4; semafor binarny binary semaphore SEM = 1;
Strona 45 z 51
PRZYKŁADY PROGRAMÓW WSPÓŁBIEśNYCH
Z WYKORZYSTANIEM SEMAFORÓW
WZAJEMNE WYKLUCZENIE int n = ? ;
binary semaphore S = 1; process P ( int i ) /* i = 0 . . n-1 */
{ while {true}
{ własne_sprawy;
PB(S);
sekcja_krytyczna;
VB(S);
} }
Strona 46 z 51
PROBLEM PIĘCIU FILOZOFÓW
Rozwiązanie z moŜliwością blokady binary semaphore widelec [5] = {1, 1, 1, 1, 1}; process FILOZOF(int i) /* i = 0 . . 4 */
{ while {true}
{ myślenie;
PB(widelec [i] );
PB(widelec[ (i+1) % 5 ] );
jedzenie;
VB(widelec [i] );
VB(widelec[ (i+1) % 5 ] );
} }
Strona 47 z 51
PROBLEM PIĘCIU FILOZOFÓW
Rozwiązanie poprawne binary semaphore widelec [5] = {1, 1, 1, 1, 1};
semaphore LOKAJ = 4; process FILOZOF(int i) /* i = 0 . . 4 */
{ while {true}
{ myślenie;
P(LOKAJ);
PB(widelec [i] );
PB(widelec[ (i+1) % 5 ] );
jedzenie;
VB(widelec [i] );
VB(widelec[ (i+1) % 5 ] );
V(LOKAJ); } }
Strona 48 z 51
MONITORY
Monitor to zebrane w jednej konstrukcji programowej pewne wyróŜnione zmienne oraz procedury i funkcje synchronizujące działające na tych zmiennych. Część tych procedur i funkcji jest udostępniona na zewnątrz monitora. Tylko ich wywołanie umoŜliwia procesom dostęp do zmiennych ukrytych wewnątrz monitora.
• Wykonanie procedury monitora jest sekcją krytyczną wykonu- jącego go procesu. Oznacza to, Ŝe w danej chwili tylko jeden spośród współbieŜnie wykonujących się procesów moŜe wykonywać procedurę monitora.
• Oprócz tego istnieje moŜliwość wznawiania i wstrzymywania
procesów wewnątrz procedury monitorowej. SłuŜą do tego zmienne specjalnego typu warunkowego (condition). Na zmiennych tego typu moŜna wykonywać dwie operacje:
- wait ( c ) powoduje wstrzymanie procesu wykonującego tę operację i wstawienie go na koniec kolejki związanej ze zmienną c , z jednoczesnym zwolnieniem monitora, - signal ( c ) powoduje wznowienie pierwszego procesu wstrzy manego w kolejce związanej ze zmienną c . Jeśli operacja ta nie jest ostatnią instrukcją procedury monitorowej, to proces wyko- nujący tę operację jest wstrzymany aŜ do chwili, gdy wznowio- ny przezeń proces zwolni monitor. Jeśli w chwili wywołania operacji signal Ŝaden proces nie czeka w kolejce, to operacja ta ma efekt pusty.
Strona 49 z 51
PROCES A MONITOR M procedure P(x : integer);
M.P(y) begin Procesy . . . oczekujące na wejście wait ( C ) ; . . . Procesy wstrzymane signal ( C ) ; Procesy po signal oczekujące na C . . . end;
• Gdy jakiś proces wykonuje w danej chwili procedurę monitora, jednoczśnie mogą Ŝądać dostępu do monitora inne procesy. Będą one czekać w trojakiego rodzaju kolejkach :
• Procesy, które chcą rozpocząć wykonanie procedury monitora, czekają w kolejce wejściowej, a te, które zostały wstrzymane w wyniku operacji wait, czekają w kolejce związanej ze zmienną c. Na wejście do monitora, odłoŜone na stos, mogą równieŜ czekać procesy, które wykonały operację signal, ale same zostały wstrzymane.
• JeŜeli proces P znajdujący się wewnatrz monitora wykona operację signal(c) , będzie odłoŜony na stos, a do monitora wejdzie pierwszy proces czekający w kolejce związanej ze zmienną c .
• JeŜeli proces P opuści monitor albo wykonując operację wait(c), albo kończąc procedurę monitora, to do monitora wejdzie proces odłoŜony, który poprzednio wznowił proces P . Jeśli takiego procesu nie ma, oznacza to. Ŝe stos procesów odłoŜonych jest pusty i do monitora moŜe wejść proces czekający w kolejce wejściowej.
Strona 50 z 51
PROBLEM PIĘCIU FILOZOFÓW
ROZWIĄZANIE POPRAWNE Z MONITOREM
monitor WIDELCE;
var WIDELEC : array [0 .. 4] of condition; zajęty : array [0 .. 4] of boolean; LOKAJ : condition; jest , i : integer; export procedure BIORĘ (i : integer); begin if jest = 4 then wait (LOKAJ); jest := jest + 1;
if zajęty[i] then wait (WIDELEC [ i ] ); zajęty [ i ] := true;
if zajęty[ (i+1) mod 5] then wait (WIDELEC [(i+1) mod 5 ] ); zajęty [ (i+1) mod 5 ] := true;
end; {BIORĘ}
export procedure ODKŁADAM (i : integer); begin zajęty [i] := false; SIGNAL (WIDELEC [i] );
zajęty[ (i+1) mod 5] := false; signal (WIDELEC [ (i+1) mod 5 ] );
jest := jest -1; SIGNAL (LOKAJ);
end; {ODKŁADAM}
begin for i := 0 to 4 do zajęty [i] := false; jest := 0;
end; {WIDELCE}
Strona 51 z 51
PROBLEM PIĘCIU FILOZOFÓW
ROZWIĄZANIE POPRAWNE Z MONITOREM
process FILOZOF (i: 0 .. 4);
begin
while (true) do
begin
myślenie;
WIDELCE . BIORĘ (i);
jedzenie;
WIDELCE . ODKŁADAM (i);
end;
end;
top related