Vyučující
|
-
Bližňák Michal, Ing. Ph.D.
-
Janků Peter, 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
|
-
David B. Kirk, Wen-mei W. Hwu. Programming Massively Parallel Processors: A Hands-on Approach. Morgan Kaufmann, 2016. ISBN 978-0128119860.
-
John Cheng, Max Grossman, Ty McKercher. Professional CUDA C Programming. Wrox, 2014. ISBN 978-1118739327.
-
Kernighan, Brian W. Programovací jazyk C : [ANSI C99]. Vyd. 1. Brno : Computer Press, 2006. ISBN 80-251-0897-X.
-
Prata, Stephen. Mistrovství v C++. 3., aktualiz. vyd. Brno : Computer Press, 2007. ISBN 978-80-251-1749-1.
-
SANDERS, Jason. CUDA by Example. Addison-Wesley, 2011. ISBN 978-0131387683.
|