Barłomiej Klimek WCY19IJ4S1 ORR Lab3

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

Sprawozdanie z trzecich

ćwiczeń laboratoryjnych
z przedmiotu „Obliczenia
równoległe i rozproszone”
Autor: Bartłomiej Klimek
WCY19IJ4S1

Założenie
Zakładamy że wykonujemy zadanie 5, czyli mnożenie dwóch macierzy n na n. Przyjmujemy n=2.

Acykliczny graf skierowany problemu


Poniżej ogólna reprezentacja AGS dla naszego problemu:

Wierzchołki o kształcie kwadratu reprezentują zmienne wejściowe, te o kształcie koła reprezentują


operacje.
Implementacja tego AGSu w symulatorze wygląda następująco:
Harmonogramy
Zaproponujemy następujące liczby procesorów do rozwiązania problemu: 1, 2, 4 i 8 procesorów.
Poszczególne harmonogramy przedstawiono w poniższej tabeli (oznaczenia liczbowe wierzchołków
bierzemy z ogólnego diagramu przedstawiającego wykres):

L. procesorów Harmonogram
H1={(9,1,1),(10,1,2),(11,1,3),(12,1,4),(13,1,5),
1 (14,1,6),(15,1,7),(16,1,8),(17,1,9),(18,1,10),
(19,1,11),(20,1,12)}
H2={(9,1,1),(10,2,1),(11,1,2),(12,2,2),(13,1,3),
2 (14,2,3),(15,1,4),(16,2,4),(17,1,5),(18,2,5),(19,1,6),
(20,2,6)}
H4={(9,1,1),(10,2,1),(11,3,1),(12,4,1),(13,1,2),
4 (14,2,2),(15,3,2),(16,4,2),(17,1,3),(18,2,3),(19,3,3),
(20,4,3)}
H8={(9,1,1),(10,2,1),(11,3,1),(12,4,1),(13,5,1),
8 (14,6,1),(15,7,1),(16,8,1),(17,1,2),(18,2,2),(19,3,2),
(20,4,2)}
H12={(9,1,1),(10,2,1),(11,3,1),(12,4,1),(13,5,1),
12 (14,6,1),(15,7,1),(16,8,1),(17,1,2),(18,2,2),(19,3,2),
(20,4,2)}
Szacowanie teoretycznej złożoności obliczeniowej
Teoretyczną złożoność obliczeniową możemy oszacować, analizując algorytm mnożenia macierzy
w postaci pseudokodu (mnożymy macierze A i B):
Dla każdego wiersza macierzy A:
Dla każdej kolumny macierzy B:
Dla każdego elementu kolumny:
Pomnóż element kolumny przez odpowiadający element
wiersza na p procesorach
Zsumuj iloczyny na p procesorach
Operacje elementarne zaznaczono kolorem czerwonym. Ilość wierszy i kolumn w obu macierzach
jest identyczna i jest równa ilości elementów w każdej z nich, więc wykonujemy każdą pętlę trzy
razy, co daje n3 , ponadto wykonujemy n2 dodawań, szacunkowa złożoność daje więc n3 +n 2, a
asymptotycznie O(n3 ). Dodamy element zwielokrotnienia, jako że na p procesorach zajmie nam to
n3 n2 n3 +n2
+ = operacji. Złożoność asymptotyczna zmieni się, w zależności od p, na przykład dla n
p p p
procesorów złożoność zmaleje do kwadratowej.
Należy również zaznaczyć, że opóźnienia nie zmieniają teoretycznej złożoności obliczeniowej.
Oszacowanie równoległe przeprowadzimy w symulatorze i podsumujemy

Przeprowadzenie symulacji
W tym podrozdziale będziemy odnosić się do kolejnych podpunktów z polecenia.

Podpunkt a)
Przeanalizujemy jak liczba procesorów ma wpływ na czas wykonania się zadania. Wyniki
przedstawiono w poniższej tabeli i na poniższym wykresie:

L. procesorów Czas
1 12
2 6
4 3
8 2
12 2
Wykres szybkości wykonania zadanie bez opóźnień w
zależności od liczby procesorów
14

12
Czas wykonania zadania

10

0
1 2 3 4 5 6 7 8 9 10 11 12
L. procesorów

Jak widać, maksymalna liczba procesorów która daje efekt jest równa szerokości grafu i wynosi 8.
Z wykresu można odczytać, że w przybliżeniu spadek czasu (do momentu osiągnięcia p *) jest
wykładniczy.

Podpunkt b)
Tym razem wprowadzamy opóźnienia.

L. procesorów Czas
1 12
2 10
4 5
8 4
12 4
Wnioski są podobne jak powyżej, z tą różnicą że czas przesyłu nieco zmniejszył korzyść
wynikającą ze zwielokrotnienia. W tym wypadku ciężej określić, do jakiej funkcji podobny jest
spadek.
Wykres zależności liczby procesorów od czasu wykonania się
zadania z uwzględnieniem opóźnień
14

12
Czas wykonania zadania

10

0
1 3 5 7 9 11
L. procesorów

Podpunkt c)
Niezbędne uwagi:
• W wypadku operacji niejednorodnych, przyjęto że mnożenie zajmuje trzykrotnie więcej
czasu procesora niż dodawanie

L. proc. Procesory Zadania Algorytm harmonogramu Sposób przydziału Czas wykonania


4 Jednorodne Jednorodne Hu Pierwszy wolny 3,01
4 Jednorodne Jednorodne Hu Najmniej obciążony 3,01
4 Jednorodne Jednorodne SPT Pierwszy wolny 3,01
4 Jednorodne Jednorodne SPT Najmniej obciążony 3,01
4 Jednorodne Jednorodne LPT Pierwszy wolny 3,01
4 Jednorodne Jednorodne LPT Najmniej obciążony 3,01
4 Jednorodne Jednorodne heurystyczny Pierwszy wolny 3,01
4 Jednorodne Jednorodne heurystyczny Najmniej obciążony 3,01
4 Jednorodne Niejednorodne Hu Pierwszy wolny 7,01
4 Jednorodne Niejednorodne Hu Najmniej obciążony 7,01
4 Jednorodne Niejednorodne SPT Pierwszy wolny 8,02
4 Jednorodne Niejednorodne SPT Najmniej obciążony 8,02
4 Jednorodne Niejednorodne LPT Pierwszy wolny 7,01
4 Jednorodne Niejednorodne LPT Najmniej obciążony 7,01
4 Jednorodne Niejednorodne heurystyczny Pierwszy wolny 7,01
4 Jednorodne Niejednorodne heurystyczny Najmniej obciążony 7,01
4 Niejednorodne Jednorodne Hu Pierwszy wolny 2,01
4 Niejednorodne Jednorodne Hu Najmniej obciążony 1,14
4 Niejednorodne Jednorodne SPT Pierwszy wolny 2,01
4 Niejednorodne Jednorodne SPT Najmniej obciążony 1,14
4 Niejednorodne Jednorodne LPT Pierwszy wolny 2,01
4 Niejednorodne Jednorodne LPT Najmniej obciążony 1,14
4 Niejednorodne Jednorodne heurystyczny Pierwszy wolny 2,01
4 Niejednorodne Jednorodne heurystyczny Najmniej obciążony 1,14
4 Niejednorodne Niejednorodne Hu Pierwszy wolny 4,01
4 Niejednorodne Niejednorodne Hu Najmniej obciążony 3,14
4 Niejednorodne Niejednorodne SPT Pierwszy wolny 4,01
4 Niejednorodne Niejednorodne SPT Najmniej obciążony 3,14
4 Niejednorodne Niejednorodne LPT Pierwszy wolny 4,01
4 Niejednorodne Niejednorodne LPT Najmniej obciążony 3,14
4 Niejednorodne Niejednorodne heurystyczny Pierwszy wolny 4,01
4 Niejednorodne Niejednorodne heurystyczny Najmniej obciążony 3,14
8 Jednorodne Jednorodne Hu Pierwszy wolny 2,01
8 Jednorodne Jednorodne Hu Najmniej obciążony 2,01
8 Jednorodne Jednorodne SPT Pierwszy wolny 2,01
8 Jednorodne Jednorodne SPT Najmniej obciążony 2,01
8 Jednorodne Jednorodne LPT Pierwszy wolny 2,01
8 Jednorodne Jednorodne LPT Najmniej obciążony 2,01
8 Jednorodne Jednorodne heurystyczny Pierwszy wolny 2,01
8 Jednorodne Jednorodne heurystyczny Najmniej obciążony 2,01
8 Jednorodne Niejednorodne Hu Pierwszy wolny 4,01
8 Jednorodne Niejednorodne Hu Najmniej obciążony 4,01
8 Jednorodne Niejednorodne SPT Pierwszy wolny 4,01
8 Jednorodne Niejednorodne SPT Najmniej obciążony 4,01
8 Jednorodne Niejednorodne LPT Pierwszy wolny 4,01
8 Jednorodne Niejednorodne LPT Najmniej obciążony 4,01
8 Jednorodne Niejednorodne heurystyczny Pierwszy wolny 4,01
8 Jednorodne Niejednorodne heurystyczny Najmniej obciążony 4,01
8 Niejednorodne Jednorodne Hu Pierwszy wolny 2,01
8 Niejednorodne Jednorodne Hu Najmniej obciążony 1,04
8 Niejednorodne Jednorodne SPT Pierwszy wolny 2,01
8 Niejednorodne Jednorodne SPT Najmniej obciążony 1,04
8 Niejednorodne Jednorodne LPT Pierwszy wolny 2,01
8 Niejednorodne Jednorodne LPT Najmniej obciążony 1,04
8 Niejednorodne Jednorodne heurystyczny Pierwszy wolny 2,01
8 Niejednorodne Jednorodne heurystyczny Najmniej obciążony 1,04
8 Niejednorodne Niejednorodne Hu Pierwszy wolny 4,01
8 Niejednorodne Niejednorodne Hu Najmniej obciążony 3,02
8 Niejednorodne Niejednorodne SPT Pierwszy wolny 4,01
8 Niejednorodne Niejednorodne SPT Najmniej obciążony 3,02
8 Niejednorodne Niejednorodne LPT Pierwszy wolny 4,01
8 Niejednorodne Niejednorodne LPT Najmniej obciążony 3,02
8 Niejednorodne Niejednorodne heurystyczny Pierwszy wolny 4,01
8 Niejednorodne Niejednorodne heurystyczny Najmniej obciążony 3,02
12 Jednorodne Jednorodne Hu Pierwszy wolny 2,01
12 Jednorodne Jednorodne Hu Najmniej obciążony 2,01
12 Jednorodne Jednorodne SPT Pierwszy wolny 2,01
12 Jednorodne Jednorodne SPT Najmniej obciążony 2,01
12 Jednorodne Jednorodne LPT Pierwszy wolny 2,01
12 Jednorodne Jednorodne LPT Najmniej obciążony 2,01
12 Jednorodne Jednorodne heurystyczny Pierwszy wolny 2,01
12 Jednorodne Jednorodne heurystyczny Najmniej obciążony 2,01
12 Jednorodne Niejednorodne Hu Pierwszy wolny 4,01
12 Jednorodne Niejednorodne Hu Najmniej obciążony 4,01
12 Jednorodne Niejednorodne SPT Pierwszy wolny 4,01
12 Jednorodne Niejednorodne SPT Najmniej obciążony 4,01
12 Jednorodne Niejednorodne LPT Pierwszy wolny 4,01
12 Jednorodne Niejednorodne LPT Najmniej obciążony 4,01
12 Jednorodne Niejednorodne heurystyczny Pierwszy wolny 4,01
12 Jednorodne Niejednorodne heurystyczny Najmniej obciążony 4,01
12 Niejednorodne Jednorodne Hu Pierwszy wolny 2,01
12 Niejednorodne Jednorodne Hu Najmniej obciążony 1,01
12 Niejednorodne Jednorodne SPT Pierwszy wolny 2,01
12 Niejednorodne Jednorodne SPT Najmniej obciążony 1,01
12 Niejednorodne Jednorodne LPT Pierwszy wolny 2,01
12 Niejednorodne Jednorodne LPT Najmniej obciążony 1,01
12 Niejednorodne Jednorodne heurystyczny Pierwszy wolny 2,01
12 Niejednorodne Jednorodne heurystyczny Najmniej obciążony 1,01
12 Niejednorodne Niejednorodne Hu Pierwszy wolny 4,01
12 Niejednorodne Niejednorodne Hu Najmniej obciążony 3,01
12 Niejednorodne Niejednorodne SPT Pierwszy wolny 4,01
12 Niejednorodne Niejednorodne SPT Najmniej obciążony 3,01
12 Niejednorodne Niejednorodne LPT Pierwszy wolny 4,01
12 Niejednorodne Niejednorodne LPT Najmniej obciążony 3,01
12 Niejednorodne Niejednorodne heurystyczny Pierwszy wolny 4,01
12 Niejednorodne Niejednorodne heurystyczny Najmniej obciążony 3,01

Obliczenie parametrów
Dla każdej liczby procesorów, obliczymy i podamy teraz parametry. Dla danej liczby procesorów z
trzech które testowaliśmy w podpunkcie c) bierzemy czasy skrajne i średnią wszystkich pomiarów.
Nie należy porównywać parametrów dla różnego typu procesorów oraz zadań, gdyż tworzą one
zupełnie różne warunki badań i mogą prowadzić do fałszywych wniosków z powodu innej
interpretacji różnic wynikających z tych elementów środowiska. Dlatego obieramy czasy dla
procesorów jednorodnych i zadań niejednorodnych. Dla wartości liczby procesorów nie
uwzględnionych w c) bierzemy czas z podpunktu b):

L. proc. Rodzaj czasu Czas Sp Ep


4 Najkrótszy 7,01 1,71 0,43
4 Najdłuższy 8,02 1,50 0,37
4 Średnia 7,26 1,65 0,41
8 Średnia (wszystkie pomiary identyczne) 4,01 2,99 0,37
12 Średnia (wszystkie pomiary identyczne) 4,01 2,99 0,37
2 Pomiar z podpunktu b) 10 1,20 0,60
Poniżej tabela dla parametrów wspólnych:

T∞ (praktyczne) 4,01
T∞ (teoretyczne) 2
p* 8
D 2

Najważniejsze, wnioski
Acykliczny graf skierowany dla naszego problemu należy do tych prostszych, w związku z czym
nie jesteśmy w stanie pokazać pełnego potencjału obliczeń równoległych, możemy jednak
wyciągnąć pewne wnioski.
Kluczowym odkryciem jest fakt istnienia granicznej liczby procesorów dla pewnego problemu. W
wypadku mnożenia macierzy 2 na 2 jest to osiem procesorów. Wykorzystywanie większej liczby
procesorów do obliczeń jest marnotrawstwem zasobów. Jeżeli jednak procesory są niejednorodne,
to posiadanie nadmiaru procesorów szybszych niż pozostałe może pomóc w szybkości obliczeń,
szczególnie jeżeli dobierzemy odpowiedni algorytm przydziału zadań, chociaż należy zaznaczyć że
w naszym przypadku zgodnie z poleceniem różnice między szybkością procesorów były
ekstremalne i w rzeczywistości taka sytuacja ma miejsce jedynie w rozbudowanych systemach
obliczeń rozproszonych. Ogólnie jednak zasada teoretyczna się sprawdza – istnieje graniczna liczba
procesorów i graniczny czas wykonania algorytmu. Wbrew pozorom jest to ważna zasada – w
rzeczywistych systemach ze względów ekonomicznych dążymy do użycia tego samego modelu
procesora w całym komputerze (w wypadku obliczeń rozproszonych jednak staje się to istotne).
Dużo gorszym zjawiskiem od nadmiaru procesorów jest jednak ich niedomiar. W podpunkcie c)
zauważalne jest znacznie wolniejsze wykonanie algorytmów niż dla ilości procesorów
odpowiadającej p* lub większej. W tym wypadku również znacznie rośnie znaczenie dobranej
metody algorytmu harmonogramu oraz sposobu przydziału procesora. Podobnie, w wypadku
zaspokojenia potrzeb algorytmu co do liczby równoległych procesorów, te czynniki nie mają
znaczenia – w wypadku gdy mieliśmy do czynienia z jednorodnymi procesorami, wpływ był
zerowy. Ważne stawało się to jednak w wypadku gdy istniały procesory potrafiące wykonywać
zadania błyskawicznie, zysk był jednak stosunkowo niewielki.
Powyższe zadanie pokazuje również że choć dla zrozumienia tematu obliczenia teoretyczne mogą
być przydatne, to w rzeczywistości musimy uwzględnić wiele czynników – opóźnienia, różnice
procesorów (jeżeli takie planujemy w naszym systemie), które mogą zmienić wyniki od
planowanych. Warto dodać że używany przez nas symulator nie pozwala na losowe generowanie
czasu opóźnienia, co może dziać się w rzeczywistości ze względu na maturę materii.
Unikałem w powyższej części sprawozdania porównywania wyników dla różnych jednorodności
procesora i obliczeń. Moim zdaniem stanowią one bardzo istotny czynnik, więc tworzą zupełnie
różne problemy których nie można ze sobą porównywać. Duże zamieszanie wprowadzały
niejednorodne procesory, które nieraz były wielokrotnie szybsze od procesora najwolniejszego.
Wykłady czy materiał przedmiotu nie skupiał się na tym zagadnieniu. Naiwna interpretacja
wyników prowadziła do sytuacji, gdzie efektywność algorytmu przekraczała znacznie jeden. W
związku z tym postanowiłem te wyniki traktować z ostrożnością.

You might also like