Differences

This shows you the differences between two versions of the page.

Link to this comparison view

asc:laboratoare:05 [2026/03/31 11:50]
tudor.calafeteanu [Referinte]
asc:laboratoare:05 [2026/04/01 04:23] (current)
alexandru.bala [Warp-uri și modelul SIMT]
Line 1: Line 1:
-====== Laboratorul 05 - Arhitecturi ​de tip GPGPU ======+====== Laboratorul 5 - Arhitecturi GPGPU și Programare CUDA ======
  
 ===== Introducere ===== ===== Introducere =====
Line 99: Line 99:
  
 Un standard alternativ la CUDA este **OpenCL**, suportat de Khronos și implementat de majoritatea producătorilor de GPU (inclusiv Nvidia ca o extensie la CUDA). OpenCL suferă de următoarele lipsuri: Un standard alternativ la CUDA este **OpenCL**, suportat de Khronos și implementat de majoritatea producătorilor de GPU (inclusiv Nvidia ca o extensie la CUDA). OpenCL suferă de următoarele lipsuri:
-* suportul este fragmentat +  ​* suportul este fragmentat 
-* standardul este mult mai restrictiv (decât CUDA) +  * standardul este mult mai restrictiv (decât CUDA) 
-* mai complicat de scris programe (decât CUDA)+  * mai complicat de scris programe (decât CUDA)
  
 ===== Arhitectura Nvidia CUDA ===== ===== Arhitectura Nvidia CUDA =====
  
-CUDA (**C**ompute **U**nified **D**evice **A**rchitecture) permite utilizarea limbajului C pentru programarea pe GPU-urile Nvidia cât și extensii pentru alte limbaje (exp. Python). Deoarece una din zonele țintă pentru CUDA este HPC (**H**igh **P**erformance **C**omputing),​ în care limbajul Fortran este foarte popular, PGI ofera un compilator de Fortran ce permite generarea de cod și pentru GPU-urile Nvidia. Există binding-uri pentru Java (jCuda), Python (PyCUDA) și .NET (CUDA.NET).+CUDA (**C**ompute **U**nified **D**evice **A**rchitecture) permite utilizarea limbajului C pentru programarea pe GPU-urile Nvidia cât și extensii pentru alte limbaje (ex. Python). Deoarece una din zonele țintă pentru CUDA este HPC (**H**igh **P**erformance **C**omputing),​ în care limbajul Fortran este foarte popular, PGI ofera un compilator de Fortran ce permite generarea de cod și pentru GPU-urile Nvidia. Există binding-uri pentru Java (jCuda), Python (PyCUDA) și .NET (CUDA.NET).
  
 {{:​asc:​lab7:​cuda-software.png?​800|}} {{:​asc:​lab7:​cuda-software.png?​800|}}
Line 358: Line 358:
 }} }}
  
-Deși SIMT este adesea comparat cu SIMD (Single Instruction Multiple Data), există o diferență esențială:​ în SIMD există un singur control flow path, pe când în SIMT fiecare fir poate urma propriul control flow path. Tocmai de asta SIMT nu are un data-width fix, precum la SIMD. Este esential ​să ținem cont de warp-uri atunci când scriem cod CUDA, deoarece înțelegerea acestui model ajută la optimizarea accesului la memoria globală, partajată și a altor tehnici avansate. De asemenea, programele care încalcă modelul de programare SIMT pot genera comportament nedefinit, care poate varia în funcție de hardware-ul GPU utilizat.+Deși SIMT este adesea comparat cu SIMD (Single Instruction Multiple Data), există o diferență esențială:​ în SIMD există un singur control flow path, pe când în SIMT fiecare fir poate urma propriul control flow path. Tocmai de asta SIMT nu are un data-width fix, precum la SIMD. Este esențial ​să ținem cont de warp-uri atunci când scriem cod CUDA, deoarece înțelegerea acestui model ajută la optimizarea accesului la memoria globală, partajată și a altor tehnici avansate. De asemenea, programele care încalcă modelul de programare SIMT pot genera comportament nedefinit, care poate varia în funcție de hardware-ul GPU utilizat.
  
 ===== Aplicații ===== ===== Aplicații =====
asc/laboratoare/05.1774947018.txt.gz · Last modified: 2026/03/31 11:50 by tudor.calafeteanu
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