Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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
Reference (2)
Velmi interaktivní s různými příklady, s dobrým postupem ve složitosti mezi začátkem a koncem školení.
Jenny - Andheo
Kurz - GPU Programming with CUDA and Python
Machine Translated
Trenéři energii a humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurz - NVIDIA GPU Programming - Extended
Machine Translated