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..
|