joi, 9 iunie 2011

nVidia CUDA - La ce trebuie?

Ce este CUDA?

CUDA este platforma de calcul paralel dezvoltată de nVidia, cu scopul de a accelera operaţiile de calcul si reducând sarcina de lucru pentru CPU în anumite aplicaţii, folosind puterea de calcul disponibilă în procesoarele grafice (GPU).
De această tehnologie pot beneficia cel mai mult aplicaţiile care au de procesat în mod similar multiple seturi de date, precum: procesare imagini şi video, calcule în domeniul biologiei sau chimiei, simularea dinamicii fluidelor, analiza seismelor şi multe altele.


Istoric
Puterea de calcul a procesoarelor grafice a crescut foarte mult în ultimii ani, motiv pentru care numărul de tranzistori utilizaţi la construirea cipurilor grafice (GPU) depăşeşte cu mult numărul tranzistorilor folosiţi in unităţile centrale de procesare (CPU). Spre exemplificare, în procesorul grafic GF110, utilizat pe plăcile nVidia GTX 580, sunt aproximativ 3 miliarde de tranzistori, în cipuri de clasa medie precum cele folosite pe nVidia GTX 560 Ti se folosesc aproximativ 1,950 miliarde de tranzistori. Şi în GPU-urile de la ATI se folosesc 2,640 miliarde de tranzistori în procesorul de vârf, Cayman XT, folosit pe plăcile Radeon HD 6970. Un procesor central high-end pentru desktop este realizat cu ‘doar’ 915 milioane tranzistori (Sandy Bridge quad core), iar actuala navă amiral de la AMD, procesorul cu 6 core-uri AMD Phenom II x6, foloseşte 904 milioane tranzistori.



Spre deosebire de CPU, care sunt procesoare de uz general, GPU-urile sunt optimizate pentru calcul paralel pe multiple seturi de date. O altă diferenţă majoră între arhitectura CPU şi cea a GPU constă în modalitatea de acces la memorie: CPU-ul foloseste între 1 şi 3 canale de memorie de câte 64 biţi lăţime fiecare, în timp ce GPU-urile actuale pot folosi până la 8 canale de memorie paralele, de 64 biţi lăţime fiecare. Acest lucru le poate oferi o lărgime de bandă agregată mai mult decât dublă, în cazul în care memoria folosită ar fi de acelaşi tip, însă de obicei pe placile grafice se foloseşte memorie de tip GDDR, cu una-doua generaţii în avans faţă de memoriile principale folosite în PC-uri.

Sumarizând ideile anterioare, se poate afirma că disponibilul de putere de calcul din GPU-uri este mai mare decât cel al CPU-urilor, lucru care justifică nivelul mărit de complexitate (şi de tranzistori) faţă de CPU-uri.

Ce se poate face cu această putere de calcul, în afara timpului când se foloseşte la randare 3D?
Iniţial, atât ATI cât şi nVidia au folosit o parte din ea pentru a accelera decodarea fluxurilor video, mutând operaţia de decodare MPEG2/VC1/MPEG4 direct în sarcina GPU. Aceasta operaţie de ‘off-loading’ a purtat numele ‘nVidia PureVideo’ sau ‘ATI UVD’. În urmă cu ceva vreme era necesară folosirea de plăci decodoare MPEG dedicate, pentru a se putea reda pe PC filme de pe DVD, mă refer aici la epoca în care Pentium MMX era procesorul de top, dar nu avea suficientă putere pentru a decoda în timp real un flux MPEG2.


nVidia a identificat acest potenţial al GPU-urilor şi a proiectat o interfaţă de programare prin care se permite anumitor programe, special concepute, accesul la această putere de calcul. I-a dat numele ‘CUDA’ şi a implementat-o în toate GPU-urile începand de la seria 8800. Mai mult de atât, a creat şi plăci dedicate, cunoscute sub numele ‘Tesla’, care oferă acces la puterea de procesare a GPU-urilor, dar nu au şi ieşiri video. Tesla este un produs care se adresează organizaţiilor care au nevoie de putere de calcul foarte mare.
Tehnologia CUDA mai este folosita si pentru efectuarea de calcule privind fizica si dinamica, folosind tehnologia PhysX. Cu ajutorul acesteia, diverse elemente grafice din jocuri pot dobândi mişcări mai naturale. fluidizate, iar dacă aceste operaţii sunt efectuate de un GPU CUDA, impactul asupra nivelului de utilizare a CPU este minim.
Pentru a permite unui număr mai mare de dezvoltatori accesul mai facil la potenţialul de procesare din GPU, a fost creată interfaţa de programare OpenCL (Open Computing Language), iniţial de către Apple şi nVidia, în cadrul unui grup numit Khronos. Datorită faptului ca OpenCL a fost creat ca un standard deschis, mai mulţi dezvoltatori au adoptat aceasta tehologie, inclusiv ATI.


Alternative
Ca alternativă pentru CUDA, ATI a dezvoltat tehnologia cunoscuta sub numele ‘Stream’. Aceasta nu a fost folosită până în prezent pentru acceleraţie hardware PhysX, însă este folosită în alte aplicaţii GPGPU (GPU pentru uz general) precum Folding@Home, de UVD (unified video decoder, tehnologie ATI), precum şi de unele aplicaţii din clasa "editor video" sau "player video".
Odată cu lansarea DirectX 11, Microsoft a introdus o interfaţă de programare cu rol similar, numită DirectCompute. Deşi a fost lansat odată cu DirectX 11, DirectCompute poate rula şi pe hardware de generaţie DirectX 10.


Aplicaţii care folosesc CUDA
În iunie 2011, o serie de aplicaţii folosite pentru editare video aveau implementată într-o formă sau alta acceleraţie la nivel hardware folosind CUDA, Stream sau OpenCL. Majoritatea programelor destinate redării filmelor au adoptat tehnologiile de accelerare de la ATI şi nVidia.

MainConcept Codec Suite 5, succesorul plugin-ului MPEG Pro HD dezvoltat pentru Adobe Premiere Pro CS5. Varianta inclusă în Codec Suite 5.1 Professional este adresată utilizatorilor care au nevoie de opţiuni avansate pentru encodare, suport CUDA pentru codare H.264/AVC şi/sau SmartRendering. Dintre funcţiile de bază ale acestui codec enumăr aici câteva în relaţie directă cu CUDA:
  • Smart Rendering în Premiere Pro pentru formatele MPEG-1/2, DVCPRO, AVC-Intra. Se are în vedere disponibilitatea generală a formatului H.264 în Smart Rendering într-un update al aplicaţiei. 
  • Suport pentru codificare accelerată hardware cu ajutorul CUDA, pentru formatul H.264/AVC.
Deşi acest soft este disponibil in mod demo, necesita Adobe Premiere CS5. Producătorul recomandă folosirea de hardware compatibil CUDA ver. 1.1 (Tesla, Quadro, GeForce) sau mai recent. Se descurajează utilizarea unele modele GeForce mai vechi, incluzând 8800, care se limitează la capabilitate CUDA versiunea 1.0.

Sony Movie Studio HD Platinum este un alt program destinat editării de conţinut video, care include în lista de specificaţii capabilitatea de a utiliza GPU pentru a accelera procesul de encodare. Într-un anunţ mai vechi de pe situl Sony se precizează că programele pentru codare video vor putea beneficia de acceleraţie hardware asistată de CUDA pentru codarea proiectelor, în cazul în care vor folosi codecul Sony AVC. Un alt anunţ, de pe situl AMD, din 11 aprilie 2011, ne arată că varianta de uz profesional a editorului video de la Sony, Vegas Pro versiunea 10.0d, poate beneficia de accelerare hardware şi pe sisteme echipate cu hardware non-CUDA, folosind interfaţa de programare OpenCL. Acest lucru a fost reiterat şi într-un anunţ din 8 iunie 2011, tot de pe situl AMD.
Versiunea minimalista a editorului, Sony Movie Studio HD [fără Platinum în denumire], nu oferă acceleraţie hardware pentru encodare, conform informaţiilor de pe situl Sony.

Roxio Video Lab HD (link) este o suită pentru editare video cu suport pentru editare HD, salvare pe DVD si BluRay, conversia 2D-3D a filmelor, convertirea DVD9 la DVD5, gestionarea şi salvarea clipurilor provenite din camere video, inclusiv clipuri în format AVCHD. Acest software include suport pentru accelerare hardware folosind interfaţa de programare ATI Stream, nVidia CUDA sau OpenCL.

CyberLink Power Director 9 (link)este o aplicaţie destinată prelucrarii clipurilor video. Versiunea precedentă includea suport doar pentru ATI Stream, dar în versiunea actuală a fost implementată acceleraţie hardware pentru familiile existente de GPU (ATI si nVidia, Intel), folosind tehologiile UVD, CUDA, Stream, ClearVideo, QuickSync.

Corel Video Studio Pro X4 (link)este o aplicaţie destinată prelucrării videoclipurilor, care include o gamă variata de şabloane, efecte, machete pentru titluri, tranziţii, etc. Codec-urile incluse pot folosi CUDA în procesul de lucru şi la codarea finală a proiectului.

ArcSoft TotalMedia Theatre şi CyberLink PowerDVD sunt utilitare pentru redare video (DVD, BluRay, etc). Ambele pot beneficia de ceva vreme de acceleraţie hardware folosind ATI UVD sau nVidia PureVideo.

Rovi MainConcept OpenCL H.264/AVC Encoder 2.0 este un pachet de codec-uri H.264/AVC. Acestea pot folosi acceleraţie hardware prin intermediul interfeţei de programare OpenCL şi se pot folosi împreună cu orice aplicaţie destinată transcodării video.
Conform unor teste efectuate de producător, utilizarea OpenCL accelerat hardware cu ajutorul unei plăci Radeon HD 5870 permite atingerea unei viteze de encodare FullHD de aproximativ 105 cadre/secundă, dacă se foloseste profilul optimizat pentru viteza, respectiv 85 cadre/secundă dacă se salvează conform profilului de calitate maxima. Aceste valori sunt mai mari decat dublul vitezei de codare obţinută utilizând doar CPU-ul pe un sistem hexa-core cu procesor AMD Athlon II X6 1090T.

Rovi MainConcept CUDA Encoder SDK 1.1 este un set de codec-uri proiectat pentru a beneficia de acceleraţie hardware pe sisteme CUDA. Testele efectuate de MainConcept arată că viteza de transcodare accelerată de o placa nVidia GTX 470 este de aproximativ două ori mai mare decât cea obţinută folosind doar un procesor Intel Core i7 980X, în cazul folosirii profilului ‘Calitate maximă’, respectiv de 4 ori mai mare, în cazul folosirii profilului ‘Viteza maximă’.


Ar mai fi de notat câteva aspecte legate de editarea video asistată hardware
  • anumite codecuri nu produc conţinut compatibil 100% BluRay
  • În general, acceleraţia dată de CUDA, Stream sau OpenCL poate fi folosită la decodare/codare, dar nu tot timpul se poate folosi pentru aplicarea de procesare a imaginii: cum ar fi la tranziţii, aplicarea de efecte, etc.

Ți-a plăcut această postare? Spune și altora!

5 comentarii:

  1. Este foarte util comentariul.Este pe intelesul tuturor.Multumesc foarte mult pentru aceste explicatii foarte utile utilizatorilor de editari video .

    RăspundețiȘtergere
  2. Probabil ajuta celor in domeniu :) nu utilizatorilor simpli.nu?

    RăspundețiȘtergere
  3. @dli: Din ce in ce mai multa lume are pe acasa cate o camera video. Folosind asemenea tehnologii, ar putea termina mai repede asamblarea filmelor din vacantza, chiar si la nivel de amator. Asadar pot spune ca nu numai cei 'in domeniu' sunt interesati de asa ceva.

    RăspundețiȘtergere
  4. Eu nu inteleg incotro se merge,pt ochiul omului sunt suficiente 24 cadre/secunda,dupa mine ce e mai mult inseamna spatiu mai mare pt inregistrare,consum de energie mai mare etc.,sau se urmareste difuzarea unor mesaje subliminale la viteze asa mari ale cadrelor? :-)

    RăspundețiȘtergere
  5. Gabi, se merge tot înainte. Acum avem televizoare Ultra HD și 3D. Avem și codecul H265, pentru a reduce lărgimea de bandă necesară pentru transmiterea conținutului digital.

    RăspundețiȘtergere

Super ofertă la eMag!

Related Posts Plugin for WordPress, Blogger...