Fakulta informačních technologií VUT v Brně

Detail předmětu

Praktické paralelní programování

PPP Ak. rok 2019/2020 letní semestr 5 kreditů

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. 

Garant předmětu

Zástupce garanta předmětu

Jazyk výuky

český

Zakončení

zápočet+zkouška (písemná)

Rozsah

26 hod. přednášky, 16 hod. pc laboratoře, 10 hod. projekty

Bodové hodnocení

60 zkouška, 20 půlsemestrální test, 20 projekty

Zajišťuje ústav

Přednášející

Cvičící

Kadlubiak Kristián, Ing. (UPSY FIT VUT)
Kukliš Filip, Ing. (UPSY FIT VUT)

Získané dovednosti, znalosti a kompetence z 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.

Dovednosti, znalosti a kompetence obecné

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.

Cíle předmětu

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

Proč je předmět vyučován

Tento předmět Vás zavede do oblasti, kde jeden počítač ani zdaleka nestačí pro řešení daného problému. Jedinou možností je pak rozdělit práci na několik strojů a zajistiti jejich vzájemnou komunikaci a synchronizaci. Pro tyto účely si podrobně představíme knihovnou MPI, kterou budeme následně zkoušet na superpočítači Salomon. Aby naše kódy dobře šlapaly, nahlédneme i pod kapotu těchto stojů a seznámíme se s architekturou uzlů a propojovacích sítí. V rámci předmětu si představíme i několik typických problémů z oblasti vysoce náročného počítání, např. fyzikální simulace síření tepla, dynamiku kapalin, gravitační působení galaxií nebo sbalování proteinů, nebo Monte-Carlo metody pro simulaci síření světla. V rámci výkladu si ukážeme zajímavé knihovny z dané oblasti.

Požadované prerekvizitní znalosti a dovednosti

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.

Literatura studijní

Literatura referenční

  • Hennessy, J.L., Patterson, D.A.: Computer Architecture - A Quantitative Approach. 5. vydání, Morgan Kaufman Publishers, Inc., 2012, 912 s., ISBN: 9780123747501 
  • Pacecho, P.: Introduction to Parallel Programming. Morgan Kaufman Publishers, 2011, 392 s., ISBN: 9780123742605 

Osnova přednášek

  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.

Osnova počítačových cvičení

  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í

Osnova ostatní - projekty, práce

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

Průběžná kontrola studia

Vyhodnocení projektu v celkovém rozsahu 10 hodin, půlsemestrální písemka.

Kontrolovaná výuka

  • 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í

Podmínky zápočtu

Získání 20 ze 40 bodů za projekty a půlsemestrální písemku.

Rozvrh

DenTypTýdnyMístn.OdDoPSKSkupInfo
Popřednáškavýuky D0207 08:0009:50 1MIT 2MIT MPV - MSK xx
Popoč. labvýuky O204 10:0011:50 1MIT 2MIT xx
Popoč. labvýuky O204 15:0016:50 1MIT 2MIT xx
Stpoč. labvýuky O204 08:0009:50 1MIT 2MIT xx
poč. labvýuky O204 08:0009:50 1MIT 2MIT xx
poč. labvýuky O204 10:0011:50 1MIT 2MIT xx

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

Nahoru