Předmět: Parallel programming and computing

« Zpět
Název předmětu Parallel programming and computing
Kód předmětu UFY/505
Organizační forma výuky Přednáška + Cvičení
Úroveň předmětu Magisterský
Rok studia nespecifikován
Četnost výuky V každém akademickém roce, jen v zimním semestru.
Semestr Zimní
Počet ECTS kreditů 4
Vyučovací jazyk angličtina
Statut předmětu Povinný
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Dostupnost předmětu Předmět je nabízen přijíždějícím studentům
Vyučující
  • Předota Milan, doc. RNDr. Ph.D.
  • Musil Patrik, Mgr.
Obsah předmětu
Obsah přednášek: 1. Úvod do paralelního počítání. Co je to paralelní počítání? Proč potřebujeme paralelní počítače? Strategie paralelizace. Seznámení s jednoduchým paralelním programem (MPI_Init, MPI_Comm_size, MPI_Comm_rank, MPI_Finalize). 2. - 3. Paralelizace v MPI, základní příkazy (MPI_Bcast, MPI_Reduce, MPI_Allreduce). Paralelizace cyklů různými způsoby. 4. Komunikace polních proměnných (MPI_Scatter, MPI_Gather) 5. Příkazy jazyka C pro práci se soubory, vstup a výstup v paralelních programech, srovnání jednotlivých metod. 6. Časování běhu programu, komunikace vs. výpočetní čas - optimalizace počtu vláken, efektivita. 7. Point to point paralelizace v MPI (MPI_Send, MPI_Recv). 8. Příkazy pro vytvoření a správu MPI paralelního prostředí, spouštění úloh na více počítačích, frontové systémy. 9. Rozdělení paralelních úloh z hlediska jejich spolupráce během výpočtu. Sdílená vs. distribuovaná paměť, MPI vs. OpenMP paralelní prostředí, sdílená vs. soukromá proměnná. 10. Paralelizace v OpenMP, základní příkazy (pragma, paralelizace cyklů, redukce). 11. Paralelizace v OpenMP, pokročilé příkazy (pragma single/master, critical/atomic/ordered, paralelizace sekcí). 12. - 13. Programování na grafických kartách (GPU) v OpenCL, host + kernel, předávání argumentů, možnosti nastavení počtu GPU vláken. Obsah cvičení sleduje obsah přednášek. Po úvodním nastavení přístupu na paralelní klastr jsou řešeny úlohy pomocí MPI (výpočet součtu čísel a faktoriálu, výpočet určitého integrálu, výpočet energie konfigurace molekul včetně spouštění na více strojích a určování efektivity), následně pomocí OpenMP. Další úlohy procvičují probírané příkazy a funkce. V OpenCL jsou řešeny úlohy s rozměrnými maticemi a výpočet energie. Cílem naučit studenty řešit úlohy od jednoduchých, kde jednotlivá vlákna mohou nezávisle pracovat s daty, až po složitější, jako je paralelizace třídění souboru dat.

Studijní aktivity a metody výuky
Monologická (výklad, přednáška, instruktáž), Dialogická (diskuze, rozhovor, brainstorming), Práce s textem (učebnicí, knihou), Demonstrace, Laboratorní práce
  • Účast na výuce - 39 hodin za semestr
  • Domácí příprava na výuku - 26 hodin za semestr
  • Příprava na zápočet - 23 hodin za semestr
  • Příprava na zkoušku - 24 hodin za semestr
Výstupy z učení
Seznámení se způsoby paralelizace programů, jejich HW a SW implementací pomocí MPI a OpenMP. Stručné seznámení s paralelizací na GPU - grafických kartách. Řešení vzorových praktických úloh, práce v paralelním prostředí.
Zvládnutí MPI a OpenMP paralelizace, seznámení s principy GPU paralelizace. Schopnost napsat paralelní program a/nebo zparalelizovat sériový program.
Předpoklady
Znalost programování v některém programovacím jazyku (ideálně C, ve kterém probíhá výuka), základy práce v linuxu (na příkazové řádce, možno rychle doplnit).

Hodnoticí metody a kritéria
Ústní zkouška, Test

Podmínka získání zápočtu: Vyřešení zápočtové úlohy v závěrečném praktickém testu. Podmínka složení zkoušky: Alespoň 50% znalost látky obsažené ve dvou vylosovaných zkušebních otázkách.
Doporučená literatura
  • " RUUD VAN DER PAS, ERIC STOTZER, CHRISTIAN TERBOVEN. Using OpenMP-The Next Step: Affinity, Accelerators, Tasking, and SIMD, MIT Press; 1st edition 2017, ISBN: 978-0262534789.
  • BARBARA CHAPMAN, GABRIELE JOST, RUUD VAN DER PAS. Using OpenMP: Portable Shared Memory Parallel Programming, The MIT Press, 2007..
  • GERASSIMOS BARLAS. Multicore and GPU Programming: An Integrated Approach, Morgan Kaufmann 2014, ISBN: 978-0124171374.
  • Chandra, R., Dagum, L., Kohr, D., Dor Maydan. Parallel Programming in OpenMP. Morgan Kaufmann, 2000.
  • MICHAEL J. QUINN. Parallel Programming in C with MPI and OpenMP, McGraw Hill Higher Education, 2003..
  • WILLIAM GROPP, EWING LUSK, AND ANTHONY SKJELLUM. Using MPI - 3rd Edition: Portable Parallel Programming with the Message Passing Interface (Scientific and Engineering Computation), The MIT Press, 2014..


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