09 Zawadzkiid 8062 Nieznany (2)

background image

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

Ćwiczenie:

Ćwiczenie 9

Data oddania:

10.6.2013

Imię, Nazwisko:

Mateusz Zawadzki

Ocena:

Uwagi:


Cel ćwiczenia

Program miał za zadanie utworzyć nowy typ zmiennych o nazwie typ, bazując na

istniejącym juz typie double. Nowy typ miał zawierać wielkosc liczb typu double, gdzie
wielkosc określał również wielkość tablicy wektor.


Przebieg ćwiczenia

Poniżej przedstawiony jest listing programu:

int

main(

int

argc

,

char

*

argv

[] )

{

int

rank;

int

size;

int

tag = 1;

const int

wielkosc=5;

MPI_Init( 0, 0 );
MPI_Comm_rank(

MPI_COMM_WORLD

, &rank);

MPI_Comm_size(

MPI_COMM_WORLD

, &size);

MPI_Datatype

typ;

//deklaracja nowego typu o nazwie typ

MPI_Type_contiguous (wielkosc, MPI_DOUBLE, &typ);

// definicja nowego typu

MPI_Type_commit(&typ);

//"popełnij" nowy typ

MPI_Status

stat;

double

wektor[wielkosc];

if (rank == 0)
{
for(int i=0; i<wielkosc;i++)

//wypełnianie tablicy wektor kolejnymi liczbami

{

wektor[i]=i;
}
cout <<

"proces: "

<<rank ;

for(

int

i=0; i<n; i++) cout<<

" wektor["

<<i<<

"]="

<<wektor[i]<<

" "

;

//wypisanie wektora

//z procesu 0

cout <<endl;
for(

int

i=1;i<size;i++)

MPI_Send(&wektor[i], 1, typ, i, tag, MPI_COMM_WORLD);

//wysłanie wektora

//nowego typu do procesu 1

}else{
MPI_Recv(&wektor, 1, typ, 0, tag

,

MPI_COMM_WORLD

, &stat);

//odebranie

//wektora nowego typu od procesu 0

background image

cout <<

"proces: "

<<rank ;

//wypisanie odebranego

//wektora

for(

int

i=0; i<wielkosc; i++) cout<<

" wektor["

<<i<<

"]="

<<wektor[i]<<

" "

;

cout <<endl;

}
MPI_Finalize();

//zakończenie bloku MPI

return

0;

}

Opis działania programu

Program deklaruje i definiuje wszystkie niezbędne zmienne (rank, size, tag, wielkosc).

Następnie inicjalizowany jest blok MPI, w którym to zmiennej rank wpisywana jest
informacja o randze procesu, który aktualnie wykonuje polecenia, a do zmiennej size, ilość
procesów biorących udział w wykonywaniu programu.

Program deklaruje nowy typ zmiennych o nazwie typ, definiuje go (ilość danych

w wektorze = wielkosc, typ danych w wektorze = MPI_DOUBLE, dane zostaną zapisane do
zmiennej o nazwie = &typ), a następnie zapisuje dane do nowego typu zmiennych.

Program zapisuje status wykonywania do zmiennej o nazwie stat.

Tworzony jest nowy wektor o nazwie wektor typu double i wielkości wielkosc.

Blok decyzyjny: Jeśli proces, który wykonuje polecenia ma rangę 0 wypełnia tablicę

kolejnymi liczbami typu int od 0 do welkosc (bez wartości zapisanej w wielkosc), a następnie
wypisuje całą zawartość wektora, który został przed chwilą utworzony, oraz wysyła koeljne
wyrazy wektora wektor do ilości zmiennych wpisanych w typ typ, do procesu o randze 1.

Jeśli proces ma inną rangę niż 0, odbiera wysłane dane a następnie wypisuje na ekran

otrzymane dane.

Program finalizuje działanie bloku MPI oraz zwraca 0 po zakończeniu działania.


Wyszukiwarka

Podobne podstrony:
Prawo dewizowe 2010 09 id 38648 Nieznany
2000 09 Szkola konstruktorowid Nieznany (2)
cwiczenia 09 id 124345 Nieznany
09 Programowanie w srodowisku j Nieznany
09 wykladid 8098 Nieznany
2002 09 Osla laczka Nieznany (2)
gal08 09 id 185722 Nieznany
84 Nw 09 Wzmacniacz operacyjny Nieznany (2)
B 09 x id 74805 Nieznany (2)
09 6id 7711 Nieznany (2)
acad 09 id 50516 Nieznany (2)
E1 Teoria 2008 09 id 149145 Nieznany
I CSK 166 09 1 id 208206 Nieznany
Fizjologia Cwiczenia 09 id 1743 Nieznany
09 11id 7696 Nieznany (2)
311[10] Z1 09 Wykonywanie pomia Nieznany (2)
26429 09 id 31508 Nieznany (2)
09 plid 8090 Nieznany
09 Przygotowanie i organizacja Nieznany (2)

więcej podobnych podstron