Programowanie równoległe i współbieżne
Ćwiczenie:
Ćwiczenie 2
Data oddania:
27.4.2013
Imię, Nazwisko:
Aleksandra Kulecka
Ocena:
Uwagi:
1.
Cel ćwiczenia
Celem ćwiczenia było zbadanie czasu potrzebnego do obliczenia liczby π, w zależności od
zaangażowanych procesów, ilości interwałów poświeconych tym obliczeniom oraz dobory języka
programowania, w którym został skonstruowany program.
2.
Przebieg ćwiczenia
Po ukończeniu konfiguracji MPI na dostępnych komputerach (SO: Windows XP 32 bit, procesory 4-ro
rdzeniowe), uruchamiano dwa pliki, których zadaniem było obliczanie liczby π. Programy były
uruchamiane z konsoli MPICH, jako pliki po operacji debugowania. Przygotowane programy były
napisane w języku C oraz C++.
3.
Wyniki badań
Poniżej przedstawiono wyniki badań w formie tabel i wykresów.
Język C
Tabela 1 Czasy obliczeń dla 15 bilionów interwałów C
200 x 10
6
Interwałów
Ilość procesów
Czas obliczeń [s]
Prędkość [int./s]
1
5,21
38387715,93
2
4,43
45146726,86
3
2,95
67796610,17
4
2,22
90090090,09
5
2,19
91324200,91
6
2,04
98039215,69
7
1,98
101010101
8
1,87
106951871,7
Średni czas
2,86125
-
Prędkość średnia
-
79843316,54
Tabela 2 Czasy obliczeń dla 200 milionów interwałów C
150 x 10
8
Interwałów
Ilość procesów
Czas obliczeń [s]
Prędkość [int./s]
1
19,56
766871165,6
2
9,89
1516683519
3
6,5
2307692308
4
4,95
3030303030
5
5,33
2814258912
6
5,07
2958579882
7
4,97
3018108652
8
4,95
3030303030
Średni czas
7,6525
-
Prędkość średnia
-
2430350062
Język C++
150 x 10
8
Interwałów
Ilość procesów
Czas obliczeń [s]
Prędkość [int./s]
1
19,7
761421319,8
2
9,82
1527494908
3
6,55
2290076336
4
4,91
3054989817
5
5,34
2808988764
6
4,92
3048780488
7
4,97
3018108652
8
4,93
3042596349
Średni czas
7,6425
-
Prędkość średnia
-
2444057079
Tabela 3 Czasy obliczeń dla 15 bilionów interwałów C++
200 x 10
6
Interwałów
Ilość procesów
Czas obliczeń [s]
Prędkość [int./s]
1
5,25
38095238,1
2
4,48
44642857,14
3
3,01
66445182,72
4
2,23
89686098,65
5
2,21
90497737,56
6
2,01
99502487,56
7
1,98
101010101
8
1,86
107526881,7
Średni czas
2,87875
-
Prędkość średnia
-
79675823,06
Tabela 4 Czasy obliczeń dla 200 milionów interwałów C++
Wykres 1 Czas obliczeń
0
2
4
6
8
10
12
14
16
18
20
1
2
3
4
5
6
7
8
Czas obliczeń [s]
150 bil. C
150 bil. C++
200 mln. C
200 mln. C++
Wykres 2 Prędkość [interwały/s]
Wykres 3 Prędkość [interwały/s]
0
5
10
15
20
25
30
35
1
2
3
4
5
6
7
8
x
1000
0000
0
Prędkość [interwały/s]
150 bil. C++
150 bil. C
0
2
4
6
8
10
12
1
2
3
4
5
6
7
8
x
1000
0000
Prędkość [interwały/s]
200 mln. C
200 mln. C++
4. Wnioski
J
ęzyk programowania ma znaczenie w czasie obliczeń (widać niewielkie różnice w
prędkościach obliczeń między językiem C a C++),
Czas obliczeń spadał wraz ze wzrostem zaangażowanych procesów,
P
rędkość wzrastała logarytmiczni wraz ze wzrostem ilości procesów,
Czas obliczeń był wyższy dla języka C++, a prędkość niższa niż dla języka C,
Średnie czasy obliczeń są porównywalne dla obydwóch języków, z niewielką przewagą na
rzecz C++
przy dużej ilości interwałów, a dla C dla małej ilości interwałów,
Średnie prędkości są porównywalne.