paralelní programování

25
Paralelní programování Paralelizace algoritmu

Upload: ferrol

Post on 23-Feb-2016

30 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Paralelní programování

Paralelní programování

Paralelizace algoritmu

Page 2: Paralelní programování

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

Page 3: Paralelní programování

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

Page 4: Paralelní programování

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

Page 5: Paralelní programování

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

Page 6: Paralelní programování

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?

Page 7: Paralelní programování

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

Page 8: Paralelní programování

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

Page 9: Paralelní programování

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í

Page 10: Paralelní programování

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

Page 11: Paralelní programování

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

Page 12: Paralelní programování

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

Page 13: Paralelní programování

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šší

Page 14: Paralelní programování

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

Page 15: Paralelní programování

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

Page 16: Paralelní programování

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

Page 17: Paralelní programování

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í

Page 18: Paralelní programování

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é

Page 19: Paralelní programová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

Page 20: Paralelní programování

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

Page 21: Paralelní programování

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é

Page 22: Paralelní programování

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é

Page 23: Paralelní programování

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)

Page 24: Paralelní programování

Paralelizace úloh

• paralelní v cyklu• direktiva kompilátoru

• složitější kód • master/worker (dynamický plánovač)• single program, multiple data (SPMD)

Page 25: Paralelní programování