Section outline

    • Vážení študenti,

      vitajte v kurze Úvod do paralelného programovania.

      Koncom minulého storočia bolo paralelné programovanie doménou relatívne úzkej skupiny ľudí. Hlavným dôvodom bola skutočnosť, že pre vykonávanie takýchto programov bol potrebný špeciálny hardvér, ktorý nebol bežne dostupný širokému spektru používateľov. Od tých čias však nastalo mnoho zmien a hardvér umožňujúci paralelné výpočty sa dnes bežne dostáva ku každému používateľovi. Za jeden z významných míľnikov možno považovať aj použitie Beowulf klastra, čo otvorilo možnosti paralelného počítania za relatívne nízke náklady. V súčasnosti je takýto hardvér bežne dostupný a poskytovaný pre vedecké a komerčné účely výpočtovými strediskami a univerzitami v podobe superpočítačov a vysokovýkonných klastrov. Zároveň si ale treba uvedomiť, že hardvér umožňujúci paralelné počítanie sa dostal aj do rúk bežných používateľov v podobe viacjadrových procesorov, bežne používaných v stolových a prenosných počítačoch alebo v podobe grafických kariet disponujúcich nezanedbateľným výpočtovým výkonom. V neposlednom rade je potrebné sa zmieniť aj o stále stúpajúcom trende nasadzovania cloudových riešení, ktoré dokážu poskytnúť používateľom širokú škálu infraštruktúry pre paralelné počítanie.

      Tieto zmeny si vyžadujú aj zmenu pohľadu na paralelné programovanie ako také a je potrebné sa zamerať na vzdelávanie v tejto oblasti. Veľké množstvo študentov si často ani len neuvedomuje potenciál hardvéru, ktorý dennodenne používajú. Samozrejme existuje nespočetne veľa aplikácií, ktoré si vystačia aj bez potreby znalosti akéhokoľvek paralelného programovania, avšak v momente, kedy už výkon jedného jadra procesora nie je postačujúci, je potrebné poznať zákonitosti a nástroje pre paralelné programovanie umožňujúce plne využiť výpočtový potenciál súčasného hardvéru.

      S cieľom umožniť študentom naučiť sa základy paralelného programovania sme zaviedli nový kurz určený pre študentov bakalárskeho stupňa aplikovanej informatiky. Absolvovaním tohto kurzu nadobudnú potrebné vedomosti a zručnosti, ktoré môžu ďalej využiť v rámci iných predmetov alebo vo svojej ďalšej profesii. Absolvovanie tohto predmetu si vyžaduje znalosti z programovania v jazyku C, ako aj niektoré poznatky z oblasti počítačových sietí a operačných systémov, najmä týkajúce sa oblasti procesov a vlákien. Preto odporúčame absolvovanie tohto kurzu až po absolvovaní základného kurzu z programovania, počítačových sietí a operačných systémov.

      Táto učebnica pozostáva z niekoľkých celkov. V prvej časti sa oboznámime s dôvodmi a historickým vývojom hardvéru, ktorý zohrával významnú úlohu pri rozvoji paralelného programovania a počítania. Tiež sa budeme zaoberať architektúrami paralelných počítačov vhodných pre vysokovýkonné počítanie. V ďalších častiach sa budeme zaoberať základnými technikami používanými pri navrhovaní paralelných programov a efektivite paralelných programov. Čitateľ sa bude môcť oboznámiť so základnou syntaxou používanou v rámci štandardu MPI alebo OpenMP, ako aj so stručným úvodom k platforme a programovému rozhraniu CUDA pre programovanie GPGPU. V jednotlivých kapitolách sa nachádzajú rôzne poznámky a teoretické alebo praktické úlohy na precvičenie a lepšie pochopenie danej problematiky.

      Radi by sme poznamenali, že problematika paralelného programovania a vysokovýkonného počítania je svojim rozsahom komplexná a rozsiahla téma, ktorú nie je možné pokryť jednou učebnicou. Našim cieľom je poskytnúť čitateľovi základné poznatky a možnosť oboznámiť sa s bežnými programátorskými technikami používanými v praxi, ktoré sú nevyhnutne potrebné na vývoj a implementáciu efektívnych paralelných programov. Preto by sme radi povzbudili čitateľa k ďalšiemu štúdiu manuálov a dokumentácie.


      Autori

    • Tento kurz vznikol s podporou Kultúrnej a edukačnej grantovej agentúry (KEGA) MŠVVaŠ SR v rámci projektu KEGA 011UMB-4/2017, ktorého hlavným cieľom je prispieť k efektívnemu využívaniu prostriedkov pre vysokovýkonné počítanie, ako aj motivovať nových používateľov k vývoju efektívnych paralelných programov.

      © Miroslav Melicherčík, Michal Pitoňák, Pavel Neogrády


    • Fóra a chaty
    • V tomto fóre diskutujeme o otázkach, ktoré potrebujete zodpovedať počas štúdia v kurze, týkajúci sa študijného obsahu.

    • V dohodnutých časoch je možné diskutovať priamo s tútorom.