1 / 25

Paralelní programování

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)

ferrol
Download Presentation

Paralelní programování

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Paralelní programování Paralelizace algoritmu

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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?

  7. 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

  8. 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

  9. 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í

  10. 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

  11. 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

  12. 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

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

  14. 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

  15. 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

  16. 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

  17. 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í

  18. 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é

  19. 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

  20. 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

  21. 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é

  22. 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 jednotekale měly by být dost velké

  23. 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)

  24. Paralelizace úloh • paralelní v cyklu • direktiva kompilátoru • složitější kód • master/worker (dynamický plánovač) • single program, multiple data (SPMD)

More Related