Paralelní programování

Podobné dokumenty
Paralelní programování

OPS Paralelní systémy, seznam pojmů, klasifikace

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

Paralelní a distribuované výpočty (B4B36PDV)

Paralelní systémy. SIMD jeden tok instrukcí + více toků dat jedním programem je zpracováváno více různých souborů dat

Paralelní programování

Pro úlohy digitálního zpracování obrazu je příznačný velký objem dat. Doposud ani rychlé počítače s konvenční sériovou architekturou nejsou schopny

Paralelní programování

Operační systémy. Přednáška 1: Úvod

Paralelní programování

Charakteristika dalších verzí procesorů v PC

Procesy a vlákna - synchronizace

Paralelní programování

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Paralelní programování

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. Jiří Barnat

REALIZACE SUPERPOČÍTAČE POMOCÍ GRAFICKÉ KARTY

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Představení a vývoj architektur vektorových procesorů

Pavel Procházka. 3. prosince 2014

Úvod do GPGPU J. Sloup, I. Šimeček

Paralelní a distribuované výpočty (B4B36PDV)

CHARAKTERISTIKA MODERNÍCH PENTIÍ. Flynnova klasifikace paralelních systémů

Základní úrovně: Moorův zákon: multi-core mikroprocesory (CPU) hypertherading pipeline many-core Paralelní systém Instrukce iterace procedura Proces

Hlavní využití počítačů

Paralelní programování

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 TECHNICKÉ VYBAVENÍ POČÍTAČŮ

Úvod SISD. Sekvenční výpočty SIMD MIMD

Vzájemné vyloučení procesů

Osnova. Základy informatiky. 1. Přednáška Historie. Úvod. Kategorie počítačů z pohledu hardware

Procesy a vlákna (Processes and Threads)

Úvod do problematiky návrhu počítačových systémů. INP 2008 FIT VUT v Brně

Teoretická informatika Tomáš Foltýnek Paralelní programování

Struktura počítačů z{kladní pojmy

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Paralelní architektury - úvod

Využití paralelních výpočtů v geodézii

Základy algoritmizace, Turingův stroj

13. Paralelní architektury SISD, SIMD, MISD, MIMD.

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Základní komunikační operace

Paralelní architektury - úvod

ZČU/FAV/KIV/PPR 1 Architektury paralelních počítačů, modely dekompozice výpočtu, interakce a výkonnost

Cvičení MI-PRC I. Šimeček

Ústav technické matematiky FS ( Ústav technické matematiky FS ) / 35

Hardware - komponenty počítačů Von Neumannova koncepce počítače. Von Neumannova koncepce počítače

Přednáška 3. Rekurze 1

OPTIMÁLNÍ SEGMENTACE DAT

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

vlastnosti, praktické zkušenosti

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

Pokročilé architektury počítačů

Programování v C++, 2. cvičení

Služba ve Windows. Služba (service) je program

Paralelní programování

INDIVIDUÁLNÍ PROJEKT 1 - ZPRACOVÁNÍ GNSS SIGNÁLU V GPU

Paralelizace výpočtů v systému Mathematica

Architektury počítačů

Spuštění instalace. nastavení boot z cd v BIOSu vložení CD s instal. médiem spuštění PC. nastavení parametrů instalace (F2 čěština)

Operační systémy. Přednáška 4: Komunikace mezi procesy

Pohled do nitra mikroprocesoru Josef Horálek

Přidělování paměti II Mgr. Josef Horálek

PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200

Principy operačních systémů. Lekce 6: Synchronizace procesů

setup() { I = 0; } loop() { I = I + 1; }

Architektura počítačů Paralelní zpracování

4. Úvod do paralelismu, metody paralelizace

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Algoritmizace- úvod. Ing. Tomáš Otáhal

Práce v textovém editoru

1 0 0 u 22 u 23 l 31. l u11

VÝVOJ ŘÍDICÍCH ALGORITMŮ HYDRAULICKÝCH POHONŮ S VYUŽITÍM SIGNÁLOVÉHO PROCESORU DSPACE

Matematika v programovacích

Martin Hejtmánek hejtmmar

1. Zpracování událostí na pozadí aplikace

Charakteristika dalších verzí procesorů Pentium

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

Integrovaná střední škola, Sokolnice 496

C2115 Praktický úvod do superpočítání

MetaCentrum. Martin Kuba CESNET

Čas a kauzalita v DS

Datová věda (Data Science) akademický navazující magisterský program

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ DOKTORSKÁ DISERTAČNÍ PRÁCE

Kombinatorika, výpočty

Historie výpočetní techniky. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1121_Histrorie výpočetní techniky_pwp

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Pokročilé architektury počítačů

Třída PTIME a třída NPTIME. NP-úplnost.

Transformace digitalizovaného obrazu

Management procesu I Mgr. Josef Horálek

Jan Nekvapil ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

PRINCIPY POČÍTAČŮ Metodický list číslo 1

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Transkript:

Paralelní programování přednáška 5 Michal Krupka 15. března 2011 Michal Krupka (KI UP) Paralelní programování 15. března 2011 1 / 13

Ještě ke kritickým sekcím Použití v praxi obvykle pomocí zámků (locks) klasické objekty (někdy libovolné, někdy speciální třídy) mají metody na vstupní a výstupní protokol (enter, exit) kritická sekce se označí pomocí klíčového slova Příklad v C# Object thislock = new Object(); lock (thislock) { // Kritická sekce } Cvičení 1. V globálním poli accounts jsou uloženy zůstatky bankovních účtů. Napište funkci transfer, která převede zadanou částku mezi účty: (transfer a1 a2 amount). Můžete použít pomocná globální data. Michal Krupka (KI UP) Paralelní programování 15. března 2011 2 / 13

Ještě ke kritickým sekcím Cvičení 2. Vylepšete funkci transfer tak, aby šlo současně (bez čekání) převádět částku mezi různými dvojicemi účtů. 3. Vylepšete funkci transfer tak, aby kromě požadavků z předchozího příkladu umožňovala provádět účetní uzávěrku, tj. test, zda součet zůstatků na všech účtech odpovídá očekávané hodnotě (jelikož provádíme pouze přesuny mezi našimi účty, musí být tento součet konstantní). Udělejte to tak, že napíšete funkci balance, která vrátí součet zůstatků na všech účtech. Tato funkce musí za všech okolností vracet stejnou hodnotu. Může dočasně zablokovat převody mezi účty (tj. způsobit čekání ve funkci transfer). Pozor na uváznutí! Michal Krupka (KI UP) Paralelní programování 15. března 2011 3 / 13

Flynnova taxonomie klasifikace architektur počítačů podle možnosti - paralelního vykonávání instrukcí - paralelního zpracování dat Michael J. Flynn, 1966 Single Instruction Multiple Instruction Single Data SISD MISD Multiple Data SIMD MIMD SISD Klasická von Neumannova architektura (PC s jedním procesorem) MISD Neobvyklé, např. kvůli zabránění chybám (raketoplán) SIMD Paralelní zpracování dat stejným algoritmem (některé superpočítače, vektorové procesory, GPU) MIMD Více procesů zpracovává různá data (moderní PC, distribuované systémy) Michal Krupka (KI UP) Paralelní programování 15. března 2011 4 / 13

Flynnova taxonomie SISD jeden procesor provádí jeden proud instrukcí, pracuje s daty uloženými v jedné paměti Příklad: klasická von Neumannova architektura MISD více procesorů provádí současně více programů s týmiž daty Příklady: nepříliš obvyklé, používá se kvůli předcházení chybám. Např. raketoplán (pět počítačů zpracovává stejná data). Michal Krupka (KI UP) Paralelní programování 15. března 2011 5 / 13

Flynnova taxonomie SIMD více procesorů provádí současně (ve stejném taktu) jeden proud instrukcí na různých datech mezi procesy není nutná synchronizace masivně paralelní výpočty Příklady: Superpočítače v 70. a 80. letech, např. Cray: Cray-1, 1976 200 000 hradel 1 662 procesorů 113 variant vektorové instrukce pohovka zdarma Michal Krupka (KI UP) Paralelní programování 15. března 2011 6 / 13

Flynnova taxonomie Connection Machine: CM-1, 2, konec 80. let 65 536 jednobitových procesorů, uspořádaných do 12-rozměrné hyperkrychle umělá inteligence Další: vektorové instrukce v procesorech (UltraSPARC I: VIS, x86: MMX, POWER: AltiVec) Michal Krupka (KI UP) Paralelní programování 15. března 2011 7 / 13

Flynnova taxonomie MIMD více procesorů provádí současně více úloh na různých datech mezi procesy je nutná synchronizace Příklad: moderní osobní počítače i superpočítače, distribuované systémy Podskupinou je SPMD: Single Program/Multiple Data jednotlivé procesory vykonávají tentýž program (s různými daty), ale ne nutně ve stejném kroku, je nutná synchronizace pomocí bariér (viz dále) Příklady nejběžnější způsob paralelního programování i na MIMD, moderní GPU: stovky jader, souběžně tisíce procesů - na některé úkoly mnohonásobně rychlejší než CPU - programové modely: CUDA (NVIDIA), OpenCL (Apple, otevřený standard, široce podporovaný) - aplikace: zpracování obrazu, modelování a simulace, výpočetní chemie, biologie, medicína... Michal Krupka (KI UP) Paralelní programování 15. března 2011 8 / 13

Bariéry (Jordan 1978) Synchronizační nástroj, používaný zejména při SPMD programování. Bariéra Místo v programu, na kterém procesy čekají, dokud jej všechny nedosáhnou. Příklad: výpočet n-tého řádku Pascalova trojúhelníku pomocí n procesů. 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 0 1 3 3 1 0 0 0 0 0 0 0 1 4 6 4 1 0 0 0 0 0 0 1 5 10 10 5 1 0 0 0 0 0 1 6 15 20 15 6 1 0 0 0 0 1 7 21 35 35 21 7 1 0 0 0 1 8 28 56 70 56 28 8 1 0 Obrázek: Hodnoty pole A v jednotlivých krocích algoritmu Michal Krupka (KI UP) Paralelní programování 15. března 2011 9 / 13

Bariéry Algoritmus pro výpočet n-tého řádku Pascalova trojúhelníka N-tý řádek Pascalova trojúhelníka integer A[N + 2] 0, A[1] 1 i-tý proces pro i od 1 do N 1 integer sum 1: loop N 1 times 2: sum A[i 1] + A[i] 3: barrier 4: A[i] sum 5: barrier Obrázek: N-tý řádek Pascalova trojúhelníka Michal Krupka (KI UP) Paralelní programování 15. března 2011 10 / 13

Bariéry Implementace Ukážeme jednu možnost implementace bariéry. Nejprve bariéra pro dva procesy, implementovaná symetricky: Bariéra pro dva procesy Boolean arrive[poč. procesů] [false,..., false] Proces i Proces j 1: await not arrive[i] 1: await not arrive[j] 2: arrive[i] = true 2: arrive[j] = true 3: await arrive[j] 3: await arrive[i] 4: arrive[j] = false 4: arrive[i] = false Obrázek: Symetrická bariéra pro dva procesy Cvičení 3. Stanovte podmínky bezpečnosti a živosti pro tento algoritmus a zdůvodněte jejich splnění. 4. Implementujte tento algoritmus. Michal Krupka (KI UP) Paralelní programování 15. března 2011 11 / 13

Bariéry Implementace pro více procesů: Butterfly (motýlkovitá) bariéra pro počet procesů N = 2 X, logaritmická složitost na úrovni s se synchronizují procesy ve vzdálenosti 2 s po projití všech úrovní se proces přímo nebo nepřímo synchronizoval s každým jiným procesem Pracovník 1 2 3 4 5 6 7 8 Úroveň 1 Úroveň 2 Úroveň 3 Cvičení 5. Implementujte motýlkovitou bariéru. Michal Krupka (KI UP) Paralelní programování 15. března 2011 12 / 13

Bariéry Implementace pro více procesů: Diseminační bariéra lepší pro počet procesů N 2 X, logaritmická složitost na úrovni s se proces i synchronizuje s procesem ve vzdálenosti 2 s modulo N: nastaví vlajku procesu (i + 2 s ) mod N čeká na a resetuje vlajku procesu (i 2 s ) mod N Pracovník 1 2 3 4 5 6 Úroveň 1 Úroveň 2 Úroveň 3 Cvičení 6. Implementujte diseminační bariéru. Michal Krupka (KI UP) Paralelní programování 15. března 2011 13 / 13