Paralelní programování
description
Transcript of Paralelní programování
![Page 1: Paralelní programování](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/1.jpg)
Paralelní programování
Paralelizace algoritmu
![Page 2: Paralelní programování](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/2.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/3.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/4.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/5.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/6.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/7.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/8.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/9.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/10.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/11.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/12.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/13.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/14.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/15.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/16.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/17.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/18.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/19.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/20.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/21.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/22.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/23.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/24.jpg)
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í](https://reader035.fdocuments.us/reader035/viewer/2022062410/56816439550346895dd601d3/html5/thumbnails/25.jpg)