paralelní programování
DESCRIPTION
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) - PowerPoint PPT PresentationTRANSCRIPT
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 jednotek
ale 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)