lab9 2 id 260334 Nieznany

background image

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

Ćwiczenie:

Ćwiczenie 9

Data oddania:

23.5.2013

Imię, Nazwisko:

Dawid Misiniec

Ocena:

Uwagi:


1.

Cel ćwiczenia

Celem ćwiczenia było wykonanie programu, który tworzy nowy typ zmiennych, bazując na

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

2.

Przebieg ćwiczenia

Poniżej przedstawiony jest kod źródłowy zawarty w utworzonym programie:


int main( int argc, char *argv[] )
{

int rank;
int size;
int tag = 1;
const int n=5;

MPI_Init( 0, 0 );
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Datatype typ;
MPI_Type_contiguous (n, MPI_DOUBLE, &typ);
MPI_Type_commit(&typ);
MPI_Status stat;
double a[n];
if (rank == 0)
{
for(int i=0; i<n;i++)
{
a[i]=i;
}
cout << "proces o randze: " <<rank ;
for(int i=0; i<n; i++) cout<< " a["<<i<<"]="<<a[i]<<" ";
cout <<endl;
for(int i=1;i<size;i++)
MPI_Send(&a[i], 1, typ, i, tag, MPI_COMM_WORLD);
}else{
MPI_Recv(&a, 1, typ, 0, tag, MPI_COMM_WORLD,&stat);
cout << "proces o randze: " <<rank ;
for(int i=0; i<n; i++) cout<< " a["<<i<<"]="<<a[i]<<" ";
cout <<endl;
}
MPI_Finalize();
return 0;
}

background image

1) Program po kolei deklaruje wszystkie zmienne (rank - numer aktualnego procesu,

size -

ilość wszystkich procesów, tag, n - stała odpowiadająca za wielkość

tablicy/wektora a).

2) Rozpoczy

na działanie programu, jako programu wieloprocesowego.

3) Inicjuje

komunikator, którym zapisuje ilość i rangę procesów do poszczególnych

zmiennych.

4)

N

astępnie deklaruje nowy typ zmiennych o nazwie typ.

5)

Za

pomocą funkcji MPI_Type_contiguous, ustala, że nowy typ zmiennych o nazwie

typ, będzie przechowywał n zmiennych typu MPI_DOUBLE.

6)

MPI_Type_commit powoduje zatwierdzenie nowego typu zmiennych o nazwie typ.

7)

Następnie do zmiennej o nazwie stat, zapisywany jest status komunikatu
(wysłany/odebrany).

8)

Deklaracja tablicy/wektora typu double o n elementach.

9)

Sprawdzenie warunku: jeśli proces, jest procesem 0ym, musi wypełnić tablicę a
kolejnymi liczbami typu int od 0 do n-

1, a następnie wypisać tą tablicę.

10)

Zerowy proces wysyła fragment tablicy a zmniejszonej o 1 do każdego kolejnego
procesu.

11)

Jeśli warunek z 9) nie jest spełniony (proces jest procesem innym niż 0wy), następuje
odebranie przesyłanego komunikatu, oraz wypisanie tablicy, która została odebrana.

12)

Finalizacja działa programu wieloprocesowego.

13)

Program zwraca 0.

3. Wnioski

Możliwe jest stworzenie nowego typu zmiennych, bazując na istniejącym typie.

Można wykonywać normalne operacje na typie pochodnym, tak samo jak na
typie pierwotnym.

Stworzenie nowego typu, który jest typem pochodnym do istniejącego, może
skrócić ilość linijek kodu, oraz czas jego wykonywania.


Wyszukiwarka

Podobne podstrony:
lab9 3 id 260337 Nieznany
lab9 5 id 260341 Nieznany
grafika 3D lab9 id 194729 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
Misc3 id 302777 Nieznany

więcej podobnych podstron