Předmět: Paralelní programování

» Seznam fakult » FEI » KST
Název předmětu Paralelní programování
Kód předmětu KST/NNPAR
Organizační forma výuky Přednáška + Cvičení
Úroveň předmětu Magisterský
Rok studia nespecifikován
Semestr Letní
Počet ECTS kreditů 5
Vyučovací jazyk Čeština
Statut předmětu Povinně-volitelný, Volitelný
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • Michalíček Petr, Ing.
  • Hrbek Václav, Ing.
  • Brandejský Tomáš, doc. Ing. Dr.
Obsah předmětu
Hardware pro vyšší výkon: vektorové procesory, multiprocesorové systémy, vícejádrové procesory, clustery, gridy, paměťové architektury UMA, NUMA. Vzory paralelního programování, vícevláknové aplikace, masivně paralelní aplikace, jádra, komunikace mezi procesy, race conditions Paralelní algoritmy Programování se sdílenou pamětí - úvod do OpenMP, synchronizace paraleních úloh, Amhdalův zákon. OpenMP Beowulf clustery MPI, UMA versus NUMA MPI komunikace mezi proces Superpočítače, PBSpro plánovač, případně plánovač SLURM (podobně jako na systémech v IT4I a dalších superpočítačích) Vektorové procesory, multimediální instrukce na standardních procesorech, GPGPU Sdílení disků, distribuované souborové systémy, specielní síťové architektury. CUDA a OpenCL, ACC, Parallel Patterns Library MOSIX, PGAS koncept a jazyk Cray Chapel BOINC a obdobné technologie na gridech Cvičení: Obsah cvičení sleduje bezprostředně obsah přednášek.

Studijní aktivity a metody výuky
Monologická (výklad, přednáška, instruktáž), Demonstrace, Nácvik dovedností
  • Semestrální práce - 46 hodin za semestr
  • Domácí příprava na výuku - 26 hodin za semestr
  • Kontaktní výuka - 26 hodin za semestr
  • Praktická výuka - 26 hodin za semestr
  • Příprava na zkoušku - 26 hodin za semestr
Výstupy z učení
Cílem předmětu je seznámit studenty se základními paralelními HW architekturami a pro ně vhodnými přístupy k paralelnímu programování, jejich možnostmi a omezeními. Seznámí se s paralelismem instrukcí a paralelismem dat a jejich využitím na běžných vícejádrových procesorech, grafických kartách a clusterech, stejně jako s programováním na grafických kartách. V předmětu se seznámíme s vlivem tzv. granulace úloh - potřeby vzájemné komunikace jednotlivých vláken úlohy a s tomu odpovídajícími HW i SW prostředky, vývojovými nástroji, jazyky, knihovnami. Protože pro výuku bude k dispozici vlastní cluster, bude možno provádět i např. experimenty s nastavením plánovače pro sledování jeho vlivu na běh úloh, měnit rychlost interní sítě a pod.
Po absolvování předmětu bude student způsobilý vytvářet programy pro základní paralelní HW architektury, bude znát základní přístupy paralelního programování, jejich možnosti a omezení. Především se seznámí s knihovnou OpenMP a z ní vycházejícími knihovnami, jako je podpora paralelního programování v posledních verzích C++ v17 a v20. Studenti se seznámí i s knihovnou MPI, která je základem paralelního programování na výpočetních clusterech. Rovněř se seznámí programování grafických karet především v prostředí CUDA a novým sjednoceným přístupům jako je jazyk Chapel vyvinutý firmou Cary/HPE.
Předpoklady
Základní znalost programování a algoritmizace.

Hodnoticí metody a kritéria
Písemná zkouška, Posouzení zadané práce, Obhajoba vlastního projektu

Požadavkem na zápočet je účast na cvičeních s povolenou nepřítomností na max. 2 a vypracování praktické úlohy. Zkouška z předmětu bude především písemná s vyhodnocením zadané praktická práce. V praktické práci student vyřeší zadaný problém z oblasti návrhu paralelních systémů v prostředí OpenMP, MPI nebo CUDA.
Doporučená literatura
  • PACECHO, Peter. An Introduction to Parallel Programming. Morgan Kaufmann, 201. ISBN 978-0123742605.


Studijní plány, ve kterých se předmět nachází
Fakulta Studijní plán (Verze) Kategorie studijního oboru/specializace Doporučený ročník Doporučený semestr