lab10 3 id 259045 Nieznany

background image

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

Ćwiczenie:

Ćwiczenie 10

Data oddania:

10.6.2013

Imię, Nazwisko:

Dawid Misiniec

Ocena:

Uwagi:


1.

Cel ćwiczenia:

Celem ćwiczenia było zapoznanie się z zastosowaniem typów pochodnych.

2.

Przebieg ćwiczenia:


Przygotowywany przez nas program, m

iał tworzyć wektor wypełniony pewnymi

wartościami, a następnie za pomocą typu pochodnego rozesłać nowe dane do
poszczególnych procesów. Poniższy schemat ilustruje działanie programu:


Bazowy wektor miał zostać wypełniony liczbami z zakresu {11, 12, 13, 21, 22,

23, … , 111, 112, 113}, a następnie "poszatkowany" przez typ pochodny, który
obcina wyjściowy wektor o co trzecią wartość. Dla ilości procesów większej niż 3
wyświetlone zostanie 2 x (n-1) bloków, gdzie n to ilość uruchomionych procesów.

background image

3. Listing programu
int main( int argc, char *argv[] )
{

MPI_Init( 0, 0 );

MPI_Comm_rank(MPI_COMM_WORLD, &rank);

MPI_Comm_size(MPI_COMM_WORLD, &size);

if (size < 2)

{

cout << "Odpalono za malo procesow" << endl;

MPI_Finalize();

}

MPI_Status status;

MPI_Datatype typ;

double * wektor, *wektor2;

MPI_Type_vector(2, 2, 3, MPI_DOUBLE, &typ);

MPI_Type_commit(&typ);

int liczba = 11;

wektor = new double [size*3];

for (int i = 0; i < (size*3); i++)

{

wektor[i] = liczba;

liczba++;

if (liczba % 10 > 3)

liczba += 7;

}

if (rank == 0)

{

for (int i = 1; i < size; i++){

MPI_Send(wektor, 1, typ, i, 100, MPI_COMM_WORLD);

}

cout << "proces: " <<rank ;

for(int i=0; i<n; i++) cout<< " wektor["<<i<<"]="<<wektor[i]<<" ";

cout <<endl;

}else

{

wektor2 = new double [size*2];

MPI_Recv(wektor2, size*2, MPI_DOUBLE, 0, 100,

MPI_COMM_WORLD, &status);

cout << "Proces " << rank << " ";

int ile = rank*2;

if (size == 2) ile = 4;

for (int i = 0; i < (ile); i++)

cout << "wektor2[" << i << "]=" << wektor2[i] << " ";

cout << endl;

}

MPI_Finalize();

return 0;

}

background image

4.

Wynik działania programu:

Wynik działania programu dla dwóch procesów:


Wynik działania programu dla 3 procesów:


5. Wnioski

Typy pochodne

pozwalają na szybką modyfikację dużej ilości danych,

Jeśli ilość danych jest zbyt mała, aby zapełnić cały typ pochodnych,
pozostałe dane zostaną zignorowane,


Wyszukiwarka

Podobne podstrony:
lab10 6 id 259051 Nieznany
Lab10 Sprawozdanie id 259061 Nieznany
Lab10 Sprawozdanie id 259061 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
pedagogika ogolna id 353595 Nieznany

więcej podobnych podstron