250 likes | 429 Views
Paralelní programování. Úvod. Paralelismus. Základní úrovně: hardwarová (procesory, jádra) programová (procesy, vlákna) algoritmická (uf... ) Motivace: zvýšení výkonu redundance jiné cíle, ale podobné nástroje a problémy. Proč zvyšovat výkon?. Moorův zákon:
E N D
Paralelismus • Základní úrovně: • hardwarová (procesory, jádra) • programová (procesy, vlákna) • algoritmická (uf... ) • Motivace: • zvýšení výkonu • redundance • jiné cíle, ale podobné nástroje a problémy
Proč zvyšovat výkon? • Moorův zákon: • „... Počet tranzistorů/komponent, které lze levně integrovat se zdvojnásobí každý rok...“ • 12 měsíců (1965) • 18 měsíců (≈ 1985) • 24 měsíců (≈2005) • ? • Jedná se spíš o strategii Intelu než o zákon • Dodržuje se zvyšováním počtu jader • nejsou integrované na jednom polovodiči
Skutečný průběh Zdvojnásobení každých: 12 měsíců 24 měsíců
Frekvence • Posledních 10let se drží okolo 3Ghz • Růst se neočekává • Rychlost elektronů je konečná • Tranzistory mají konečnou velikost
CPU vs. GPU • multi-coremikroprocesory • zrychlování sekvenčních programů • rozsáhlé univerzální instrukční soubory • více jader: • hypertherading s dvěma a více vlákny • pipeline • many-coremikroprocesory • zvyšování propustnosti (throughput) • stovky jader, stovky vláken • zaměřeno na floating-point operace
Kapacita × zpoždění • průměr 1m • délka 1200km • kapacita • 160 000 000 litrů/den • zpoždění (latency) • 12 dní • propustnost? • odezva?
Terminologie • Paralelní systém – systém, ve kterém může probíhat několik procesů/činnostísoučasně • Rozlišovací úroveň • instrukce, iterace, procedura, vlákno, proces,úloha • Proces × Vlákno • vlákno – instance kódu + dat a stav zásobníku + registrů • proces – kolekce vláken, společný kód + data
Terminologie • Procesor × Jádro • jádro (core) – čip + paměť + řadič vykonávající jedno vlákno • procesor – kolekce jader • multithreaded-core • multiprocesor = multicore • Abstrakce • MProcesory se sdílenou pamětí • symetrické × nesymetrické • MProcesorys distribuovanou pamětí
Paralelizace – HW • Flynnova klasifikace systému • staré (1966), hrubé, ale používané • Single Instruction, Single Data stream (SISD) • Single Instruction, Multiple Data streams (SIMD) • Multiple Instruction, Single Data stream (MISD) • Multiple Single Instruction stream, Multiple Data stream (MSIMD) – několik propojených SIMD • Same Program, Multiple Data stream (SPMD) – každý procesor provádí stejný program, využívají se běžné CPU • Multiple Instruction, Multiple Data streams (MIMD)
Single Instruction, Single Data • data jsou zpracovávána výhradně sériově • instrukce jsou prováděny sériově • stačí jeden CPU • řídicí jednotky • klasický vonNeumannův počítač
Multiple Instruction, Single Data • jedna data jsou předávána více instrukcím • více CPU, každý zpracovává data v jiné fázi • „výrobní linka“ • umělá kategorie • není to pipelining
Single Instruction, Multiple Data • Jedná instrukce se provádí na více datech • Více CPU provádí stejnou instrukci s jinými daty • Typické GPU • maticové procesory • array/matrix procesor for (int i = 0; i <= n; i++) { X[i] = Y[i] + Z[i]; }
MultipleInstruction, MultipleData • Různá CPU mohou provádět různé operace • Různá CPU pracují s jinými daty • Moderní počítače • Distribuované systémy • HW virtualizace • Grid
Exotický HW • Asociativní procesory • maticový procesor s HW propojovací sítí • adresace dat podle obsahu (ekvivalence, klíč, interval) • Počítače řízené daty • instrukce nemají vedlejší efekty • výstupem je vždy hodnota • průmyslový HW • ...
Koncepty • Komunikace – výměna dat mezi paralelně probíhajícími procesy • Synchronizace – zaručení definované posloupnosti operací, logika procesů • Režie (overhead) paralelismu • čas spotřebovaný na komunikaci • čas spotřebovaný na synchronizaci a výměnu dat • ostatní režie (knihovny, spuštění, zastavení) • Škálovatelnost (scalability) • míra růstu výkonosti s růstem paralelismu
Amdahlův zákon • – podíl programu, který nelze paralelizovat • – podíl programu, který lze paralelizovat • t – celková doba výpočtu • p – počet procesorů • Dva pohledy
Amdahlův zákon Zrychlení
Možnosti paralelizace • Nízko úrovňové (fine grained) • pipelining, multithreading, a podobné vychytávky • pomáhá při běžných operacích • neřešíme • Vyšší úroveň • použití více jader/ procesorů • pod 60% zcela nezajímavé • paralelizace algoritmu • zvyšujeme • využití speciálního HW (GPU)
Co musíme vyřešit • synchronizace • přístup ke sdílené paměti • různé modely • distribuce dat • distribuce instrukcí (práce) • komunikace • minimalizovat režii • použít vhodný HW • měření
Předmět PP • Zápočet nebo zkouška? • Projekt • dvojice • paralelizace nějaké úlohy • téma je volné • vyhodnocení • tzn. zpracování stejné úlohy paralelně a sériově • distribuovaný výpočet nebo GPU • jednoduchý test