This shows you the differences between two versions of the page.
asc:laboratoare:04 [2024/04/08 13:45] emil.slusanschi [Referinte] |
asc:laboratoare:04 [2025/03/26 11:44] (current) alexandru.bala [Aplicatie compute CUDA] |
||
---|---|---|---|
Line 7: | Line 7: | ||
Succesorul chipurilor de prelucrare grafică din jocurile aracade, procesoarul grafic, acronim **GPU** (**G**raphics **P**rocessing **U**nit), este un circuit electronic, specializat, în crearea și manipularea imaginilor trimise către un afișaj electronic (e.g. monitor). | Succesorul chipurilor de prelucrare grafică din jocurile aracade, procesoarul grafic, acronim **GPU** (**G**raphics **P**rocessing **U**nit), este un circuit electronic, specializat, în crearea și manipularea imaginilor trimise către un afișaj electronic (e.g. monitor). | ||
- | Utilitatea lui s-a extins ulterior către probleme "embarrassingly parallel", iar în astăzi sunt folosite la antrenarea antrenarea rețelelor neurale și minarea de criptomonede. Vorbim aici despre întrebuințarea unui **GPGPU** (**G**eneral **P**urpose GPU), un procesor grafic cu o flexibilitate ridicată de programare, capabil de a rezolva și probleme generale. | + | Utilitatea lui s-a extins ulterior către probleme "embarrassingly parallel", iar astăzi sunt folosite la antrenarea rețelelor neurale și minarea de criptomonede. Vorbim aici despre întrebuințarea unui **GPGPU** (**G**eneral **P**urpose GPU), un procesor grafic cu o flexibilitate ridicată de programare, capabil de a rezolva și probleme generale. |
==== Teorie ==== | ==== Teorie ==== | ||
Line 40: | Line 40: | ||
* Vivante http://en.wikipedia.org/wiki/Vivante_Corporation | * Vivante http://en.wikipedia.org/wiki/Vivante_Corporation | ||
- | Dacă un IP de GPU este integrat pe aceeași //pastilă de siliciu// a unui SoC (**S**ystem-**o**n-a-**C**hip), spunem că este un GPU integrat. Exemple de SoC-uri cu IP de GPU integrat includ procesoarele x86 Intel/AMD, cât și majoritatea SoC-urilor pentru dispozitive mobile bazate pe arhitectura ARM (ex. Qualcomm Snapdragon). Un GPU integrat împarte ierarhia de memorie cu alte IP-uri (exp. controllere PCIe/USB/SATA/ETH). | + | Dacă un IP de GPU este integrat pe aceeași //pastilă de siliciu// a unui SoC (**S**ystem-**o**n-a-**C**hip), spunem că este un GPU integrat. Exemple de SoC-uri cu IP de GPU integrat includ procesoarele x86 Intel/AMD, cât și majoritatea SoC-urilor pentru dispozitive mobile bazate pe arhitectura ARM (ex. Qualcomm Snapdragon). Un GPU integrat împarte ierarhia de memorie cu alte IP-uri (ex. controllere PCIe/USB/SATA/ETH). |
- | De altfel, un GPU dedicat (discrete GPU) presupune valorificarea unei unui spațiu de memorie, mapat peste **VRAM** (**V**ideo **R**andom-**A**ccess **M**emory), cât și o magistrală PCIe/AGP8x/USB pentru comunicare cu sistemul. Exemple de GPU-uri dedicate sunt seriile de plăci grafice Geforce (Nvidia) și Radeon (AMD). | + | De altfel, un GPU dedicat (discrete GPU) presupune valorificarea unei unui spațiu de memorie, mapat peste **VRAM** (**V**ideo **R**andom-**A**ccess **M**emory), cât și o magistrală PCIe/AGP8x/USB pentru comunicarea cu sistemul. Exemple de GPU-uri dedicate sunt seriile de plăci grafice Geforce (Nvidia) și Radeon (AMD). |
{{:asc:lab10:dgpu_igpu.png?direct&750|}} | {{:asc:lab10:dgpu_igpu.png?direct&750|}} | ||
Line 115: | Line 115: | ||
Știind versiunea majoră și cea minoră cunoaștem facilitățile hardware oferite de către arhitectură. | Știind versiunea majoră și cea minoră cunoaștem facilitățile hardware oferite de către arhitectură. | ||
- | O listă a GPU-urile NVIDIA și versiunile lor majore/minore se regăsește [[https://developer.nvidia.com/cuda-gpus|aici]]. | + | O listă a GPU-urilor NVIDIA și versiunile lor majore/minore se regăsește [[https://developer.nvidia.com/cuda-gpus|aici]]. |
===== Programarea in CUDA ===== | ===== Programarea in CUDA ===== | ||
Line 201: | Line 201: | ||
O aplicatie CUDA are ca scop executia de cod pe GPU-uri NVIDIA CUDA. | O aplicatie CUDA are ca scop executia de cod pe GPU-uri NVIDIA CUDA. | ||
In cadrul laboratoarelor partea de CPU (host) va fi folosita exclusiv pentru managementul executiei partii de GPU (device). | In cadrul laboratoarelor partea de CPU (host) va fi folosita exclusiv pentru managementul executiei partii de GPU (device). | ||
- | Aplicatiilor vor viza executia folosind un singur GPU NVIDIA CUDA. | + | Aplicatiile vor viza executia folosind un singur GPU NVIDIA CUDA. |
==== 0. Definire functie kernel ==== | ==== 0. Definire functie kernel ==== | ||
Line 392: | Line 392: | ||
* [[https://www.nvidia.com/en-us/data-center/tesla-p100/|NVIDIA Pascal P100]] | * [[https://www.nvidia.com/en-us/data-center/tesla-p100/|NVIDIA Pascal P100]] | ||
* Advanced CUDA | * Advanced CUDA | ||
- | [[https://developer.download.nvidia.com/CUDA/training/StreamsAndConcurrencyWebinar.pdf|CUDA Streams]] | + | * [[https://developer.download.nvidia.com/CUDA/training/StreamsAndConcurrencyWebinar.pdf|CUDA Streams]] |
- | * Extra | + | |
* [[http://www-personal.umich.edu/~smeyer/cuda/grid.pdf | CUDA Thread Basics]] | * [[http://www-personal.umich.edu/~smeyer/cuda/grid.pdf | CUDA Thread Basics]] | ||
* [[https://devblogs.nvidia.com/even-easier-introduction-cuda/ | An Even Easier Introduction to CUDA]] | * [[https://devblogs.nvidia.com/even-easier-introduction-cuda/ | An Even Easier Introduction to CUDA]] | ||