Programowanie równoległe i współbieżne
Ćwiczenie: Data oddania:
Ćwiczenie 10 10.6.2013
Imię, Nazwisko: Ocena:
Aleksandra Kulecka
Uwagi:
1. Cel ćwiczenia
Celem ćwiczenia było wykonanie programu, którego zadaniem było przesłanie do wszystkich
procesów, wektora utworzonego poprzez nowo zdefiniowany typ za pomocą funkcji
MPI_Type_vector(2, 2, 3, MPI_DOUBLE, &typ);
2. Przebieg ćwiczenia
Program wypełnia wektor liczbami z zakresu {11, 12, 13, 21, 22, 23, & , 111,
112, 113}, a następnie rozsyła fragmenty pierwotnego wektora do pozostałych
procesów, odpowiednio zmodyfikowane o obcięcie co trzeciej liczby z zakresu,
zgodnie z powyższym schematem. Dla większej niż 2 ilości procesów
wyświetlane jest 2 x (n-1) bloków, gdzie n to liczba uruchomionych procesów.
3. Wynik wykonywania programu
Wynik działania programu dla dwóch procesów:
Wynik działania programu dla 3 procesów:
4. Kod zródłowy 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: " <
for(int i=0; icout <}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;
}
Wyszukiwarka
Podobne podstrony:
lab10
I9G1S1 Nadolny Michal Lab10
lab10
lab10 Verilog
fiza lab10
lab10
AiP Lab10
Lab10
sop 2009 lab10
lab10
Lab10 occ
i2 lab10
lab10 macierze wektory
lab10 AC
panek LAB10
lab10
Lab10 RSVP
Lab10 integracja z ms?cess
więcej podobnych podstron