lab8 3 id 260253 Nieznany

background image

Programowanie równoległe i współbieżne

Ćwiczenie:

Ćwiczenie 8

Data oddania:

10.6.2013

Imię, Nazwisko:

Dawid Misiniec

Ocena:

Uwagi:


1.

Cel ćwiczenia:

Celem ćwiczenia było zapoznanie się z funkcjami komunikacji kolektywnej

w celu obliczenia

całki na przedziale <0, 4> dla funkcji f(x) = x

2

.

2.

Przebieg ćwiczenia:


Funkcje użyte w programie, służące do rozsyłania komunikatów kolektywnych:

MPI_Bcast ( buffer, count, datatype, root, comm )
Rozgłasza wiadomość z procesu o identyfikatorze "root" do wszystkich procesów w
grupie włącznie z nim samym.
buffer -

adres w pamięci początku bufora (zleży od wyboru);

count -

ilość elementów w buforze (integer);

datatype -

typ danych elementów bufora (handle);

root -

rank procesu rozsyłającego (handle);

comm - komunikator (handle);

MPI_Reduce ( sendbuf, recvbuf, count, datatype, op, root, comm )
Redukuje wartości we wszystkich procesach do pojedynczej wartości.
sendbuf
-

adres bufora wysyłania;

count -

ilosć elementów w buforze wysyłania (integer);

datatype -

typ danych w buforze wysłania (handle);

op - operacja redukcji (handle);
root - rank procesu root (integer);
comm - komunikator (handle);

Powyższe funkcje zastosowano w następujący sposób:

if (rank == 0)
{
cout<< "na ile czesci podzielic funkcje? ";
cin >> czesci;
}
MPI_Bcast(&czesci, 1, MPI_INT, 0, MPI_COMM_WORLD);


Tylko proces o randze 0 przyjmował ilość części na jakie został podzielony przedział
funkcji, był on zatem odpowiedzialny za rozesłanie tej informacji do wszystkich
pozostałych procesów, co nastąpiło dzięki poleceniu MPI_Bcast.

Po wszystkich niezbędnych operacjach obliczeniowych wykonywanych przez każdy
proces osobno na innym zbiorze danych (całki lokalne i sumy lokalne) następowało

background image

ich sumowanie w proces

ie 0, za pomocą funkcji MPI_Reduce, wykorzystanej

w następujący sposób:

MPI_Reduce(&calkalok,&calka,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);

Powyższy zapis, sumuje wszystkie wartości sygnowane nazwą calkalok i zapisuje je do
zmiennej calka.

Przygotowany przez nas program, obliczał wartość całki obliczanej dwoma metodami:
prostokątów oraz trapezów. W zależności od doboru metody, ilości przedziałów oraz
uruchomionych procesów zmieniał się czas obliczeń, oraz błąd względny (błąd obliczany
przez odjęcie wartości obliczonej całki od jej faktycznej wartości, która dla przedziału <0, 4>
wynosi 21


).

3.

Wynik działania programu:


Metoda prostokątów, 10, 100 i 1000 przedziałów dla 1 procesu:





background image

Metoda prostokątów dla 10, 100 i 1000 przedziałów dla 2óch procesów:


Metoda trapezów dla 10, 100 i 1000 przedziałów dla 1 procesu:

background image

Metoda trapezów dla 10, 100 i 1000 przedziałów dla 2óch procesów:


Wyszukiwarka

Podobne podstrony:
lab8(1) id 260269 Nieznany
lab8 2 id 260250 Nieznany
Lab 8 lab8 id 749787 Nieznany
lab8(1) id 260269 Nieznany
Lab8 occ id 260283 Nieznany
Lab8 occ id 260283 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany
analiza ryzyka bio id 61320 Nieznany

więcej podobnych podstron