This shows you the differences between two versions of the page.
|
asc:laboratoare:05 [2026/04/01 03:54] alexandru.bala [De ce CUDA?] |
asc:laboratoare:05 [2026/04/01 04:23] (current) alexandru.bala [Warp-uri și modelul SIMT] |
||
|---|---|---|---|
| Line 105: | Line 105: | ||
| ===== 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 ===== | ||