lab1 Przetwarzanie współbieżne

Przetwarzanie współbieżne

Wojciech Kupczyk

94415

Cele laboratorium:

Zrealizowane zadania: 1-8 oraz zadania dodatkowe.

Zadanie polegało na napisaniu i uruchomieniu programu wykonującego operacje arytmetyczne (iloczyn skalarny wektorów) i zmierzeniu czasu tych operacji.

Do kompilacji użyto polecenia:

gcc –o program program.c pomiar_czasu.c

W celu uruchomienia użyto polecenia: ./program – obok zrzut ekranu.

Program skompilowany został również używając polecenia make. Uzupełniony kod pliku Makefile załączony jest poniżej.

# kompilator c

CCOMP = gcc

# konsolidator

LOADER = gcc

# opcje optymalizacji:

# wersja do debugowania

OPT = -g -DDEBUG

# wersja zoptymalizowana do mierzenia czasu

# OPT = -O3

# zaleznosci i komendy

moj_program: moj_program.o pomiar_czasu.o

$(LOADER) $(OPT) moj_program.o pomiar_czasu.o -o moj_program

# Dopisana procedura

# jak uzyskac plik moj_program.o ?

moj_program.o: moj_program.c pomiar_czasu.h

$(CCOMP) -c $(OPT) moj_program.c

pomiar_czasu.o: pomiar_czasu.c pomiar_czasu.h

$(CCOMP) -c $(OPT) pomiar_czasu.c

Zadania dodatkowe:

Zawartość archiwum pomiar_czasu.tgz została wypakowana do nowego katalogu: pomiar_czasu. Kompilujemy plik pomiar_czasu.c poleceniem: gcc –c pomiar_czasu.c w celu otrzymania pliku pomiar_czasu.o. Za pomocą polecenia ar rs libpomiar.a pomiar_czasu.o został utworzony plik biblioteczny libpomiar.a. Modyfikujemy Makefile oraz uruchamiamy program poleceniem make.

Kolejny uzupełniony kod pliku Makefile załączony jest poniżej.

# kompilator c

CCOMP = gcc

# konsolidator

LOADER = gcc

# opcje optymalizacji:

# wersja do debugowania

OPT = -g -DDEBUG

# wersja zoptymalizowana do mierzenia czasu

# OPT = -O3

# pliki naglowkowe

INC = -I../pomiar_czasu

# biblioteki

LIB = -L../pomiar_czasu –lpomiar

# zaleznosci i komendy

moj_program: moj_program.o

$(LOADER) $(OPT) moj_program.o -o moj_program $(LIB)

# jak uzyskac plik moj_program.o ?

moj_program.o: moj_program.c

$(CCOMP) $(INC) -c $(OPT) moj_program.c

clean:

rm -f *.o

Poniżej załączam fragment kodu źródłowego wykonywanego programu:

int main()

{

srand(time(NULL));

inicjuj_czas();

//Otwarcie pliku do zapisu:

FILE *fp;

if ((fp=fopen("wynik.txt", "w"))==NULL) // otwarcie pliku do zapisu

{

printf ("Nie mogę otworzyć pliku wynik.txt do zapisu! \n");

exit(1);

}

// Dynamiczna alokacja pamięci:

double *tab1, *tab2, tCPU, tClock, tCPUZapis, tClockZapis;

size_t size = 1000000;

tab1 = (double *)malloc(sizeof(double) * size);

tab2 = (double *)malloc(sizeof(double) * size);

if (!tab1 || !tab2)

{

perror("malloc");

return EXIT_FAILURE;

}

//Wypełnienie tablic:

int i=0;

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

{

tab1[i] = rand()/(RAND_MAX + 1.0);

tab2[i] = rand()/(RAND_MAX + 1.0);

}

// Mnożenie elementów tablic oraz pomiar czasu tej operacji:

tCPU = czas_CPU();

tClock = czas_zegara();

double suma =0;

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

{

suma += tab1[i]*tab2[i];

}

tCPU = czas_CPU() - tCPU;

tClock = czas_zegara() - tClock;

// Zapis do pliku oraz pomiar czasu tej operacji:

tCPUZapis = czas_CPU();

tClockZapis = czas_zegara();

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

{

fprintf (fp, "%lf", tab1[i]);

fprintf (fp, "%s", "\t");

fprintf (fp, "%lf", tab2[i]);

fprintf (fp, "%s", "\n");

}

tCPUZapis = czas_CPU() - tCPUZapis;

tClockZapis = czas_zegara() - tClockZapis;

//Wyświetlenie wyników:

wyswietl_wyniki();

return 0;


Wyszukiwarka

Podobne podstrony:
wyklady-pwir, Studia, 6. Semestr, Przetwazanie wspolbiezne
lab5 Przetwarzanie wspolbiezne Nieznany
lab 3 5 Przetwarzanie współbieżne
wyklady-pwir, Studia, 6. Semestr, Przetwazanie wspolbiezne
lab2 Przetwarzanie współbieżne
lab105 Przetwarzanie współbieżne
Przetwarzanie współbieżne
lab5 Przetwarzanie współbieżne
wyklady-pwir, Studia, 6. Semestr, Przetwazanie wspolbiezne
Jezyk C i przetwarzanie wspolbiezne w akcji
informatyka jezyk c i przetwarzanie wspolbiezne w akcji anthony williams ebook
Jezyk C i przetwarzanie wspolbiezne w akcji
Kopia LABORATORIUM-nasze, ZiIP, II Rok ZIP, Metrologia, Charkterystyka statyczna przetworników (lab1
Lab1 Mikrokontrolery i przetwarzanie sygnałów
LABORATORIUM, ZiIP, II Rok ZIP, Metrologia, Charkterystyka statyczna przetworników (lab1), Sprawozda
LABORATORIUM-nasze v2, ZiIP, II Rok ZIP, Metrologia, Charkterystyka statyczna przetworników (lab1),
LUKI2, ZiIP, II Rok ZIP, Metrologia, Charkterystyka statyczna przetworników (lab1), Sprawozdanie prz
Mariusz Charczuk Programowanie Współbieżne Lab.1 gr. 3ID11A, Studia PŚK informatyka, Semestr 5, Prog

więcej podobnych podstron