Vyberte svůj jazyk
Kurz Parallel Programming
Více než 2 miliony studentů po celém světě

Kurz Parallel Programming

Zvládněte celý stack paralelního programování – od vláken CPU a OpenMP po clustery MPI a GPU CUDA. Tento kurz Vám poskytne nástroje, teorii a praktické zkušenosti k psaní rychlého, škálovatelného softwaru na moderním hardwaru. Ať už cílíte na vícejádrové procesory nebo GPU NVIDIA, naučíte se měřit, optimalizovat a dosahovat skutečných výkonnostních zisků.

Dedika pro firmy

Co se naučíte:

Získáte hluboké porozumění paralelnímu počítání napříč architekturami se sdílenou pamětí, distribuovanou pamětí a GPU. Kurz pokrývá vlákna ve stylu POSIX, direktivy OpenMP, komunikační vzory MPI a programování jader CUDA od úplných základů. Budete studovat paralelní algoritmy včetně řazení, skenování a procházení grafů spolu s bezuzamčenými datovými strukturami. Podrobně jsou probrány nástroje pro analýzu výkonu a optimalizační strategie – včetně blokování do mezipaměti, vyrovnávání zátěže a modelování roofline. Mezi pokročilá témata patří hybridní programování MPI a OpenMP, paralelní numerické metody a vysokoúrovňové frameworky jako Dask a TBB. Na konci budete vybaveni k návrhu, implementaci a vyladění kompletních paralelních aplikací pro reálné pracovní zátěže.

Jak studujete v praxi Kurz Parallel Programming

Jak procvičujete Kurz Parallel Programming

Pro vás, kteří jste firma a chcete školit svůj tým

V Dedika pro firmy je kurz doplněn o cvičení a příklady přímo z vašeho podnikání a přizpůsoben tak, jak vaše firma potřebuje.

Klikněte zde

Obsah kurzu

8 Kapitoly • 40 LekceDélka mezi 4 a 360 hodinami (rozhodujete vy)

Kapitola 1Zobrazit detaily

Základy paralelního počítání

  • Lekce 1 • Přehled hardwarové architektury

    Poskytuje přehled jader CPU, mezipamětí, paměťových sběrnic a streamovacích multiprocesorů GPU. Propojuje hardwarovou topologii s návrhovými rozhodnutími v softwaru napříč celým kurzem.

  • Lekce 2 • Měření paralelního výkonu

    Vysvětluje Amdahlův zákon, Gustafsonův zákon a metriky efektivity. Studenti získají kvantitativní nástroje pro hodnocení každého programu, který napíší.

  • Lekce 3 • Souběžnost versus paralelismus

    Rozlišuje mezi souběžným prokládáním a skutečným současným prováděním. Vyjasňuje terminologii používanou ve všech navazujících kapitolách.

  • Lekce 4 • Modely paralelního programování

    Představuje modely se sdílenou pamětí, předáváním zpráv a datově paralelní modely. Poskytuje taxonomii, kterou studenti využijí při výběru nástrojů v pozdějších kapitolách.

  • Lekce 5 • Proč na paralelismu záleží

    Pokrývá limity výkonu sekvenčního provádění a ekonomické hnací síly paralelního hardwaru. Stanovuje motivaci pro každou později představenou techniku.

Kapitola 2Zobrazit detaily

Vlákna a programování se sdílenou pamětí

  • Lekce 1 • Atomické operace a paměťové modely

    Vysvětluje hardwarové atomické operace, porovnání-a-výměnu a záruky uspořádání paměti. Připravuje studenty na bezzámkové datové struktury v pozdějších kapitolách.

  • Lekce 2 • Vzájemné vyloučení a zámky

    Učí použití mutexů, spinlocků a rozsahu zámků pro ochranu sdíleného stavu. Přímo řeší rizika datových souběhů představená v kapitole 1.

  • Lekce 3 • Základy vláken

    Pokrývá tvorbu, připojování a oddělování vláken pomocí API ve stylu POSIX. Seznamuje studenty s modelem provádění před zavedením synchronizace.

  • Lekce 4 • Podmíněné proměnné a bariéry

    Představuje podmíněné proměnné pro koordinaci producent-konzument a bariéry pro hromadnou synchronizaci. Rozšiřuje zamykání na událostmi řízenou koordinaci vláken.

  • Lekce 5 • Fondy vláken a fronty práce

    Pokrývá návrh fondu vláken pro amortizaci režie tvorby a vyrovnávání zátěže. Propojuje základní API vláken s později představenými rámci pro úlohy na vyšší úrovni.

Kapitola 3Zobrazit detaily

OpenMP pro paralelismus se sdílenou pamětí

  • Lekce 1 • Vymezení viditelnosti dat a redukce

    Vysvětluje klauzule private, shared, firstprivate a reduction pro řízení viditelnosti proměnných. Zabraňuje datovým souběhům bez ručního zamykání.

  • Lekce 2 • Paralelní smyčky a sdílení práce

    Pokrývá konstrukce parallel-for, sections a single pro distribuci iterací smyček. Přímo aplikuje datově paralelní model z kapitoly 1.

  • Lekce 3 • Synchronizační konstrukce v OpenMP

    Pokrývá direktivy barrier, critical, atomic a flush pro jemné řízení. Doplňuje znalosti o mutextu a atomičnosti z kapitoly 2.

  • Lekce 4 • Programovací model OpenMP

    Představuje model provádění fork-join a syntaxi direktiv kompilátoru. Vytváří mentální model, který studenti používají pro všechny konstrukce OpenMP.

  • Lekce 5 • Úlohový paralelismus v OpenMP

    Představuje direktivy task a taskwait pro nepravidelný a rekurzivní paralelismus. Rozšiřuje sdílení práce na necyklické řídící toky.

Kapitola 4Zobrazit detaily

Programování v distribuované paměti s MPI

  • Lekce 1 • Model provádění MPI

    Pokrývá model SPMD, komunikátory a identifikaci ranků. Vytváří kontext distribuovaného provádění pro všechny programy MPI.

  • Lekce 2 • Komunikace bod-bod

    Učí blokující a neblokující operace odeslání a příjmu s párováním značek. Buduje komunikační primitiva, která jsou základem všech vzorů na vyšší úrovni.

  • Lekce 3 • Operace kolektivní komunikace

    Pokrývá kolektivní operace broadcast, scatter, gather, reduce a all-to-all. Nahrazuje ruční vzory bod-bod optimalizovanými knihovními voláními.

  • Lekce 4 • Výkon a škálovatelnost MPI

    Analyzuje latenci, šířku pásma a strategie překrývání komunikace a výpočtu. Aplikuje Amdahlův a Gustafsonův zákon z kapitoly 1 na distribuované programy.

  • Lekce 5 • Odvozené datové typy a komunikátory

    Představuje vlastní MPI datové typy pro nespojitá data a dělení komunikátorů. Umožňuje efektivní komunikaci složitých datových struktur.

Kapitola 5Zobrazit detaily

Programování GPU s CUDA

  • Lekce 1 • Profilování a ladění programů CUDA

    Pokrývá postupy optimalizace řízené profilerem a běžné vzory chyb na GPU. Vybavuje studenty k diagnostice a opravě problémů s výkonem a správností.

  • Lekce 2 • Hierarchie paměti CUDA

    Pokrývá globální, sdílenou, konstantní a registrovou paměť s přístupovými vzory. Efektivní využití paměti je primární pákou pro výkon GPU.

  • Lekce 3 • Techniky optimalizace jader

    Učí sloučený přístup do paměti COALES, ladění obsazenosti a redukci divergence warpu. Přímo zlepšuje propustnost jader napsaných v předchozích částech.

  • Lekce 4 • Programovací model CUDA

    Představuje mřížky, bloky, vlákna a model provádění SIMT. Propojuje hardwarové GPU z kapitoly 1 s abstrakcí softwaru CUDA.

  • Lekce 5 • Proudy CUDA a souběžnost

    Představuje proudy, události a souběžné provádění jader pro překrývání práce. Rozšiřuje strategie překrývání představené v kapitole MPI na GPU.

Kapitola 6Zobrazit detaily

Paralelní algoritmy a datové struktury

  • Lekce 1 • Bezzámkové datové struktury

    Navrhuje bezzámkové zásobníky, fronty a hashovací mapy pomocí operací CAS. Aplikuje atomická primitiva z kapitoly 2 na datové struktury s vysokou souběžností.

  • Lekce 2 • Paralelní grafové algoritmy

    Pokrývá BFS, SSSP a souvislé komponenty pomocí paralelních grafových rámců. Aplikuje kolektivní komunikaci a úlohový paralelismus na nepravidelné úlohy.

  • Lekce 3 • Analýza práce a rozpětí

    Představuje model práce a rozpětí, poměr paralelismu a Brentův teorém. Poskytuje analytický rámec pro hodnocení všech algoritmů v této kapitole.

  • Lekce 4 • Paralelní prefix a scan

    Pokrývá algoritmy inkluzivního a exkluzivního scanu a jejich aplikace. Scan je základní primitivum používané v algoritmech pro třídění, kompakci a grafy.

  • Lekce 5 • Paralelní řadicí algoritmy

    Učí bitonické třídění, merge sort a radix sort přizpůsobené pro paralelní provádění. Navazuje na primitiva scanu a analýzu práce a rozpětí z předchozích částí.

Kapitola 7Zobrazit detaily

Analýza výkonu a optimalizace

  • Lekce 1 • Profilování paralelních aplikací

    Pokrývá hardwarové čítače výkonu, vzorkovací profilery a nástroje založené na trasování. Vytváří základ měření pro všechna optimalizační rozhodnutí.

  • Lekce 2 • Model roofline a analýza úzkých hrdel

    Aplikuje model roofline pro klasifikaci jader omezených výpočtem versus pamětí. Navádí studenty k nejúčinnější optimalizaci pro daný program.

  • Lekce 3 • Snížení komunikační režie

    Učí agregaci zpráv, jejich překrývání a směrování s ohledem na topologii pro programy MPI. Rozšiřuje koncepty výkonu MPI z kapitoly 4 o optimalizační techniky.

  • Lekce 4 • Strategie vyrovnávání zátěže

    Pokrývá statické rozdělení, dynamické kradení práce a plánování guided. Řeší nerovnováhu v zátěži, která omezuje škálovatelnost v reálných aplikacích.

  • Lekce 5 • Optimalizace hierarchie paměti

    Učí blokování mezipaměti (cache blocking), prefetching a eliminaci falešného sdílení. Přímo se zaměřuje na mezipaměť a topologii NUMA představené v kapitole 1.

Kapitola 8Zobrazit detaily

Pokročilé paralelní vzory a aplikace

  • Lekce 1 • Návrh komplexní paralelní aplikace

    Vede studenty skrze analýzu požadavků, výběr algoritmu a ověření výkonu pro kompletní paralelní aplikaci. Syntetizuje všechny kompetence z kurzu.

  • Lekce 2 • Vzory pipeline a wavefront

    Pokrývá fáze softwarové pipeline, výpočty wavefront a analýzu propustnosti. Rozšiřuje koncepty zřetězení z kapitoly 1 na vícestupňové paralelní programy.

  • Lekce 3 • Hybridní programování MPI a OpenMP

    Navrhuje hybridní programy kombinující ranky MPI s vlákny OpenMP na uzel. Integruje kapitoly 3 a 4 do jednotné strategie víceúrovňového paralelismu.

  • Lekce 4 • Paralelismus rozděl-a-panuj

    Učí rekurzivní rozklad na úlohy, mezní prahy a optimalizaci rozpětí. Staví na úlohách OpenMP a analýze práce a rozpětí z předchozích kapitol.

  • Lekce 5 • Šablony a hustá lineární algebra

    Pokrývá výpočty s dlaždicovými šablonami a paralelní maticové operace pomocí rozkladu ve stylu BLAS. Aplikuje blokování mezipaměti a jádra GPU na numerické úlohy.

Certifikace

Váš platný certifikát o dokončení

Tento kurz je pro vás:

  • Softwaroví inženýři, kteří chtějí vymáčknout více rychlosti z existujících kódových základen.

  • Studenti informatiky, kteří se připravují na výzkumné role v oblasti vysoce výkonného počítání.

  • Datoví vědci, jejichž pipeline v Pythonu jsou příliš pomalé pro produkční pracovní zátěže.

  • Vývojáři her, kteří chtějí plně využít vícejádrové procesory a hardwarové GPU.

  • Výzkumníci provozující simulace, kteří potřebují škálovat nad rámec jednoho stroje.

  • Backendoví inženýři, kteří přecházejí do rolí zaměřených na výkon systémů nebo infrastruktury.

Co říkají naši studenti

Vaše lekce jsou perfektní. Koupil jsem si roční balíček a konečně mám možnost sledovat různá témata, která mě zajímají, aniž bych musel měnit platformu... děkuji za vše, co děláte, už jsem vás doporučil dalším lidem...
Giulio Carlo
Giulio CarloStudent digitálního marketingu
Líbí se mi, jak jsou lekce přímočaré a jak mohu přepínat mezi kapitolami a přeskakovat obsah, který nepotřebuji.
Mariana Ferres
Mariana FerresStudentka fotografie
Líbí se mi obsah a způsob prezentace a přepisu videí, což celý proces zrychluje!
Luciana Alvarenga
Luciana AlvarengaStudentka nail designu
Platforma je rychlá a jednoduchá na používání. Rozmanitost obsahu a doplňková videa velmi pomáhají při učení.
André Felipe
André FelipeStudent prompt engineeringu

Hlavní školení

Často kladené otázky

Kdo je Dedika?

Je certifikát platný v Česko?

Jsou kurzy zdarma?

Jaká je pracovní zátěž kurzu?

Jak kurzy vypadají?

Jak kurzy fungují?

Jaká je délka kurzů?

Jaká je cena nebo poplatek za kurzy?

Co je EAD nebo online kurz a jak funguje?

PDF kurz