Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz. Paralelní programování



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

Paralelní programování

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

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

Řada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce.

Procesy a vlákna - synchronizace

Paralelní programování

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

4. Úvod do paralelismu, metody paralelizace

Paralelní programování

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

Paralelní programování

Paralelní algoritmy --- Parallel Algorithms

Paralelní programování

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

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

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

Principy počítačů a operačních systémů

Operační systémy Tomáš Hudec. 6 Komunikace procesů (IPC) Obsah: 6.1 Klasické problémy souběhu Obědvající filosofové

ZOS 9. cvičení, ukázky kódu. Pavel Bžoch

Programování založené na posílání zpráv

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

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

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

Paralelní programování

Semafory Zobecněním operací WAKEUP a SLEEP přidáním celočíselného čítače vzniknou semafory a jejich atomické operace DOWN a UP.

Paralelní programování

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

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

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

Procesy a vlákna IPC Komunikace mezi procesy (IPC = Inter-Process Communication)

Synchronizace Mgr. Josef Horálek

Přidělování zdrojů (prostředků)

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

Paralelní programování

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

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

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

PROGRAMOVÁNÍ ŘÍDÍCÍCH SYSTÉMŮ

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

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

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

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

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

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

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

2010/2011 ZS. Operační systém. procesy a vlákna. interakce a synchronizace

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

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

Vzájemné vyloučení procesů

Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2)

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

PRINCIPY OPERAČNÍCH SYSTÉMŮ

Pohled do nitra mikroprocesoru Josef Horálek

Úvod do MPI. Úvod do MPI Operace send a recieve Blokující a neblokující posílání zpráv Blokující posílání zpráv Neblokující posílání zpráv

Pokročilé architektury počítačů

Pavel Procházka. 3. prosince 2014

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy)

Management procesu II Mgr. Josef Horálek

04. Mutexy, monitory. ZOS 2006, L. Pešička

Procesy a vlákna (Processes and Threads)

Architektury paralelních počítačů II.

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

Možnosti programování se sdílenými proměnnými. Týden 6 Programování se sdílenými proměnnými (Shared Variables, SV) Procesy a vlákna.

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

Grafické znázornění vláken a klasické problémy synchronizace

Vícevláknové aplikace

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

Management procesu I Mgr. Josef Horálek

Téma 36. Petr Husa

Přerušovací systém s prioritním řetězem

Jazykové konstrukce pro paralelní výpočty

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

Paralelní programování

Distribuované algoritmy - přehled. Přednášky z Distribuovaných systémů Ing. Jiří Ledvina, CSc.

Profilová část maturitní zkoušky 2017/2018

Procesor. Procesor FPU ALU. Řadič mikrokód

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

Synchronizace paralelních procesů

Architektury paralelních počítačů I.

Profilová část maturitní zkoušky 2013/2014

Základní komunikační operace

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Charakteristika dalších verzí procesorů v PC

Západočeská univerzita FAKULTA APLIKOVANÝCH VĚD

Profilová část maturitní zkoušky 2014/2015

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)

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

03. Synchronizace procesů. ZOS 2006, L. Pešička

Pokročilé architektury počítačů

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Disková pole (RAID) 1

Konzistentnost. Přednášky z distribuovaných systémů

Princip funkce počítače

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

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

Profilová část maturitní zkoušky 2015/2016

Operační systémy 2: Zápočtové úkoly

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

Kapitola 13: Transakce. Koncept transakce. ACID vlastnosti

Transkript:

Tomáš Foltýnek foltynek@pef.mendelu.cz Paralelní programování

strana 2 Opakování Co je to síť? Co je to tok? Co je to velikost toku? Co je to řez? Co je to velikost řezu? Jaký je vztah mezi velikostí toku a velikostí řezu? Jak hledat maximální tok? Co je to párování v grafu? Jak hledat největší párování v grafu?

strana 3 Motivace Moorův zákon: Počet tranzistorů, které lze umístit do integrovaného obvodu při zachování ceny, se zdvojnásobuje přibližně každé dva roky 1965 Gordon Moore, zakladatel Intelu I při neustálém zvyšování výkonu se vždy najdou aplikace, pro které není výkon dostatečný Fyzikální limity miniaturizace Řešení: paralelizace

strana 4 Literatura Herlihy, M; Shavit, N.: The Art of Multiprocessor Programming Grama, A.; Gupta, A.; Kumar, V.: Introduction to Parallel Computing Foster, I.: Designing and Building Parallel Programs Downey, A.B.: The Little Book of Semaphores. http://greenteapress.com/semaphores/ downey08semaphores.pdf http://en.wikipedia.org/wiki/ Category:Concurrency

strana 5 Nejrychlejší počítač světa www.top500.org Cray XT5-HE Opteron Six Core 2.6 GHz National Center for Computational Sciences, Oak Ridge, Tennessee, USA 224162 procesorových jader 1759000 GFLOPS

strana 6 Základní myšlenka paralelismu Sdružíme několik počítačů (procesorů, jader) a rozdělíme výpočetní zátěž mezi ně Paralelní program je charakterizován dvěma a více souběžně prováděnými a kooperujícími výpočetními aktivitami proces (task), vlákno (thread) Kooperace je založena na komunikaci předávání zpráv sdílené proměnné Komunikace: nutné zlo zdržující výpočet efektivní řešení komunikace je klíčem k úspěchu

strana 7 Příklad: skalární součin Paralelizace výpočtu skalárního součinu n-rozměrných vektorů na p procesorech Řídicí proces rozdělí vektory na p bloků každý s přibližně n/p prvky Na každém z p procesorů proběhne dílčí výpočet skalárního součinu Řídicí proces všechny dílčí výsledky sečte

strana 8 Flynnova klasifikace paralelismu Single/Multiple instruction Single/Multiple data MIMD = Multiple Instruction Multiple Data nejobecnější architektura více instrukčních proudů každý pracuje nad jinými daty SIMD = Single Instruction Multiple Data tatáž instrukční sada je provedena na rozdělených datech viz příklad výpočtu skalárního součinu SISD = Single Instruction Single Data sekvenční zpracování = bez paralelismu MISD = Multiple Instruction Single Data prakticky nepoužitelné

strana 9 Uspořádání paralelních systémů Uspořádání paměti Sdílená paměť všechny procesy přistupují ke stejnému paměťovému prostoru Distribuovaná paměť každý proces má svoji paměť, pro ostatní nedostupnou Komunikační topologie Klika úplný graf Sběrnice sdílené médium Kruh Strom Hvězdice hvězdice hvězdic Hyperkrychle

strana 10 Metodika tvorby paralelních aplikací Dekompozice rozdělení úlohy na podúlohy datová dekompozice (SIMD) funkční dekompozice (MIMD) Komunikace analýza komunikace mezi podúlohami komunikační schéma (orientovaný acyklický graf/síť) Aglomerace slučování úloh do větších celků granularita (zrnitost) = míra jemnosti podúloh stupeň souběžnosti = maximální počet paralelně běžících úloh Mapování přidělování úloh procesorům algoritmy vyvažování zátěže

strana 11 Varianty přístupu k paměti Souběžné čtení dva nebo více procesů čte z jednoho místa paměti Výlučné čtení více procesů čte zároveň z více míst paměti, z každého místa čte jen jeden proces Souběžný (soupeřící) zápis dva nebo více procesů zapisuje do stejného paměťového místa Výlučný zápis více procesů zapisuje zároveň do více paměťových míst, do každého místa zapisuje jen jeden proces

strana 12 Problém vzájemného vyloučení Proces manipuluje se sdílenými daty Nachází se vůči těmto datům v kritické sekci Provádění kritických sekcí musí být vzájemně výlučné Synchronizační primitiva Bariéra Semafor Monitor Viz znalosti z předmětu Operační systémy

strana 13 Požadavky na řešení kritické sekce Bezpečnost vzájemné vyloučení v kritické sekci sdružené s daným prostředkem se smí v 1 okamžiku nacházet nejvýše 1 proces Živost trvalost postupu vybrat procesu na vstup do KS v konečném čase požadavky každého procesu uspokojit v konečném čase nesmí dojít k uváznutí a ke stárnutí Předpoklady o vzájemné rychlosti procesů nic nevíme o počtu procesů nic nevíme proces bude v KS jen konečnou dobu procesy lze přerušit kdykoliv mimo atomické instrukce

strana 14 Bariéra Všechny procesy jsou zablokovány do chvíle, než dosáhne bariéry poslední Sraz na určitém místě Paměťová bariéra instrukce mfence efekt instrukcí provedených před bariérou bude globálně viditelný pro všechny instrukce za bariérou

strana 15 Instrukce TEST-AND-SET Algoritmus bool testset(int& i){ if (i==0) { i=1; return true } else { return false } } Použití while(!testset(b)); CRITICAL_SECTION; b=0; Je-li instrukce testset atomická, může být v KS jen jeden proces bezpečné Jestliže proces vystoupí z KS, volba dalšího procesu je náhodná procesy mohou stárnout Jiná varianta implementace bool TestAndSet(bool lock) { bool initial = lock; lock = 1; return initial; }

strana 16 Instrukce COMPARE-AND-SWAP Algoritmus bool CAS(int* addr, int exp, int val) { if(*addr == exp) { *addr = val; return true; } return false; } Pou ití do { oldval = shared_var; newval = NĚCO; while (CAS(shared_var, oldval, newval)); Použití pro změnu hodnoty sdílených dat přečtu stávající hodnotu připravím novou hodnotu aplikuji funkci CAS Návratová hodnota TRUE = objekt nebyl v mezičase změněn, nová hodnota je platná a je uložená FALSE = objekt byl v mezičase modifikován, nová hodnota je neplatná, postup je třeba opakovat

strana 17 Nevýhoda CAS: ABA problém Proces A načte hodnotu x Proces B hodnotu změní Proces C hodnotu změní opět na x Proces A aplikuje CAS ta uspěje, proces nepoznal, že se hodnota měnila Nebezpečí vzniku nekonzistentních dat

strana 18 Semafor I. Synchronizační prostředek poskytovaný OS Pasivní čekání Semafor je objekt celočíselná proměnná fronta čekajících procesů operace inicializace 2 atomické a vzájemně výlučné operace wait signal

strana 19 Semafor II. S.init S.count=1 //nezáporná hodnota S.wait S.count--; if (S.count<0) zablokuj proces vlož jej do fronty čekajících procesů S.signal S.count++; if(s.count<=0) vyjmi proces z fronty čekajících procesů odblokuj jej Použití semaforu pro vzájemné vyloučení wait(s); CRITICAL_SECTION; signal(s); Inicializační hodnota count určuje počet proecsů, které mohou být v kritické sekci Atomicita a vzájemná výlučnost wait a signal je zodpovědnost OS Použití pro synchronizaci P0::= signal(s); P1::= wait(s);

strana 20 Problém večeřících filozofů Klasický synchronizační problém Přidělování prostředků bez uváznutí a stárnutí Máme 5 filozofů, kteří pouze jí a myslí Každý filozof umí jíst jen 2 vidličkami Máme k dispozici 5 vidliček Jak řešit problém? Zobecnění pro n filozofů, m vidliček a k-ruké filozofy

strana 21 Úloha producent / konzument Producent produkuje informaci, konzument informaci zpracovává překladač generující moduly zpracovávané sestavovacím programem Buffer pro ukládání vyprodukovaných nezpracovaných hodnot neomezené kapacity délky k Podmínky k bufferu smí přistupovat jen jediný proces nelze konzumovat, je-li buffer prázdný nelze produkovat, je-li buffer plný

strana 22 Problém tří kuřáků Aby mohla být cigareta vykouřena, vyžaduje tři složky tabák papír zápalky Kolem stolu jsou tři kuřáci každý má neomezené zásoby právě jedné složky Rozhodčí nekuřák nedeterministicky vybere 2 kuřáky, ti položí 1 položku ze svých zásob na stůl upozorní třetího kuřáka; ten odebere věci ze stolu, ubalí cigaretu a bude chvíli kouřit Kuřáci suroviny neshromažďují nejprve dokouřit, teprve potom balit další cigaretu ale během kouření mohou pokládat své věci na stůl

strana 23 Monitor I. Konstrukce na úrovni programovacího jazyka Funkčně ekvivalentní semaforu, implementovatelný semaforem Monitor je objekt data, k nimž řídíme přístup funkce manipulující s těmito daty Podmínky v monitoru se může nacházet jen jeden proces implicitní vstupní semafor data monitoru jsou přístupná jen z jeho funkcí funkce monitoru nepoužívají externí data po skončení funkce jsou data v konzistentním stavu

strana 24 Monitor II. Někdy je třeba čekat na událost způsobenou jiným procesem tj. na hodnotu podmínkové proměnné S každou podmínkovou proměnnou je svázán semafor (a fronta čekajících procesů) wait pouští do monitoru další proces; aktuální proces je odstaven do fronty signal (notify) budí čekající procesy až poté, co proces volající signal opustí monitor

strana 25 Komunikace Dvoustranná komunikace komunikace z bodu do bodu synchronní odesílání ukončeno ve chvíli, kdy příjemce obdrží zprávu odesilatel má jistotu, že příjemce zprávu obdržel asynchronní odesílání ukončeno v okamžiku, kdy je zpráva odeslána odesilatel nemá informaci o doručení zprávy Kolektivní komunikace bariéra synchronizace procesů vysílání (broadcast) 1 odesilatel, 1 zpráva, více příjemců rozdělení (scatter) 1 odesilatel, více zpráv, více příjemců sesbírání (gather) více odesilatelů, více zpráv, 1 příjemce redukce (reduce) sesbírání dat, vytvoření jediné hodnoty a její rozeslání všem

strana 26 Zasílání zpráv MPI = Message Passing Interface Protokol relační vrstvy Množina funkcí poskytovaná v různých jazycích Nejdůležitější funkce MPI_Send, MPI_Recv blokující odeslání a příjem MPI_Isend, MPI_Irecv neblokující odeslání a příjem MPI_Bcast, MPI_Scatter, MPI_Gather, MPI_Reduce MPI_Init, MPI_Finalize, MPI_Comm_size, MPI_Comm_rank MPI_Barrier