prezentare_whc _ncit

13
Workflow Heterogeneous Computing GL, VS, GT

Upload: shaa

Post on 21-Mar-2016

221 views

Category:

Documents


2 download

DESCRIPTION

prezentare whc ncit

TRANSCRIPT

Page 1: Prezentare_whc _ncit

Workflow Heterogeneous Computing

GL, VS, GT

Page 2: Prezentare_whc _ncit

API pentru dezvoltarea programelor ce se executa pe multiple platforme eterogene

Page 3: Prezentare_whc _ncit

Initializare Executie efectiva Terminare

CPU CPUCPUGPU

__kernel ()

Page 4: Prezentare_whc _ncit

Filtre GaussFiltre GaussIdee:

• Pixelul rezultat este o medie ponderata a pixelilor vecini, cu ponderile:

• S-a folosit o singura functie de kernel, executata de catre toate unitatile de calcul

1 2 1

2 4 2

1 2 1

in.pgm out.pgm

Un usor efect de blur

Page 5: Prezentare_whc _ncit

Idee:

• S-au folosit doua functii de kernel, aplicate succesiv

• Se folosesc doua filtre, cu ponderile:

•Prima functie kernel aplica primul filtru asupra setului de date (afland Dx)

• A doua functie aplica al doilea filtru (afland Dy) si calculeaza valoarea unui pixel dupa formula:

1 2 1

0 0 0

-1 -2 -1

-1 0 1

-2 0 2

-1 0 1

Observatii:

- este avantajoasa executia pe GPU in cazul setului mare de date (imagini cu rezolutie mare)

Filtre SobelFiltre Sobel

Page 6: Prezentare_whc _ncit

Histogram Equalization• transformare prin care se obtine o imagine cu o

histograma distribuita uniform• utilizata pentru a creste vizibilitatea detaliilor

• rezultatul maximizeaza contrastul unei imagini fara a pierde informatii de tip structural

Page 7: Prezentare_whc _ncit

Histogram Equalization (implementare)

• Functii kernel:1. calculeaza numarul de pixeli din imagine cu

intensitatea <= I [0..255];2. calculeaza noua valoare a fiecarui pixel T: T = (n[valoare_pixel] - n[0]) * 255 / (nr_total_pixeli - n[0]);

• Rezultate obtinute:

Page 8: Prezentare_whc _ncit

Fractali• o figura geometrica care poate fi divizata in

parti, astfel incat fiecare din acestea sa fie o copie in miniatura a intregului

• dimensiune fractala – un exponent care indica cat de complet ocupa un fractal spatiul

• metode de determinare a Df:• Box Counting method;• Mass-Radius method;• the Cluster Growing method;

Page 9: Prezentare_whc _ncit

Dimensiune fractala• impartirea imaginii per thread-uri • binarizarea imaginii;• numararea box-urilor de diferite dimensiuni:

• E.g.: latura = 2, 4, 8, 11(pixeli);• calcularea pantei regresiei logaritmice

Page 10: Prezentare_whc _ncit

Aflarea celui de-al k-lea element dintr-un vectorAflarea celui de-al k-lea element dintr-un vector- idee -- idee -

• S-a pornit de la varianta recursiva a aflarii celui de-al k-lea element, paralelizandu-se un pas al acestui algoritm

• Exemplu:N = 12, K = 5 (aflarea celui de-a 5-lea element)V = {2, 15, 0, 9, 40, 11, 7, 3, 14, 6, 21, 5}

Presupunem ca avem Q = 3 unitati de calcul=> impart pe V in 3 subsecvente de dimensiune N/Q =>

V = {2, 15, 0, 9, 40, 11, 7, 3, 14, 6, 21, 5}In paralel, fiecare unitate de calcul afla mediana subsecventei aferente folosind sortare

=> M = {9, 7, 5}O unitate de calcul afla mediana medianelor => m = 7 si creeaza 3 subsecvente cu

elemente <, = respectiv > m, din v: s1 = {2, 0, 3, 6, 5} , s2 = {7} , s3 = {15, 9, 40, 11, 14, 21}

Se alege prin anumite criterii una din aceste subsecvente ca fiind noul vector V (in cazul in care subsecventa aleasa este s2, se poate furniza rezultatul).

In cazul de fata, se alege s1, V = s1 ……….Procedeul este repetitiv.

Page 11: Prezentare_whc _ncit

Aflarea celui de-al k-lea element dintr-un vectorAflarea celui de-al k-lea element dintr-un vector- implementare -- implementare -

• 2 functii de kernel:– Kelem

• executata in paralel de mai multe unitati de calcul• input: V, output: M (vectorul de mediane) – o unitate de calcul modifica

doar un element din M– Median

• Executata de o singura unitate de calcul• input: M, output: V (si alte flag-uri care spun daca s-a gasit elementul si

valoarea acestuia)• Functiile se apeleaza alternativ, rezultatul uneia devine intrarea celeilalte• Am evitat recursivitatea• Am facut o singura data mutarea datelor din RAM in VRAM (enqueue in buffere),

restul modificarilor petrecandu-se pe placa video (pentru economie de timp)• Din cand in cand, scot din anumite buffere flag-uri pentru a afla starea executiei

Page 12: Prezentare_whc _ncit

Aflarea celui de-al k-lea element dintr-un vectorAflarea celui de-al k-lea element dintr-un vector- statistici -- statistici -

n = 1000

k = 333

n = 2000

k = 1282

n = 2400

k = 2000

n = 443

k = 89

In cazul de fata, datorita memoriei locale limitate de pe GPU si a structurii algoritmului, valoarea lui n nu poate trece de un prag (aici, 2500) – posibil ca programul sa dea rezultate foarte bune in favoarea GPU pentru valori mult mai mari ale lui n

Page 13: Prezentare_whc _ncit

• Doar anumite probleme pot fi executate mai rapid pe placa grafica si anume cele pe seturi mari de date cu aplicarea unor operatii repetitive

• Latenta mare de transfer pentru GPU a datelor din RAM catre VRAM, acoperita prin executia rapida si repetata a unor task-uri

• Evitarea branch-urilor (if, while, for) intr-un kernel pe GPU• Anumiti algoritmi paraleli trebuie adaptati pentru a da rezultate cat mai bune atat

pe CPU cat si pe GPU – programarea in OpenCL cere totusi cunoasterea arhitecturii platformelor

• Algoritmi mai eficienti pe GPU (testati) : filtre simple ( Sobel/Gauss/Bitsplicing ), analiza fractala, procesare de imagini in general

• Algoritmi mai eficienti pe CPU (testati) : aflarea al K-lea element dintr-un sir

Concluzii