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ů

Vstupní znalosti

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

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

  • Projekt 60b
    • 30b implementace
    • 20b dokumentace a měření
    • 10b ústní obhajoba
  • Písemné testy 40b
    • 5 krátých testů na 8b v rámci cvičení 2-6.

Podmínky zápočtu

  • Získání min 30b z projektu a min 20b z průběžných testů.

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 Barbora a Karolina.
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/

Elearning

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. Programovací vzory pro paralelní programování.
  3. Úvod do MPI, párové komunikace.
  4. Kolektivní komunikace.
  5. Komunikátory a topologie.
  6. Komplexní datové typy
  7. Jednostranné komunikace a RDMA
  8. Paralelní vstupně výstupní operace, MPI-IO
  9.  Distribuované souborové systémy (Lustre) a knihovna HDF5.
  10. Knihovny pro paralelní výpočty, nástroje pro profilování a trasování aplikací.
  11. Hybridní programování OpenMP/MPI a jednostranné komunikace.
  12. Techniky pro směrování a řízení toku v superpočítačových systémech.
  13. Případové studie: maticové výpočty, řešení diferenciálních rovnic, dynamika kapalin (Lattice-Boltzmann), N-Body simulace, Monte-Carlo.

Cvičení na počítači

16 hod., povinná

Vyučující / Lektor

Osnova

  1. MPI: Párové (P2P) komunikace
  2. MPI: Kolektivní komunikace, TEST 1.
  3. MPI: Komunikátory, TEST 2.
  4. MPI: Datové typy, TEST 3.
  5. MPI: Jednostranné komunikace, TEST 4.
  6. MPI: Paralelní vstup výstup, TEST 5.
  7. HDF5: Knihovna pro paralelní vstup a výstup
  8. Profilování a trasování paralelních aplikací.

Projekt

10 hod., povinná

Vyučující / Lektor

Osnova

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

Elearning