Programowanie równoległe i współbieżne
Ćwiczenie:
Ćwiczenie 7
Data oddania:
13.5.2013
Imię, Nazwisko:
Dawid Misiniec
Ocena:
Uwagi:
1.
Cel ćwiczenia
Celem ćwiczenia było wykonanie programu, który liczy średnią, sumę oraz normę wektora
wartości, wygenerowanego przez podział wektora głównego na n części.
2.
Przebieg ćwiczenia
Napisany przez nas program przyjmował na wstępie wektor 20 elementowy, wypełniony
kolejnymi liczbami. Następnie program dzielił główny wektor na n części (zależne od ilości
procesów) i każdy z procesów wykonywał obliczenia średniej i normy wektora dla swojego
fragmentu danych oraz wyniki prezentował na ekranie każdy z procesów. Po wykonaniu
obliczeń wyniki były wysyłane do procesu o numerze 0, scalane (suma globalna) oraz
wyświetlane (norma globalna oraz średnia -> suma globalna/wielkość wektora
początkowego).
Wektor początkowy: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Wektor procesu 0:
0 1 2 3 4 5 6 7 8 9
Wektor procesu 1:
10 11 12 13 14 15 16 17 18 19
Tabela 1 Wektory wykorzystane do obliczeń
Wynikiem obliczeń dla poszczególnych wektorów było:
Suma lokalna 0: 45
Suma lokalna 1: 145
Suma globalna: 190
Średnia: 9,5
Norma lokalna 0:
16,88194
Norma lokalna 1:
46,74398
Norma globalna:
49,69909
Norma globalna obliczana była, jako suma kwadratów poszczególnych norm lokalnych.
3. Wnioski
Podział obliczeń między kilka procesów przyspieszył wykonywanie działań, nie
zmieniając poprawności wyników,
Dokładność wykonywanych obliczeń na wielu procesach, jest taka sama jak
dokładność obliczeń na jednym procesie,
Dla większej ilości danych, czas potrzebny do obliczeń jest o wiele krótszy w
przypadku podziału obliczeń na mniejsze fragmenty i rozdzielenie zadań dla
kilku procesów