PP - Paralelizace algoritm*

Download Report

Transcript PP - Paralelizace algoritm*

Paralelizace algoritmu
•
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
• 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
• 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
• 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
•
•
•
•
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?
• 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
• 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
• ř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í
• 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
• 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
• 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
• 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šší
• 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
• 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
• graf
• místo vrcholů a vazeb použijeme:
•
•
•
•
pole souřadnic
pole silových vektorů
pole sousedů
…
• redukce na maticovou dekompozici
• ú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í
• č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é
• 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
• 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
• 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é
• ú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é
• 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)
• paralelní v cyklu
•
direktiva kompilátoru
• složitější kód
•
•
master/worker (dynamický plánovač)
single program, multiple data (SPMD)