Professional Documents
Culture Documents
Barłomiej Klimek WCY19IJ4S1 ORR Lab3
Barłomiej Klimek WCY19IJ4S1 ORR Lab3
Barłomiej Klimek WCY19IJ4S1 ORR Lab3
ć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.
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
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):
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ą.