Sunteți pe pagina 1din 6

5.

Scrieti un program C sau C++ care contine trei functii: genereaza(), sorteaza() si contopeste():

A. genereaza() genereaza aleator doua siruri cu N elemente fiecare initializate cu numere aleatoare

B. sorteaza() sorteaza cele doua siruri folosind o functie scrisa de dvs. (nu se permite folosirea functiilor
de sortare din librarii)

C. contopeste() contopeste cele doua siruri sortate intr-un sir de dimensiune 2N. Numarul N este o
constanta definita in header-ul "constante.h"

D. Eliminati toate mesajele tiparite de program cu exceptia printarii numarului de elemente N si realizati
profilul de rulare al programului folosind utilitarul gprof.

Pentru a accesa manualul de utilizare rulati din terminal comanda 'man gprof'. Ajustati numarul de
elemente N pentru ca timpul de rulare sa fie de minim 10 secunde. Pentru a determina timpul de rulare
folositi comanda "time ./nume_executabil_program".

time ./cod_obiect

$ gprof ./cod_obiect gmon.out


E. Modificati programul pentru a avea doua functii separate care implementeaza doi algoritmi diferiti de
sortare la alegere (de exemplu, bubble sort si quick sort). Folositi un algoritm de sortare pentru a sorta
primul sir si celelalalt algoritm de sortare pentru a sorta al doilea sir. Realizati noul profil de rulare,
ajustand numarul de elemente pentru ca timpul de rulare sa fie de minim 10 secunde.

Creare profil de rulare

N=780

F. Recompilati programul si refaceti profilul de rulare adaugand succesiv urmatoarele flag-uri de


compilator:
-O0
-O1
-O2
-O3

G. Creati header-ul "alg_sort.h" in care treceti prototipurile celor doua functii de sortare. Mutati fiecare
functie de sortare in propriul fisier .c (de exemplu, bubblesort.c si quicksort.c).

Scrieti un Makefile pentru a automatiza procesul de compilare.

H. Adaugati la Makefile optiuni de a compila pentru performanta maxima, pentru debugging, pentru
profiling, si pentru a curata fisierele temporare ("make clean").

I. Monitorizati frecventa de ceas si temperatura procesorului inainte de rulare si in timpul rularii


programului. Folositi urmatoarele comenzi din linia de comanda:
vcgencmd measure_temp
vcgencmd measure_clock arm
J. Inlocuiti cea mai lenta functie de sortare cu Bitonic Sort implementata cu OpenMP pe 4 core-uri.
Repetati profiling-ul cu gprof, masurarea temperaturii, masurarea frecventei procesorului. Timp de
rulare minim 60 de secunde. In timpul rularii faceti un screenshot al utilitarului htop pentru a vedea ca
toate cele 4 core-uri sunt utilizate.

K. Faceti un grafic cu scalarea vitezei lui Bitonic Sort cu OpenMP care foloseste 1, 2, 3, sau 4 core-uri de
pe Raspberry Pi.
ci
CIOBANU Catalin Bogdan
4:08 PM

https://mobaxterm.mobatek.net/

ci
CIOBANU Catalin Bogdan
4:09 PM

varianta free

ssh -p <port_ssh> <user>@tc.unitbv.ro

tc.unitbv.ro:<port_remotedesktop>

ci
CIOBANU Catalin Bogdan
4:11 PM

schimbare parola

passwd

Pt makefile

https://stackoverflow.com/questions/3576698/simple-makefile-generation-utility

https://en.wikipedia.org/wiki/Makefile

https://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
8843-winSCP

user: marcum

pass: Changeme!!!

port ssh 8843

port remotedesktop 8863

tema generala

tehnologii

istoric

digits – 30 cifre

S-ar putea să vă placă și