lab 3 5 Przetwarzanie współbieżne

Przetwarzanie współbieżne

Wojciech Kupczyk

94415

Cele laboratorium:

• Doskonalenie nabytych umiejętności programowania z wykorzystaniem biblioteki pthreads.

Zrealizowane zadania: 1-3

Ad. 1-3. Program pobiera jako argument ilość wątków na których ma pracować. Po uruchomieniu podajemy liczbę składników szeregu Leibniza, które chcemy obliczyć. Ilość składników jest równo dzielona pomiędzy wątki, natomiast w przypadku niemożliwości równego podziału, reszta z dzielenia jest dodawana do ostatniego wątku. Kod programu i widok jego wykonania załączam poniżej.

double suma_glob = 0;

typedef struct {

int indeks_poczatkowy;

int ilosc;

}parametry;

void * zadanie_watku (void * arg_wsk)

{

int i;

parametry* arg = (parametry*) arg_wsk;

printf(" ----\n\tWatek liczy %d wyrazow zaczynajac od %d\n ----\n",arg->ilosc, arg->indeks_poczatkowy);

for(i=arg->indeks_poczatkowy; i<arg->ilosc; i++){

suma_glob += (pow(-1,i)/(2*i +1));

}

return(NULL);

}

//////////***********************************************************////////////

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

int il_watkow = atoi(argv[1]);

pthread_t tablica_tid[il_watkow];

int i,ilosc, ilosc_dla_watku,ilosc_dla_ostatniego;

parametry p;

double roznica=0;

printf("Podaj ilosc skladnikow szeregu: ");

scanf("%d", &ilosc);

//ilosc skladnikow szeregu dla poszczegolnych watkow

ilosc_dla_watku = ilosc/il_watkow;

ilosc_dla_ostatniego = ilosc%il_watkow;

int tab_ind[il_watkow];

for(i=0; i<il_watkow; i++) {

if(i<il_watkow-1)tab_ind[i]=ilosc_dla_watku;

else tab_ind[i] = ilosc_dla_watku+ilosc_dla_ostatniego;

}

inicjuj_czas();

for(i=0; i<il_watkow; i++){

p.ilosc = tab_ind[i];

p.indeks_poczatkowy = i*ilosc_dla_watku;

pthread_create(&tablica_tid[i], NULL, zadanie_watku, (void*)&p);

pthread_join(tablica_tid[i], NULL);

}

drukuj_czas();

roznica = fabs(M_PI - suma_glob*4);

printf("\n********************************\nLiczba PI obliczona na %d watkach po %d iteracjach: %.10lf\nTablicowa wartosc: %.10lf\nRoznica: %.10lf\n********************************\n\n",il_watkow,ilosc,suma_glob*4,M_PI,roznica);

return 0;

}

Na screen’ach widać, że program dla większej ilości wątków wykonuje obliczenia szybciej. Dokładność obliczeń wzrasta wraz ze zwiększaniem ilości składników szeregu, więc możemy uznać, że zadanie zostało wykonane poprawnie.


Wyszukiwarka

Podobne podstrony:
wyklady-pwir, Studia, 6. Semestr, Przetwazanie wspolbiezne
lab5 Przetwarzanie wspolbiezne Nieznany
Farys El Rezqallah Przetwarzanie tekstu IiAM2, OI Lab Przetwarzanie tekstu Farys El Rezqallah IiAM2
wyklady-pwir, Studia, 6. Semestr, Przetwazanie wspolbiezne
lab2 Przetwarzanie współbieżne
Farys El-Rezqallah Przetwarzanie tekstu IiAM2 OI Lab.Przetwarzanie tekstu Farys El-Rezqallah IiAM2
lab105 Przetwarzanie współbieżne
3ID12A Sprawozdanie Lab 6 Programowanie Współbieżne
Przetwarzanie współbieżne
lab1 Przetwarzanie współbieżne
lab5 Przetwarzanie współbieżne
wyklady-pwir, Studia, 6. Semestr, Przetwazanie wspolbiezne
Jezyk C i przetwarzanie wspolbiezne w akcji
3ID13B Sprawozdanie Lab 9 Programowanie Współbieżne
informatyka jezyk c i przetwarzanie wspolbiezne w akcji anthony williams ebook
Jezyk C i przetwarzanie wspolbiezne w akcji
3ID13B Sprawozdanie Lab 8 Programowanie Współbieżne
(Ćw nr 2) PA Lab CHARAKT PRZETW SREDNICH CISNIEN
PPTSiA lab lista prezentacji, Studia, AiR, SEMESTR I, Procesy przetwórstwa tworzyw sztucznych i ich

więcej podobnych podstron