background image

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

Interwałów 

Ilość procesów 

Czas obliczeń [s] 

Prędkość [int./s] 

5,21 

38387715,93 

4,43 

45146726,86 

2,95 

67796610,17 

2,22 

90090090,09 

2,19 

91324200,91 

2,04 

98039215,69 

1,98 

101010101 

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

Interwałów 

Ilość procesów 

Czas obliczeń [s] 

Prędkość [int./s] 

19,56 

766871165,6 

9,89 

1516683519 

6,5 

2307692308 

4,95 

3030303030 

5,33 

2814258912 

5,07 

2958579882 

4,97 

3018108652 

4,95 

3030303030 

Średni czas 

7,6525 

Prędkość średnia 

2430350062 

background image

Język C++ 

150 x 10

Interwałów 

Ilość procesów 

Czas obliczeń [s] 

Prędkość [int./s] 

19,7 

761421319,8 

9,82 

1527494908 

6,55 

2290076336 

4,91 

3054989817 

5,34 

2808988764 

4,92 

3048780488 

4,97 

3018108652 

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

Interwałów 

Ilość procesów 

Czas obliczeń [s] 

Prędkość [int./s] 

5,25 

38095238,1 

4,48 

44642857,14 

3,01 

66445182,72 

2,23 

89686098,65 

2,21 

90497737,56 

2,01 

99502487,56 

1,98 

101010101 

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ń 

 
 

10 

12 

14 

16 

18 

20 

Czas obliczeń [s] 

150 bil. C 

150 bil. C++ 

200 mln. C 

200 mln. C++ 

background image

 

Wykres  2 Prędkość [interwały/s] 

 

 

Wykres  3 Prędkość [interwały/s] 

 
 
 

10 

15 

20 

25 

30 

35 

1000

0000

0

 

Prędkość [interwały/s] 

150 bil. C++ 

150 bil. C 

10 

12 

1000

0000

 

Prędkość [interwały/s] 

200 mln. C 

200 mln. C++ 

background image

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.