Děkujeme za vaši dotaz! Jeden z našich pracovníků vás brzy kontaktuje.
Děkujeme za rezervaci! Jeden z našich pracovníků vás brzy kontaktuje.
Doba trvání 28 hodiny
Návrh Školení
Úvod
- Co je CUDA?
- CUDA vs OpenCL vs SYCL
- Přehled funkcí a architektury CUDA
- Nastavení vývojového prostředí
Začínáme
- Vytvoření nového projektu CUDA pomocí Visual Studio Code
- Prozkoumání struktury projektu a souborů
- Kompilace a spuštění programu
- Zobrazení výstupu pomocí printf a fprintf
CUDA API
- Pochopení role CUDA API v programu hostitele
- Použití CUDA API ke zjištění informací o zařízení a schopnostech
- Použití CUDA API k alokaci a dealokaci paměti zařízení
- Použití CUDA API ke kopírování dat mezi hostitelem a zařízením
- Použití CUDA API ke spouštění kernelů a synchronizaci vláken
- Použití CUDA API pro zpracování chyb a výjimek
CUDA C/C++
- Pochopení role CUDA C/C++ v programu zařízení
- Použití CUDA C/C++ ke psaní kernelů, které se provádějí na GPU a manipulují s daty
- Použití datových typů, kvalifikátorů, operátorů a výrazů CUDA C/C++
- Použití vestavěných funkcí CUDA C/C++, jako jsou matematické, atomické, warp atd.
- Použití vestavěných proměnných CUDA C/C++, jako jsou threadIdx, blockIdx, blockDim atd.
- Použití knihoven CUDA C/C++, jako jsou cuBLAS, cuFFT, cuRAND atd.
Model paměti CUDA
- Pochopení rozdílu mezi modely paměti hostitele a zařízení
- Použití prostorů paměti CUDA, jako jsou globální, sdílená, konstantní a lokální paměť
- Použití objektů paměti CUDA, jako jsou ukazatele, pole, textury a povrchy
- Použití režimů přístupu k paměti CUDA, jako jsou pouze pro čtení, pouze pro zápis, čtení a zápis atd.
- Použití modelu konzistence paměti CUDA a mechanismů synchronizace
Model provedení CUDA
- Pochopení rozdílu mezi modely provedení hostitele a zařízení
- Použití vláken, bloků a mřížek CUDA ke definici paralelnosti
- Použití funkcí vláken CUDA, jako jsou threadIdx, blockIdx, blockDim atd.
- Použití funkcí bloků CUDA, jako jsou __syncthreads, __threadfence_block atd.
- Použití funkcí mřížek CUDA, jako jsou gridDim, gridSync, kooperativní skupiny atd.
Ladění
- Pochopení běžných chyb a bugů v CUDA programech
- Použití ladicího programu Visual Studio Code ke zkoumání proměnných, breakpointů, volacího stacku atd.
- Použití CUDA-GDB k ladění CUDA programů na Linuxu
- Použití CUDA-MEMCHECK k detekci chyb a úniků paměti
- Použití NVIDIA Nsight k ladění a analýze CUDA programů na Windows
Optimalizace
- Pochopení faktorů, které ovlivňují výkon CUDA programů
- Použití technik koalescence CUDA ke zvýšení propustnosti paměti
- Použití technik cachování a předčítání (prefetching) CUDA ke snížení latence paměti
- Použití technik sdílené a lokální paměti CUDA k optimalizaci přístupu k paměti a šířky pásma
- Použití profilování CUDA a profilovacích nástrojů k měření a zlepšování doby provedení a využití zdrojů
Požadavky
- Pochopení jazyka C/C++ a konceptů paralelního programování
- Základní znalosti počítačové architektury a hierarchie paměti
- Zkušenosti s nástroji příkazového řádku a editory kódu
Cílové publikum
- Vývojáři, kteří chtějí se naučit používat CUDA k programování GPU od NVIDIA a tapsání jejich paralelních možností
- Vývojáři, kteří chtějí psát výkonný a škálovatelný kód, který může běžet na různých CUDA zařízeních
- Programátoři, kteří chtějí prozkoumat nízkourovrové aspekty programování GPU a optimalizovat výkon svého kódu