GPU Computing - Ce este?

Tot auziți despre GPU computing sau accelerare, dar nu sunteți sigur ce înseamnă? Iată tot ce trebuie să știi.

GPU sau unitățile de procesare grafică sunt prezente în toate circuitele electronice care produc o formă de afișare sau alta, în special computerul.

Procesoarele grafice timpurii erau relativ simple. Dar odată cu apariția jocurilor, a animației 3D și a sarcinilor de redare video care au împins procesoarele dincolo de limitele lor, GPU-urile mai puternice au trebuit să vină în ajutor.

Aceste noi carduri GPU au crescut în putere și complexitate de-a lungul timpului, diferite companii și cercetători căutând modalități de a-și valorifica avantajul execuției paralele. Această postare vă arată cum a mers până acum.

Ce este un GPU?

Un GPU sau unitatea de procesare grafică este un circuit specializat conceput pentru manipularea datelor pentru a ajuta la crearea de imagini pentru afișare. Cu alte cuvinte, un GPU este un sistem care creează imaginile pe care le vedeți pe orice suprafață de afișare, cum ar fi monitorul computerului, ecranul smartphone-ului, consolele de jocuri și așa mai departe.

GPU-urile au fost inițial dispozitive simple care puneau împreună elemente grafice pentru a crea o ieșire ideală pentru un anumit dispozitiv. Cu timpul, însă, și odată cu apariția jocurilor pe computer, GPU-urile au început să crească în complexitate și putere, dând naștere la GPGPU sau computere cu scop general pe GPU.

Ce este GPU Computing?

GPU computing sau GPGPU este utilizarea unui GPU pentru calcul dincolo de grafică. Aceasta înseamnă folosirea GPU-urilor încorporate în placa video a unui computer și destinate inițial procesării graficii computerizate pentru calcularea altor tipuri de date, cum ar fi simulări științifice, extragerea criptomonedei, calcule algebrei, prognoza meteo, rețele neuronale și așa mai departe.

Motivul acestei evoluții a calculului GPU vine din dezvoltarea impresionantă a unităților de procesare grafică, care provine din arhitectura paralelă distribuită a sistemelor GPU moderne.

Pe măsură ce CPU-ul computerului devenea mai puternic și putea gestiona programe și jocuri mai complexe, producătorii de plăci video au încercat, de asemenea, să țină pasul cu evoluțiile în calculul modern și grafica 3D. Nvidia a dezvăluit GeForce 256 în 1999 ca prima placă video GPU din lume și lucrurile au evoluat de acolo.

Avantajul major al plăcilor GPU față de procesoare este arhitectura lor de procesare paralelă, ceea ce le face capabile să proceseze sarcini mari de date într-o manieră distribuită, paralelă, care previne blocajele și blocarea procesorului.

Care sunt aplicațiile pentru GPU Computing?

Aplicațiile de calcul GPU sunt multe, iată o privire la câteva utilizări de top:

  1. Învățare automată și rețele neuronale
  2. Logica fuzzy
  3. Bio-informatica
  4. Modelare moleculară
  5. Redare video
  6. Calcul geometric
  7. Cercetare climatică și prognoză meteo
  8. Astrofizică
  9. Criptografie
  10. Viziunea computerului
  11. Schimbarea parolei
  12. Cercetarea cuantică

Procesare GPU vs CPU

GPU-urile și CPU-urile procesează datele digitale, dar o fac în moduri diferite. CPU sau unitatea centrală de procesare este proiectată pentru procesarea în serie la viteze mari, în timp ce GPU-urile sunt proiectate pentru procesare paralelă la viteze mult mai mici. Desigur, un procesor poate folosi hyper-threading pentru a obține 2 fire de execuție per nucleu, sau chiar poate avea zeci de nuclee, dar ele sunt în principiu procesoare seriale.

În timp ce procesoarele pot avea câteva nuclee, GPU-urile moderne vin cu mii de nuclee, de exemplu Nvidia GeForceRTX 3090 care dispune de 10K+ nuclee. Pentru a obține un avantaj față de procesoare, datele trebuie să fie capabile de procesare paralelă, cum ar fi procesarea unui flux care conține mii de imagini dintr-o dată.

GPU-uri Vs ASIC-uri

ASIC înseamnă Application Specific Integrated Circuit și aceasta înseamnă că poate îndeplini doar o sarcină - adică sarcina pentru care a fost conceput. Un ASIC este o mașină unică care este dezvoltată de la zero și necesită cunoștințe de hardware expert pentru a le construi. ASIC-urile sunt utilizate în mod obișnuit în mineritul criptomonedelor, deoarece oferă avantaje bune de procesare paralelă și o eficiență mai bună decât GPU-urile.

Diferența majoră dintre cele două este însă că GPU-urile sunt mai versatile. De exemplu, puteți construi cu ușurință o platformă de exploatare a criptomonedei folosind GPU-uri. Piesele sunt ușor disponibile și dacă ați terminat cu minarea, puteți oricând să vindeți placa GPU jucătorilor sau altor mineri. Cu toate acestea, cu ASIC-uri, puteți vinde o mașină folosită doar altor mineri, deoarece cu greu puteți face altceva cu ea.

Dincolo de minerit de criptomonede, devine și mai dificil să pui mâna pe o mașină ASIC, deoarece acestea nu sunt produse de masă. Acest lucru contrastează puternic cu sistemele GPU pe care le puteți ajunge oriunde și le puteți configura cu ușurință.

GPU vs Cluster Computing

În timp ce o singură placă GPU conține mii de nuclee, care adaugă o putere extraordinară oricărui computer la care o atașați, teoretic puteți adăuga cât mai multe carduri GPU pe placa de bază a computerului și puteți crește și mai mult capacitatea de procesare.

Un cluster de computere, pe de altă parte, se referă la mai multe computere care sunt conectate împreună pentru a funcționa ca un singur computer mare - un supercomputer. Fiecare computer din rețea este numit nod și poate avea un procesor multi-core, precum și una sau mai multe carduri GPU la bord.

Fiecare cluster trebuie să aibă un nod principal, care este computerul frontal care este responsabil pentru gestionarea și programarea nodurilor sale de lucru. De asemenea, va conține software care alocă date și programe pentru nodurile sale de lucru pentru a calcula și returna rezultate.

Accelerație GPU vs Hyper-threading

CPU este conceput pentru a gestiona mai multe sarcini simultan și de aceea rulează la viteze foarte mari, programând timpul de procesare între acele procese multiple. Cu toate acestea, atunci când întâlnește o funcție de calcul intensiv, atunci s-ar putea să petreacă un timp în buclă înainte de a reveni la celelalte procese. Acest lucru duce de obicei la o încetinire generală a computerului și, în cazuri mai grave, la înghețarea completă a sistemului.

Designerii de computere pot evita acest scenariu de temut fie folosind hyper-threading, fie accelerarea GPU. Hyper-threadingul permite unui singur nucleu CPU să funcționeze ca două fire de procesare. Deci, atunci când un fir de execuție este prins într-o buclă intensivă de calcul, celălalt thread poate menține în continuare sistemul împreună.

Calculatoarele moderne au acum mai multe nuclee de la 2 la 4, 8, 16, 32 și așa mai departe. În plus, au hyper-threading, așa că un procesor cu 2 nuclee oferă 4 fire, un 4 nuclee oferă 8 fire și așa mai departe.

Hyper-threading-ul cu procesoare multi-core va rezolva majoritatea problemelor de calcul, va preveni blocajele și va oferi performanțe de top cu jocuri simple, producție muzicală și proiecte mici de grafică, video și învățare automată. Dar atunci când aveți nevoie de mai multă putere decât atât, atunci un GPU este adesea soluția potrivită.

Accelerarea GPU sau hardware este capacitatea unei aplicații software de a folosi puterea de procesare paralelă a unui GPU pentru a reduce un număr mare de date, fără a bloca procesorul. Multe aplicații profesionale depind de accelerarea GPU pentru a funcționa bine. Acestea includ programe de proiectare/redare video și animație, codificatoare, criptografie, rețele neuronale mari și așa mai departe.

Bazele programării GPGPU

Programarea de uz general a GPU-urilor a fost efectuată inițial folosind DirectX și OpenGL biblioteci. Totuși, acestea au fost concepute strict pentru dezvoltarea grafică, așa că a trebuit să-ți reutilizați datele în modele de tip grafic pentru a funcționa.

Din fericire, au existat progrese majore în GPGPU de-a lungul anilor, ducând la biblioteci, limbaje de programare și cadre. Cel mai popular dintre aceste cadre este CUDA de la Nvidia.

CUDA facilitează pentru orice dezvoltator să se scufunde în programarea GPU fără a fi nevoie să cunoască esențialul programării GPU clasice. Oferă funcții care îmbunătățesc dezvoltarea dincolo de grafică, multe unități prezentând chiar și funcții specifice învățării automate.

Bibliotecile disponibile facilitează, de asemenea, crearea de noi programe accelerate de GPU de la zero sau adaptarea celor pre-scrise la procesarea paralelă. Alegeți biblioteca potrivită, optimizați codul pentru bucle paralele, recompilați și atât.

Cores CUDA Vs procesoare Stream

Adesea, veți întâlni termenii Cuda cores și procesoare de flux. Ambii termeni se referă pur și simplu la nucleul GPU sau Unități aritmetice logice a unui GPU. CUDA Core este o tehnologie proprietară de la Nvidia, în timp ce procesoarele Stream sunt de la AMD.

Un alt termen pe care îl puteți întâlni este Streaming Multi-Processor sau SM. Aceasta este o altă tehnologie Nvidia care a grupat inițial 8 nuclee CUDA per SM. Execută warps cu 32 de fire dintr-o dată, folosind 4 cicluri de ceas per comandă. Modelele mai noi includ acum peste 100 de nuclee per multi-procesor de streaming.

Top limbi și biblioteci GPU

Există atât de multe biblioteci și limbi care funcționează atât pe platformele Nvidia CUDA, cât și pe AMD. Următoarele sunt doar câteva:

  1. Nvidia cuBLAS – Subprograme de algebră liniară de bază pentru CUDA
  2. cuDNN – Biblioteca de rețele neuronale profunde
  3. OpenCL – Standard deschis pentru programare paralelă
  4. Openmp – Pentru GPU-uri AMD
  5. ŞOLD – Bibliotecă C++
  6. Nvidia cuRAND – Generarea numerelor aleatorii
  7. cuFFT – Pentru transformarea Fourier rapidă
  8. Nvidia NPP – procesare 2D a imaginii și a semnalului
  9. GPU VSIPL – Procesarea imaginilor vectoriale și a semnalului
  10. OpenCV – Biblioteca GPU pentru viziune computerizată
  11. OpenACC – Limbaj pentru dezvoltare paralelă
  12. În PyCU – Python pentru platforma CUDA
  13. TensorRT – Învățare profundă pentru CUDA
  14. CUDA C++ – Limbajul C++ pentru CUDA
  15. CUDA C – Limbajul C pentru CUDA
  16. CUDA Fortran – CUDA pentru dezvoltatorii FORTRAN

Cele mai bune proiecte de clustere GPU

Din iunie 2022, 8 dintre cele mai rapide 10 supercomputere din lume sunt accelerate de GPU. Toate au în comun și sistemul de operare Linux și sunt după cum urmează:

rangNumePetaflopsCPU-uriGPU-uriPutere (kW)An
1.Frontieră1,102591,8728,138,24021,1002022
2.CAMERĂ151.9075,2641,034,8802,9002022
3.Summit-ul148.6202,7522,211,84010,0962018
4.Sierra94.64190,0801,382,4007,4382018
5.Perlmutter64.59--2,5892021
6.Selene63.4671,680483,8402,6462020
7.Tianhe-261.445427,0084,554,75218,4822013
8.Adastra46.121,632297,4409212022

Concluzie

Ajungând la sfârșitul acestei scufundări în calculul GPU și tot ceea ce vine cu ea, ar fi trebuit să vă faceți o idee despre puterea și domeniul de aplicare al acesteia.

Pentru mai multe informații, puteți consulta platforma de dezvoltatori a Nvidia aici sau cel al AMD aici.

Nnamdi Okeke

Nnamdi Okeke

Nnamdi Okeke este un pasionat de computere căruia îi place să citească o gamă largă de cărți. Are o preferință pentru Linux față de Windows/Mac și a folosit
Ubuntu încă de la începuturile sale. Îl poți prinde pe twitter prin intermediul bongotrax

Articole: 298

Primiți chestii de tehnologie

Tendințe tehnice, tendințe de pornire, recenzii, venituri online, instrumente web și marketing o dată sau de două ori pe lună