Realizarea Panoramelor

18
Realizarea Panoramelor Realizarea Panoramelor George Pasatoiu Zafiu Andrei 343C1

description

Realizarea Panoramelor. George Pasatoiu Zafiu Andrei 343C1. Cuprins. Informatii generale panorame Notiuni teoretice Algoritmi folositi Exemple Concluzii Intrebari. Informatii generale panorame. Panorama: - PowerPoint PPT Presentation

Transcript of Realizarea Panoramelor

Page 1: Realizarea Panoramelor

Realizarea PanoramelorRealizarea Panoramelor

George Pasatoiu

Zafiu Andrei

343C1

Page 2: Realizarea Panoramelor

CuprinsCuprinsInformatii generale panorameNotiuni teoreticeAlgoritmi folositiExempleConcluziiIntrebari

Page 3: Realizarea Panoramelor

Informatii generale panorame Panorama:

Imagine de dimensiuni mari , de obicei o priveliste din natura cu orizont larg , vazuta de departe

Termen format din 2 cuvinte grecesti (πᾶν "all" + ὅραμα "sight" )

Notiunea a fost folosita prima oara de pictorul Robert Barker , pentru a-si descrie describe picturile panoramice ale Edinburghului.

Page 4: Realizarea Panoramelor

Notiuni teoretice 1

Imaginile panoramice se pot obtine :

folosind lentile de distanta focala foarte mica,eventual in conjunctie cu oglinzi

alta abordare - realizarea unui set de poze si alipirea lor ulterioara in vederea realizarii unei imagini mari

Page 5: Realizarea Panoramelor

Notiuni teoretice 2Pasi de urmat :

Inlaturarea eventualelor aberatii geometrice

Identificarea modului in care fotografiile se potrivesc cel mai bine

Alipirea propriu-zisa a imaginilor

Page 6: Realizarea Panoramelor

Complexitate 2Complexitate 2

Page 7: Realizarea Panoramelor

Paralelizare OPENMP1 Paralelizare OPENMP1 Rezultate Obtinute:

Abordare:• S-au paralelizat sectunile de alocare

memorie date initiale• S-au folosit operatii pe biti in

structurile de decizie

Page 8: Realizarea Panoramelor

Paralelizare OPENMP2Paralelizare OPENMP2#pragma omp parallel for shared (adjLoops,N_LOOPS,alr)

private(i,j)

for(i=0;i<N_LOOPS;i++)

{

alr = (int*)calloc(4, sizeof(int));

for(j=0;j<4;j++)

alr[j] = 0;

adjLoops[i] = alr;

}

#pragma omp parallel for shared(adjLoops,N_LOOPS) private(i)

for(i=0;i<N_LOOPS;i++)

{

adjLoops[I][0] = 1;

}

Page 9: Realizarea Panoramelor

Paralelizare PTHREADS1 Paralelizare PTHREADS1 Rezultate Obtinute:

Abordare:• S-a ales o varianta simpla de paralelizare (nu

a fost nevoie de sincronizari)• S-au creat threaduri si s-a alocat fiecaruia un

numar egal de iteratii din totalul de N_LOOPS

Page 10: Realizarea Panoramelor

Paralelizare PTHREADS2 Paralelizare PTHREADS2 void* algoritm(void *params) //functie executata de fiecare thread

{

struct parametri* p = (struct parametri*) params;

for(i=p->start;i<=p->stop;i++)

… calcule intensive…

}

for (i = 0; i < nrThreads; i++) //creare threaduri

{

param[i].start=i*N_LOOPS/nrThreads;

if (i!=nrThreads-1)

param[i].stop=(i+1)*N_LOOPS/nrThreads-1;

else param[i].stop=N_LOOPS-1;

pthread_create(&t[i], NULL, &algoritm, &param[i]);

}

Page 11: Realizarea Panoramelor

Performante1Performante1S-au obtinut rezultate mai bune fata de

codul initial (solutia MPI nu s-a dovedit viabila)

Din cele 2 tabele se observa faptul ca threadurile POSIX obtin rezultate semnificativ mai bune decat threadurile OPENMP

Prin metoda de paralelizare cu POSIX s-a obtinut o imbunatatire de aproximativ 10% fata de varianta paralela cu OPENMP

Page 12: Realizarea Panoramelor

Performante2Performante2 Grafic Latice 5x5

Page 13: Realizarea Panoramelor

Performante3Performante3 Grafic Latice 6x5

Page 14: Realizarea Panoramelor

ObservatiiObservatiiRezultatele indica faptul ca timpul obtinut depinde si

de compilatorul folosit (gcc e mai eficient decat SunCC)

Tentativele de a elimina/inlocui structurile de decizie din cadrul “for-ului” intensiv s-au dovedit a fi neviabile (inlocuirea cu o formula matematica consuma mai multe resurse)

Formula matematica substitut:p1m=p1m+(m-p1m)*(1/abs2(2*p1n+1))*(int)(1.5*p1n*p1n/

(p1n*p1n+0.1));

p2n=p2n+(n-p2n)*(int)(abs2(p1n+1)/(abs2(p1n+1)-0.001));

p2m=p2m+(m-p2m)*(int)(abs2(p1n+1)/(abs2(p1n+1)-0.001));

p1n=p1n+(n-p1n)*(1/abs2(2*p1n+1))*(int)(1.5*p1n*p1n/(p1n*p1n+0.1));

Page 15: Realizarea Panoramelor

ConcluziiConcluziiMetoda POSIX s-a dovedit a fi cea mai

eficienta deoarece exista o repartizare egala pentru fiecare thread (load balancing eficient)

Se mai pot incerca diverse variante de paralelizare cu OPENMP prin folosirea unor directive alternative (#pragma omp section, #pragma omp atomic)

Page 16: Realizarea Panoramelor

BIBLIOGRAFIEBIBLIOGRAFIEhttp://ku1k.sourceforge.net/index.htmlhttp://people.unt.edu/ov0006/http://numod.ins.uni-bonn.de/people/

vantzos/index.html Investigation of the Evolution and Breakup of

Electrically Charged Drops (S. I. Betel , M. A. Fontelos , U. Kindelán and O. Vantzos)

Page 17: Realizarea Panoramelor

IntrebariIntrebari

Page 18: Realizarea Panoramelor

MultumimMultumimDimitris Skipis Orestis

Vantzos