Laboratorul 07 - CUDA

Teorie

Scopul acestui laborator este aprofundarea și îmbinarea noțiunilor pe care le-ați învățat deja la APD și în laburile trecute (poate și la IA).

Vă încurajăm să profitați de acest laborator ca să vă clarificați posibile nelămuriri din laburile trecute. Sau, de ce nu, să vă șlefuiți abilitatea de a optimiza programe CUDA dacă terminați mai devreme. :P

Odd-Even Transposition Sort

Bubble Sort este un algoritm secvențial în care se parcurge șirul de sortat element cu element, comparând elementul curent cu vecinul din dreapta. Dacă numărul din dreapta este mai mic, se realizează o interschimbare între elementul curent și cel din dreapta sa.

Operațiile pe elemente adiacente nu se pot realiza simultan, pentru că se poate ajunge la un race condition. Din acest motiv, un mod de a paraleliza Bubble Sort este Odd-Even Transposition Sort, un algoritm in 2 două faze. În faza pară, elementele de pe poziții pare din șirul de sortat sunt comparate (și eventual interschimbate) cu vecinii din dreapta. După ce se termină faza pară (adică după ce toate elementele pare au fost procesate), urmează faza impară, în care elementele impare sunt analizate și comparate cu vecinii din dreapta.

 OETS

Merge Sort

Merge sort (sau sortarea prin interclasare) este un algoritm de sortare de tip divide et impera care presupune următorii pași generali:

  • se împarte șirul de N elemente de sortat în N șiruri de lungime 1
  • se aplica operația de interclasare (“merge”) între câte două astfel de șiruri de lungime 1, rezultând N/2 șiruri sortate de lungime 2
  • se repetă pașii de mai sus realizând interclasări între șiruri din ce în ce mai mari, până se ajunge la un șir sortat de N elemente.

Pentru a paraleliza acest algoritm, putem observa că operațiile de interclasare de la fiecare pas se pot realiza în paralel. Totuși, operațiile de “merge” de la fiecare pas trebuie terminate în totalitate înainte de a trece la următorul pas, deci avem nevoie de o barieră (sau un mecanism similar) după fiecare pas de interclasare. Se poate observa că gradul de paralelism de la un pas de interclasări este din ce în ce mai mic pe măsură ce avansăm în algoritm, pentru că numărul de operații de “merge” de la fiecare pas scade.

 Mergesort

Gaussian Blur

În prelucrarea imaginilor, blurarea gaussiană este rezultatul estomparii unei imagini printr-o funcție gaussiană.

Este un efect larg utilizat în software-ul grafic, în mod tipic pentru a reduce zgomotul imaginii și pentru a reduce detaliile. Efectul vizual al acestei tehnici de estompare este un blur neted care seamănă cu cel obținut privind imaginea printr-un ecran translucid. Estomparea gaussiană este de asemenea folosită ca o etapă de prelucrare în algoritmi de viziune artificială pentru a îmbunătăți structurile imaginii la diferite scări.

Aplicarea unei estompări gaussiene asupra unei imagini este echivalentă cu convoluția imaginii cu o funcție gaussiană. Transformarea (funcția) de aplicat fiecărui pixel din imagine este urmatoarea: \[ G(x) = \frac{1}{\sqrt{2\pi \sigma^2}} e^{-\frac{x^2}{2\sigma^2}} \]

 Gaussian Blur

Exercitii

Urmăriți instrucțiunile de pe GitLab.

Puteți găsi materiale ajutătoare în cadrul laboratorului 3 de la APD și în videoclipul Gaussian Blur.

Recomandăm sa va delogati mereu de pe serverele din cluster dupa terminarea sesiunii, utilizand comanda exit

Alternativ, daca ati uitat sesiuni deschise, puteti verifica acest lucru de pe fep8.grid.pub.ro, utilizand comanda squeue. In cazul in care identificati astfel de sesiuni “agatate”, le puteti sterge (si va rugam sa faceti asta), utilizand comanda scancel ID unde ID-ul il identificati din comanda anterioara squeue. Puteți folosi mai precis squeue -u username (username de pe fep8.grid.pub.ro) pentru a vedea doar sesiunile care vă interesează. (Sau squeue –me).

Daca nu veti face aceasta delogare, veti putea ajunge in situatia in care sa nu va mai puteti loga pe nodurile din cluster.

* Responsabili laborator: Matei Barbu, Mihnea Mitroi

Referinte

asc/laboratoare/07.txt · Last modified: 2024/04/15 00:13 by mihnea.mitroi
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0