250 likes | 357 Views
Paralelní programování. Paralelizace algoritmu. Paralelní architektury. Single Instruction, Single Data stream (SISD) „tupé“ procesory Single Instruction, Multiple Data streams (SIMD ) maticové procesory Multiple Instruction, Single Data stream (MISD)
E N D
Paralelní programování Paralelizace algoritmu
Paralelní architektury • Single Instruction, Single Data stream (SISD) • „tupé“ procesory • Single Instruction, Multiple Data streams (SIMD) • maticové procesory • Multiple Instruction, Single Data stream (MISD) • Multiple Instruction, Multiple Data streams (MIMD) • běžné procesory • distribuované systémy
MIMD • Systémy se sdílenou pamětí • Symetrické – symmetric multiprocessors (SMP) • úzkým hrdlem je paměťová sběrnice • běžné počítače • Nesymetrické – non-uniform memory access (NUMA) • paměť je sdílená, ale rozdělená na segmenty – některé jsou blíž a jiné dál • princip programování stejný • nutné vyhnout se vzdáleným přesunům dat • optimálně využívat cache • běžné superpočítače
MIMD • Systémy s distribuovanou pamětí • MPP – Massively parallel processors • superpočítače • Gridy • heterogenní clustery • nemají centrální bod správy • hybridní systémy • clustery výpočetních jednotek se sdílenou pamětí • superpočítače • Clustery • homogenní (nebo homogenizované) samostatné výpočetní jednotky
Technické možnosti • paralelizace algoritmická • paralelizace programová • zasílaní zpráv • management a synchronizace procesů/vláken • distribuce dat • paralelizace na úrovni kompilátoru • direktivy označující paralelní kód • OpenMP
Postup paralelizace • Hledání souběžnosti • Návrh/úprava algoritmu • Datové a programové struktury • Implementace • Hledání souběžnosti • má vůbec smysl se snažit? • co je nejnáročnější? – na co je nutné se zaměřit?
Hledání souběžnosti • Dekompozice • Dekompozice úlohy • Dekompozice dat • jiný pohled na tutéž věc • udělat se musí obojí • Analýza a zpracování závislostí • Seskupení úloh • Určení pořadí • Sdílení dat • Kontrola
Dekompozice úlohy • Flexibilita • dekompozice by se neměla omezovat na jednu architekturu • regulace počtu úloh • Efektivita • musí dojít ke snížení nároků na paměť nebo čas • úloha musí obsahovat dost práce • musí být dost úloh, vztah k HW • Jednoduchost • umožnit ladění a údržbu • použití původního sekvenčního kódu
Dekompozice úlohy – příklad 1 • řešení úloh lineární algebry – maticové počty • grafické úlohy – transformace matic • A = B × C • dekompozice • jedna úloha bude počítat jednu výslednou buňku • úloha potřebuje přístup k jednomu řádku A a k jednomu sloupci B • nezávislé, ale možná neefektivní
Dekompozice úlohy – příklad 2 • raytracing, CT – medicína i průmysl • paprsek vychází ze zdroje a prochází prostředím • dochází ke změnám (pohlcení, odrazy, rozptyl) • dekompozice • každá úloha představuje jeden paprsek • jsou skoro nezávislé • každý paprsek má k dispozici celé prostředí • problém pro distribuovanou architekturu
Dekompozice úlohy – příklad 3 • graf– síť (strom) jednotek • vrcholy grafu (molekuly, osoby, auta, …) • hrany grafu (vazby, bezpečné vzdálenosti, …) • simulace hromadných procesů, metoda KP • chování prvku je ovlivněno chováním okolí (prahování) • http://www.youtube.com/watch?v=7wm-pZp_mi0 • dekompozice • úloha pro určení okolních „sil“ na prvek • úloha je špatně izolovaná • dají se rozlišovat různé druhy sil
Dekompozice dat • identifikace nejnáročnějších částí – práce s největšími objemy dat • identifikace nezávislých částí • rozklad na segmenty • na hranicích segmentů musí docházet k synchronizaci • výpočty využívající: • pole (matice) – řádky, sloupce, oblasti • seznamy, sítě (rekurzivní struktury) – nějaká část
Dekompozice dat • Flexibilita • velikost a počet datových jednotek by měl být proměnný a nastavitelný • zrnitost (granularity) • rozhodující je vliv režie řešení závislostí a manipulace s daty • Efektivita • jednotky musí být dost a rovnoměrně velké • Jednoduchost • způsob rozdělení (indexace) globálních dat na jednotky by měl být co nejjednodušší
Dekompozice dat – příklad 1 • násobení matic • rozdělení na řádky • skupiny řádků výsledné matice • celá druhá matice • mnoho operací čtení, pokud celá matice nevejde do paměti • rozložení na bloky
Dekompozice dat – příklad 2 • raytracing • rozdělení definice prostředí • rozdělení na segmenty • každá výpočetní jednotka počítá paprsky procházející segmentem • na hranici segmentů se synchronizuje se sousedními jednotkami • úspora paměti • časový problém
Dekompozice dat – příklad 3 • graf • místo vrcholů a vazeb použijeme: • pole souřadnic • pole silových vektorů • pole sousedů • … • redukce na maticovou dekompozici
Seskupení úloh • úlohy se stejnými omezeními lze seskupit • výpočet prvku matice • výpočet polohy buňky • výpočet sil působících na buňku • … • pracujeme jen s omezeným počtem úloh • zjednodušení
Seřazení skupin úloh • časová následnost • A musí počkat na data z B • A musí počkat alespoň na nějaká data z B • časová souběžnost • A musí počkat na data ze svého okolí • okolí se musíprovádět souběžně • nezávislost – stojí za zaznamenání • seřazení úloh musí být úplné • abychom se vyhnuli race-condition • seřazení úloh nesmí být nadbytečné
Sdílení dat • způsob sdílení • data lokální pro úlohu • data globální – sdílená • data lokálně sdílená • řešení • data lokální • data pouze pro čtení • data pro čtení a zápis • akumulace, lineární kombinace, asociativní • písař a čtenáři
Ověření návrhu • máme cílovou architekturu? • „běžný“ procesor × distribuovaná architektura • kolik můžeme teoreticky vyrobit výpočetních jednotek? • příklad matice • kolik můžeme vyrobit datových segmentů? • je možné zátěž rozložit? • jaké jsou limitní případy? • KISS
Návrh algoritmu • paralelizace je orientovaná na úlohy • nezávislé (lineární) – Paralelizace úloh • závislé (rekurzivní) – Rozděl a panuj • paralelizace orientovaná na data • nezávislé segmenty – Geometrická dekompozice • závislé segmenty – Rekurzivní data • paralelizace orientovaná na tok dat • řízené statickým tokem dat – Pipeline • dynamický tok dat – Událostmi řízené
Paralelizace úloh • úlohy jsou maximálně nezávislé a obyčejně statické • úlohy se mohou provádět souběžně • úloh by mělo být více než výpočetních jednotekale měly by být dost velké
Paralelizace úloh • závislosti • žádné • pouze mezi skupinami – nezajímavé • odstranitelné závislosti – falešné globální proměnné, DB • separovatelné závislosti – cykly s asociativními binárními operacemi lze redukovat • plánování • statické (známé dopředu, přeplněné) × dynamické (work queue, work stealing)
Paralelizace úloh • paralelní v cyklu • direktiva kompilátoru • složitější kód • master/worker (dynamický plánovač) • single program, multiple data (SPMD)