Detail předmětu

Praktické paralelní programování

FIT-PPPAk. rok: 2024/2025

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

Vstupní znalosti

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.

Pravidla hodnocení a ukončení předmětu

Vyhodnocení projektu v celkovém rozsahu 10 hodin, půlsemestrální písemka.
  • Zameškaná cvičení je možné nahradit v alternativní termín (pondělí nebo pátek)
  • V poslední týdnu semestru budou probíhat náhradní civčení

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

Základní literatura

Aktuální PPT prezentace přednášek v systému Moodle (CS)
Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar: Introduction to Parallel Computing, Addison-Wesley, 2003, 978-0201648652.Slides: download
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.
Pacecho, P.: Introduction to Parallel Programming. Morgan Kaufman Publishers, 2011, 392 s., ISBN: 9780123742605 URL: 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

Doporučená literatura

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

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

  • Program MITAI magisterský navazující

    specializace NGRI , 0 ročník, letní semestr, volitelný
    specializace NADE , 0 ročník, letní semestr, volitelný
    specializace NISD , 0 ročník, letní semestr, volitelný
    specializace NMAT , 0 ročník, letní semestr, volitelný
    specializace NSEC , 0 ročník, letní semestr, volitelný
    specializace NISY do 2020/21 , 0 ročník, letní semestr, volitelný
    specializace NNET , 0 ročník, letní semestr, volitelný
    specializace NMAL , 0 ročník, letní semestr, volitelný
    specializace NCPS , 0 ročník, letní semestr, volitelný
    specializace NHPC , 1 ročník, letní semestr, povinný
    specializace NVER , 0 ročník, letní semestr, volitelný
    specializace NIDE , 0 ročník, letní semestr, volitelný
    specializace NISY , 0 ročník, letní semestr, volitelný
    specializace NEMB do 2023/24 , 2 ročník, letní semestr, povinný
    specializace NSPE , 0 ročník, letní semestr, volitelný
    specializace NEMB , 2 ročník, letní semestr, povinný
    specializace NBIO , 0 ročník, letní semestr, povinný
    specializace NSEN , 0 ročník, letní semestr, volitelný
    specializace NVIZ , 0 ročník, letní semestr, volitelný

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. Architektury se zasíláním zpráv, současné superpočítačové systémy.
  3. Topologie propojovacích sítí, směrovací algoritmy, přepínání, řízení toku.
  4. Technologie HPC sítí (Infiniband).
  5. Distribuované souborové systémy (Lustre, HPFS).
  6. Zasílání zpráv MPI, párové komunikace, datové typy.
  7. MPI kolektivní komunikace a komunikátory.
  8. Hybridní programování OpenMP/MPI a jednostranné komunikace.
  9. Knihovny pro paralelní výpočty, nástroje pro profilování a trasování aplikací.
  10. Programovací vzory pro paralelní programování.
  11. Případové studie: maticové výpočty, řešení systémů lin. rovnic (Gauss, Jordan, Jaccobi).
  12. Případové studie: řešení diferenciálních rovnic (FDTD, spektrální metody, FEM/BEM).
  13. Případové studie: Dynamika kapalin (Lattice-Boltzmann), N-Body simulace, Monte-Carlo.

Cvičení na počítači

16 hod., nepovinná

Vyučující / Lektor

Osnova

  1. MPI: Point-to-point komunikace.
  2. MPI: Kolektivní komunikace.
  3. MPI: Komunikátory.
  4. MPI: Datové typy, redukce.
  5. MPI: Paralelní vstup výstup.
  6. Profilování a trasování paralelních aplikací.
  7. Maticové výpočty (Transpozice, Gaussova eliminace).
  8. Metody konečných diferencí

Projekt

10 hod., povinná

Vyučující / Lektor

Osnova

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