Paralelní programování

Post on 23-Feb-2016

28 views 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

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)