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.
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 hostitelském programu
- Použití CUDA API k dotazování informací o zařízení a jeho funkcí
- Použití CUDA API k alokaci a uvolnění 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í jader a synchronizaci vláken
- Použití CUDA API ke zpracování chyb a výjimek
CUDA C/C++
- Pochopení role CUDA C/C++ v programu zařízení
- Použití CUDA C/C++ k zápisu jader, která se spouště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 je matematický, atomický, warp atd.
- Použití vestavěných proměnných CUDA C/C++, jako je threadIdx, blockIdx, blockDim atd.
- Používání knihoven CUDA C/C++, jako jsou cuBLAS, cuFFT, cuRAND atd.
Paměťový model CUDA
- Pochopení rozdílu mezi modely paměti hostitele a zařízení
- Použití paměťových prostorů CUDA, jako jsou globální, sdílené, konstantní a místní
- Použití paměťových objektů CUDA, jako jsou ukazatele, pole, textury a povrchy
- Použití režimů přístupu k paměti CUDA, jako je pouze čtení, pouze zápis, čtení-zápis atd.
- Použití modelu konzistence paměti CUDA a mechanismů synchronizace
Model provedení CUDA
- Pochopení rozdílu mezi modely provádění hostitele a zařízení
- Použití CUDA vláken, bloků a mřížek k definování rovnoběžnosti
- Použití funkcí vláken CUDA, jako je threadIdx, blockIdx, blockDim atd.
- Použití blokových funkcí CUDA, jako jsou __syncthreads, __threadfence_block atd.
- Používání funkcí mřížky CUDA, jako je gridDim, gridSync, kooperativní skupiny atd.
Ladění
- Pochopení běžných chyb a chyb v programech CUDA
- Použití Visual Studio Code debugger ke kontrole proměnných, zarážek, zásobníku volání atd.
- Použití CUDA-GDB k ladění programů CUDA na Linux
- Použití CUDA-MEMCHECK k detekci chyb a úniků paměti
- Použití NVIDIA Nsight k ladění a analýze programů CUDA ve Windows
Optimalizace
- Pochopení faktorů, které ovlivňují výkon programů CUDA
- Použití slučovacích technik CUDA ke zlepšení propustnosti paměti
- Použití mezipaměti a technik předběžného načítání CUDA ke snížení latence paměti
- Použití sdílené paměti a technik místní paměti CUDA k optimalizaci přístupu k paměti a šířky pásma
- Použití profilovacích a profilovacích nástrojů CUDA k měření a zlepšování doby provádění a využití zdrojů
Shrnutí a další kroky
Požadavky
- Pochopení jazyka C/C++ a konceptů paralelního programování
- Základní znalosti architektury počítačů a hierarchie paměti
- Zkušenosti s nástroji příkazového řádku a editory kódu
Publikum
- Vývojáři, kteří se chtějí naučit používat CUDA k programování NVIDIA GPU a využívat jejich paralelismus
- Vývojáři, kteří chtějí psát vysoce výkonný a škálovatelný kód, který lze spustit na různých zařízeních CUDA
- Programátoři, kteří chtějí prozkoumat nízkoúrovňové aspekty GPU programování a optimalizovat výkon svého kódu
28 hodiny