CałkaAdam, Semestr 8-9


0x01 graphic

POLITECHNIKA OPOLSKA

Programowanie współbieżne i rozproszone

Kierunek studiów:

Informatyka studia II-go stopnia

Rok studiów:

I

Rok akademicki:

2014 / 2015

Semestr:

I

Temat:

Ćwiczenie 1: Całka

Lp.

Imię

Nazwisko

Sprawozdanie oddano dnia:

Ocena:

1.

Adam

Czech

26.05.2015

Termin zajęć:

Prowadzący:

dzień:

Wtorek

dr hab. inż. J. Sadecki Prof. PO

godzina:

17:50

grupa:

L1

  1. Cel ćwiczenia

Ćwiczenie miało na celu przeprowadzenie badań wydajności program. Wykonany na laboratorium program oblicza całkę na zadanym przedziale w trybie sekwencyjnym, jedno, dwu, trzy i czterowątkowym.

Wybrana do testów całka to:

0x01 graphic

Obliczenia zostały przeprowadzone w przedziale od 1 do 5. Prawidłowy wynik obliczeń dla tej całki wynosi 0,477756.

  1. Program

Obliczanie całki przeprowadzane jest w pętli FOR, pracuje ona na zadanym przedziale. Przed wykonaniem uruchamiany zostaje zegar, a jego zatrzymanie następuje po przeprowadzeniu obliczeń. Czas zostaje wyświetlony po wykonywania operacji. Pierwsze wykonanie procedury jest sekwencyjne, później program wykonywany jest na jednym, dwóch, trzech i czterech wątkach.

Fragment kodu programu, w którym obliczana jest wartość całki.

start = times(&tms_start);
for (i=0; i < n; i++)
wynik += 1/(3*(i * przedzial + xp)+1);

wynik = przedzial *(wynik+((1/(3*xk+1))+(1/(3*xp+1)))/2);
koniec = times(&tms_koniec);

Aby wykonać operację całkowania na większej liczbie rdzeni wykorzystana została biblioteka OpenMp. Dzięki dyrektywie pragma omp parrarel możliwe jest wykonywanie operacji na zadanej liczbie wątków.

Dyrektywę:

#pragma omp parallel for shared(przedzial, xp, n)

private(i) reduction(+ : wynik) num_threads(3)

Dyrektywa ta przydziela dodatkowe wątki do równoległego wykonania pracy zawartej w konstrukcji. W powyższym przykładzie wykorzystano trzy wątki, dzięki wykorzystaniu parametru num_threads i nadaniu mu wartości 3. Zawiera ona również atrybuty shared i private. Shared oznacza zmienne, których dane wewnątrz równolegle przetwarzanego regionu są współdzielone, oznacza to że są one widoczne i dostępne dla wszystkich wątków jednocześnie. Domyślnie, wszystkie zmienne w regionie współdzielonej pracy są shared z wyjątkiem licznika iteracji pętli, który posiada atrybut private.

  1. Wyniki

Program oblicza prawidłowy wynik dla każdej iteracji, po kilkukrotnym uruchomieniu programu otrzymano czasy wykonania iteracji dla różnej ilości przedziałów. Wyniki zostały wstawione w poniższej tabeli:

Liczba przedziałów [n]

Czas wykonania [s]

Sekwencyjnie

1 Wątek

2 Wątki

3 Wątki

4 Wątki

200000000

3,65

3,48

2,29

2,04

0,9

400000000

6,71

4,52

3,02

2,98

2,05

600000000

7,45

7,31

5,18

3,84

3,32

800000000

12,16

12,06

6,41

4,64

3,79

1000000000

14,92

14,78

7,63

4,47

3,33

1200000000

15,46

15,02

9,06

5,54

4,10

1400000000

20,57

19,25

10,65

6,57

4,69

1600000000

23,34

22,16

12,23

7,31

5,55

1800000000

26,16

25,87

16,64

8,45

6,16

2000000000

29,31

28,56

16,88

9,25

9,14

Na wykresie przedstawiono wyniki czasowe wykonania programu dla liczby przedziałów wynoszącej 1 000 000 000.

0x01 graphic

Dla przeprowadzonych pomiarów obliczono przyśpieszenie. Dzięki temu możliwe było pokazanie różnicy czasu wykonywania dla poszczególnych wątków.

Wyniki przedstawiono w tabeli:

Liczba przedziałów [n]

Przyśpieszenie

Sekwencyjnie

1 Wątek

2 Wątki

3 Wątki

4 Wątki

200000000

1

0,17

1,36

1,61

2,75

400000000

1

2,19

3,69

3,73

4,66

600000000

1

0,14

2,27

3,61

4,13

800000000

1

0,1

5,75

7,52

8,37

1000000000

1

0,14

7,29

10,45

11,59

1200000000

1

0,44

6,4

9,92

11,36

1400000000

1

1,32

9,92

14

15,88

1600000000

1

1,18

11,11

16,03

17,79

1800000000

1

0,29

9,52

17,71

20

2000000000

1

0,75

12,43

20,06

20,17

ŚREDNIA:

1

0,672

6,974

10,464

11,67

Wykres przyśpieszenia:

-0x01 graphic

Dzięki wykresowi można zaobserwować, że przyśpieszenie dla 1 wątku jest nawet lepsze, niż dla sekwencji.

4.Wnioski

Przeprowadzone zadanie sprawdziło zależności czasu wykonywania programu od liczby rdzeni. Dzięki bibliotece OpenMp oraz wykorzystaniu dyrektywy

pragma omp parrarel zadnie mogło zostać wykonane. Wyników pokazały, że użycie wielu wątków dla dużych obliczeń pozwala na przyśpieszyć proces ich obliczania, co jest na pewno bardzo pomocne. Należy jednak pamiętać, że wyniki pomiarów mogą być niedokładne ze względu na jednocześnie uruchomione procesy systemu.

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI

4

Opole 2015

Opole 2015



Wyszukiwarka

Podobne podstrony:
Mechanika Semest I pytania egz
11 CWICZENIE 1 SEMESTR LETNIid 12747 ppt
Otyłość rok III semestr VI
Propedeutyka medycyny semestr III
GW Praca semestralna zasady i wytyczne
III semestr INiB Teoria i organizacja bibliografi0003
Analiza III semestr lista nr 3 Nieznany (2)
Edukacja wczesnoszkolna 1, cz 3 semestr 1
BDiA Semestr 6 Zajecia nr 04 ziemne
plan ćw V semestr
plan zajęć 2013 2014, semestr letni
akademia cisco ccna semestr 2 podstawowe wiadomosci o routerach i routingu
MATEMATYKA Semestr 2 Rachunek Różniczkowy(1)
III semestr INiB Teoria i organizacja bibliografi0008
D semestr 5 konstrukcje metalowe wstępny Model (2
Marketing wykłady 1 semestr
II stopni 2 semestr plan zajęć
Egzamin Semestr I matma id 680987

więcej podobnych podstron