This shows you the differences between two versions of the page.
|
asc:laboratoare:05 [2026/03/31 11:39] tudor.calafeteanu [Aplicații] |
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 ===== | ||
| Line 402: | Line 402: | ||
| * Documentatie CUDA: | * Documentatie CUDA: | ||
| + | * [[https://docs.nvidia.com/cuda/cuda-programming-guide/index.html|CUDA Programming]] | ||
| * [[https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html|CUDA C Programming]] | * [[https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html|CUDA C Programming]] | ||
| * [[https://docs.nvidia.com/cuda/pdf/CUDA_Compiler_Driver_NVCC.pdf| CUDA NVCC compiler]] | * [[https://docs.nvidia.com/cuda/pdf/CUDA_Compiler_Driver_NVCC.pdf| CUDA NVCC compiler]] | ||