|
Vyučující
|
-
Janků Peter, Ing. Ph.D.
-
Bližňák Michal, Ing. Ph.D.
|
|
Obsah předmětu
|
Přednášky: - Úvod do heterogenního paralelního programování - Úvod do CUDA C a programování kernelů, paměťový model, sčítání vektorů - Vícerozměrné bloky a mřížky, synchronizace vláken, paralelní násobení matic - Optimalizace paměťových operací - sdružený přístup do paměti, paralelní konvoluce - Atomické operace, Paralelizace histogramu - Pokročilé operace v CUDA aplikacích I: události, měření času, zjištění CC, ...) - Pokročilé operace v CUDA aplikacích II: datové přenosy (streamy) a paralelizace úloh - Optimalizace CUDA aplikací (divergence warpu v paralelní redukci a maticových operacích, sdružený přístup do paměti, optimalizace pro architektury Fermi a Kepler) - Vizualizace výsledků operací CUDA aplikací (Mandelbrot) - Unifikovaný paměťový model v CUDA 6 - Úvod do OpenCL API - Úvod do OpenACC API Cvičení: - Instalace a konfigurace vývojových prostředí - CUDA C API - součet vektorů - CUDA C API - jednoduché násobení matic (globální paměť) - CUDA C API - prokládané násobení matic (sdílená paměť) - CUDA C API - paralelní konvoluce - CUDA C API - paralelní histogram - CUDA C API - součet vektorů pomocí CUDA streamů
|
|
Studijní aktivity a metody výuky
|
|
nespecifikováno
|
| Předpoklady |
|---|
| Odborné znalosti |
|---|
| Kurz navazuje na předchozí předměty "Programování v jazyce C" a "Paralelní procesy a programování". |
| Kurz navazuje na předchozí předměty "Programování v jazyce C" a "Paralelní procesy a programování". |
| Výsledky učení |
|---|
| popsat základní prvky jednotlivých architektur výpočetní GPU Nvidia |
| popsat základní prvky jednotlivých architektur výpočetní GPU Nvidia |
| vysvětlit princi plánování výpočetních operací na GPU |
| vysvětlit princi plánování výpočetních operací na GPU |
| vyjmenovat rozdíly při provádění výpočtů na GPU a CPU |
| vyjmenovat rozdíly při provádění výpočtů na GPU a CPU |
| vyjmenovat jednotlivé typy pamětí na GPU a charakterizovat je |
| vyjmenovat jednotlivé typy pamětí na GPU a charakterizovat je |
| definovat programový model CUDA aplikace a jeho napojení na HW |
| definovat programový model CUDA aplikace a jeho napojení na HW |
| Odborné dovednosti |
|---|
| vytvořit jednoduchou aplikaci s využitím programovacího jazyka C a knihovny Cuda |
| vytvořit jednoduchou aplikaci s využitím programovacího jazyka C a knihovny Cuda |
| použít jednotlivé paměti umístěné na GPU |
| použít jednotlivé paměti umístěné na GPU |
| využít paralelizace při přístupu do paměti s využitím streamů |
| využít paralelizace při přístupu do paměti s využitím streamů |
| analyzovat průběh vykonávání CUDA aplikace s využitím profilování |
| analyzovat průběh vykonávání CUDA aplikace s využitím profilování |
| navrhnout způsob paralelizace algoritmu na GPU s využitím knihovny Cuda |
| navrhnout způsob paralelizace algoritmu na GPU s využitím knihovny Cuda |
|
Doporučená literatura
|
|