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 [Link]
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
[Link]
ci
CIOBANU Catalin Bogdan
4:09 PM
varianta free
ssh -p <port_ssh> <user>@[Link]
[Link]:<port_remotedesktop>
ci
CIOBANU Catalin Bogdan
4:11 PM
schimbare parola
passwd
Pt makefile
[Link]
[Link]
[Link]
8843-winSCP
user: marcum
pass: Changeme!!!
port ssh 8843
port remotedesktop 8863
tema generala
tehnologii
istoric
digits – 30 cifre