Detail předmětu

Praktické paralelní programování

FIT-PPPAk. rok: 2020/2021

Předmět pokrývá architekturu i programování distribuovaných paralelních systémů s funkčním a datovým paralelismem. Nejdříve je pojednáno o teorii paralelních systémů a paralelizaci programů. Následně je detailně rozebrána architektura současných superpočítačových systémů, topologií propojovacích síta  směrovacích algoritmů. Dále jsou studovány paralelní a distribuované souborové systémy. Pokračuje výklad programování pro systémy se zasíláním zpráv ve standardizovaném rozhraní MPI. Následují ukázky základních profilovacích nástrojů pro paralelní aplikace a vyhodnocení získaných výkonnostních metrik. Předmět se dále věnuje základním programovým vzorům pro tvorbu paralelních aplikací a případovým studií z oblasti lineární algebry, řešení problémů popsaných parciálními diferenciálními rovnicemi, N-Body systémům, a Monte-Carlo metodám. 

Jazyk výuky

čeština

Počet kreditů

5

Výsledky učení předmětu

Přehled architektur současných superpočítačových systémů, jejich možností a budoucích trendů. Schopnost vyhodnotit efektivitu softwarových aplikací na daném výpočetním systému, identifikovat výkonnostní problémy a navrhnout jejich nápravu. Znalosti základních programových vzorů vysoce náročných aplikací. Praktické zkušenosti s prací na superpočítačích Anselm a Salomon.
Znalost možností a omezení paralelního zpracování, schopnost odhadnout výkonnost paralelních aplikací. Jazyková výbava pro komunikaci a synchronizaci procesů/vláken. Kompetence v technických a programových prostředcích pro náročné vědecké výpočty a simulace.

Prerekvizity

Von Neumannova architektura počítače, paměťová hierarchie, paměti cache a jejich organizace, programování v JSI a v C/C++. Dále znalosti z kurzů PRL a AVS.

Způsob a kritéria hodnocení

Vyhodnocení projektu v celkovém rozsahu 10 hodin, půlsemestrální písemka.
Podmínky zápočtu:
Získání 20 ze 40 bodů za projekty a půlsemestrální písemku.

Učební cíle

Seznámit se s architekturou distribuovaných superpočítačových systémů, jejich propojovacími sítěmi a úložištěm dat. Orientovat se v nabídce paralelních systémů, umět posoudit komunikační a výpočetní možnosti konkrétní architektury a predikovat výkonnost paralelních aplikací. Naučit se psát přenositelné programy pomocí standardizovaných rozhraní, jazyků a knihoven, zapisovat paralelismus a komunikaci procesů. Naučit se je prakticky používat a řešit problémy s využitím superpočítačů.

Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky

  • Zameškaná cvičení je možné nahradit v individuálním termínu (nebo shlédnutím záznamů z MS Teams)
  • V poslední týdnu semestru budou probíhat náhradní cvičení
  • Pro získání bodů ze závěrečné semestrální zkoušky je nutné tuto zkoušku složit tak, aby byla hodnocena nejméně 20 body. V opačném případě bude zkouška hodnocena 0 body.

Základní literatura

Aktuální PPT prezentace přednášek v systému Moodle (CS)
Pacecho, P.: Introduction to Parallel Programming. Morgan Kaufman Publishers, 2011, 392 s., ISBN: 9780123742605 URL: download
Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar: Introduction to Parallel Computing, Addison-Wesley, 2003, 978-0201648652.Slides: download
Victor Eijkhout: Parallel Programming in MPI and OpenMP Full book: download web version: https://theartofhpc.com/pcse/
William Gropp, Ewing Lusk, Anthony Skjellum: Using MPI - 2nd Edition: Portable Parallel Programming with the Message Passing InterfaceUsing MPI - 2nd Edition: Portable Parallel Programming with the Message Passing Interface, MIT Press, 978-0262571326
Hennessy, J.L., Patterson, D.A.: Computer Architecture - A Quantitative Approach. 5. vydání, Morgan Kaufman Publishers, Inc., 2012, 1136 s., ISBN 1-55860-596-7.

Doporučená literatura

MPI Tutoriál: http://mpitutorial.com/
Alternativní kurz o paralelním programování http://www.cs.kent.edu/~jbaker/ParallelProg-Sp11/

Zařazení předmětu ve studijních plánech

  • Program IT-MGR-2 magisterský navazující

    obor MBS , libovolný ročník, letní semestr, volitelný
    obor MBI , libovolný ročník, letní semestr, povinně volitelný
    obor MIS , libovolný ročník, letní semestr, volitelný
    obor MIN , libovolný ročník, letní semestr, volitelný
    obor MMM , libovolný ročník, letní semestr, volitelný
    obor MGM , libovolný ročník, letní semestr, povinně volitelný

  • Program MITAI magisterský navazující

    specializace NBIO , libovolný ročník, letní semestr, povinný
    specializace NISD , libovolný ročník, letní semestr, volitelný
    specializace NISY , libovolný ročník, letní semestr, volitelný
    specializace NIDE , libovolný ročník, letní semestr, volitelný
    specializace NCPS , libovolný ročník, letní semestr, volitelný
    specializace NSEC , libovolný ročník, letní semestr, volitelný
    specializace NMAT , libovolný ročník, letní semestr, volitelný
    specializace NGRI , libovolný ročník, letní semestr, volitelný
    specializace NNET , libovolný ročník, letní semestr, volitelný
    specializace NVIZ , libovolný ročník, letní semestr, volitelný
    specializace NSEN , libovolný ročník, letní semestr, volitelný
    specializace NMAL , libovolný ročník, letní semestr, volitelný
    specializace NVER , libovolný ročník, letní semestr, volitelný
    specializace NADE , libovolný ročník, letní semestr, volitelný
    specializace NSPE , libovolný ročník, letní semestr, volitelný

  • Program IT-MGR-2 magisterský navazující

    obor MPV , 1. ročník, letní semestr, povinný
    obor MSK , 1. ročník, letní semestr, povinný

  • Program MITAI magisterský navazující

    specializace NHPC , 1. ročník, letní semestr, povinný
    specializace NEMB , 2. ročník, letní semestr, povinný

Typ (způsob) výuky

 

Přednáška

26 hod., nepovinná

Vyučující / Lektor

Osnova

  1. Ukazatele a zákony paralelního zpracování.
  2. Metodika tvorby paralelních programů.
  3. Knihovna MPI: Párové komunikace.
  4. Knihovna MPI: Kolektivní komunikace.
  5. Knihovna MPI: Komunikátory a topologie.
  6. Knihovna MPI: Datové typy.
  7. Knihovna MPI: Jednostranné komunikace.
  8. Distribuované souborové systémy a MPI-IO
  9. Knihovny pro paralelní vstup a výstup.
  10. Analýza výkonnosti paralelních aplikací.
  11. Případové studie paralelních aplikací (násobení matic, BLAS).
  12. Případové studie paralelních aplikací (Jacobi iterační metoda, metody konečných diferencí).
  13. Topologie propojovacích sítí, směrovací algoritmy, přepínání, řízení toku.

Cvičení na počítači

16 hod., povinná

Vyučující / Lektor

Osnova

  1. MPI: Point-to-point komunikace.
  2. MPI: Kolektivní komunikace.
  3. MPI: Komunikátory.
  4. MPI: Datové typy.
  5. MPI: Jednostranné komunikace
  6. MPI: vstup a výstup pomocí MPI-IO
  7. MPI: vstup a výstup pomocí HDF5
  8. Profilování a trasování

Projekt

10 hod., povinná

Vyučující / Lektor

Osnova

  • Vývoj paralelní program v MPI superpočítači.