PARALELNÍ PROCESY A PROGRAMOVÁNÍ

Podobné dokumenty
Stromy, haldy, prioritní fronty

PARALELNÍ PROCESY A PROGRAMOVÁNÍ

Princip funkce počítače

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g).

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

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

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

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování.

Základní datové struktury III: Stromy, haldy

Dynamické programování

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

4. Úvod do paralelismu, metody paralelizace

Datové struktury 2: Rozptylovací tabulky

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

Kapitola 13: Transakce. Koncept transakce. ACID vlastnosti

SEKVENČNÍ LOGICKÉ OBVODY

Architektury počítačů a procesorů

Návrh Designu: Radek Mařík

Systém adresace paměti

Složitost Filip Hlásek

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

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

Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

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

Architektura procesorů PC shrnutí pojmů

NUMERICKÝ MODEL NESTACIONÁRNÍHO PŘENOSU TEPLA V PALIVOVÉ TYČI JADERNÉHO REAKTORU VVER 1000 SVOČ FST 2014

Paralelní programování

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

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

Strojový kód. Instrukce počítače

Architektura počítačů

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

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

Architektura Pentia úvod

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Pohled do nitra mikroprocesoru Josef Horálek

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání

Řízení IO přenosů DMA řadičem

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

Pamět ová hierarchie, návrh skryté paměti 2. doc. Ing. Róbert Lórencz, CSc.

Algoritmizace prostorových úloh

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Od Turingových strojů k P=NP

Základy algoritmizace a programování

Algoritmy I, složitost

Struktura a architektura počítačů (BI-SAP) 11

Systémy pro sběr a přenos dat

Adresní mody procesoru

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni

Dijkstrův algoritmus

Algoritmus pro hledání nejkratší cesty orientovaným grafem

ALGORITMY A DATOVÉ STRUKTURY

Paměti a jejich organizace

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

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

TÉMATICKÝ OKRUH TZD, DIS a TIS

Prioritní fronta, halda

Zpráva o průběhu přijímacího řízení na vysokých školách dle Vyhlášky MŠMT č. 343/2002 a její změně 276/2004 Sb.

NPRG030 Programování I, 2018/19 1 / :03:07

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

4. Trojúhelníkový rozklad p. 1/20

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

Systém řízení sběrnice

Michal Krátký. Úvod do programování. Cíl kurzu. Podmínky získání zápočtu III/III

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

(viztakéslidyktétopřednášce...) Poznámka. Neudělali jsme vše tak podrobně, jak je to v zápisu.

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Katedra informatiky a výpočetní techniky. 10. prosince Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc.

Rekurzivní algoritmy

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

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

IB109 Návrh a implementace paralelních systémů. Analytický model paralelních programů. RNDr. Jiří Barnat, Ph.D.

Architektura počítačů Logické obvody

Složitosti základních operací B + stromu

Algoritmizace řazení Bubble Sort

Digitální učební materiál

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

Třídy složitosti P a NP, NP-úplnost

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

1. Databázové systémy (MP leden 2010)

Paměťový podsystém počítače

Prohledávání do šířky = algoritmus vlny

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

Časová a prostorová složitost algoritmů

Teoretická informatika průběh výuky v semestru 1

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

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Programovací jazyk Pascal

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Trénování sítě pomocí učení s učitelem

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

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

3. Vícevrstvé dopředné sítě

přetížení operátorů (o)

Vzdálenost uzlů v neorientovaném grafu

Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010

Základní komunikační operace

Výroková a predikátová logika - III

Transkript:

PARALELNÍ PROCESY A PROGRAMOVÁNÍ 8 Paralelní výpočetní modely Ing. Michal Bližňák, Ph.D. Zlín 2013 Tento studijní materiál vznikl za finanční podpory Evropského sociálního fondu (ESF) a rozpočtu české republiky v rámci řešení projektu: CZ 1.07/2.2.00/15.0463, MOD- ERNIZACE VÝUKOVÝCH MATERIÁLŮ A DIDAKTICKÝCH METOD

OBSAH 1 Obsah 1 Parallel Random Access Machine (PRAM) model 3 1.1 Vlastnosti PRAM modelu................................. 4 1.2 Omezení PRAM modelu.................................. 4 1.2.1 Souběžný přístup do sdílené paměti....................... 4 1.3 Výpočetní síla PRAM podmodelů............................ 5 1.4 Cena, optimalita a efektivnost PRAM algoritmů.................... 6 2 Simulace velkého PRAM na malém PRAM 6 3 Simulace silnějšího PRAM na slabším PRAM 7 4 Asynchronní PRAM (APRAM) model 9 4.1 APRAM výpočet...................................... 9 4.2 Výkonostní parametry modelu APRAM......................... 10 5 Kontrolní otázky 11

OBSAH 2 STRUČNÝ OBSAH PŘEDNÁŠKY Parallel Random Access Machine (PRAM) model Simulace velkého PRAM na malém PRAM Simulace silnějšího PRAM na slabším PRAM Asynchronní PRAM (APRAM) model MOTIVACE Paralelní výpočetní modely slouží jako teoretické rámce stanovující podmínky pro výpočet časové složitosti paralelních algoritmů, kterou kromě počtu procesorů a povahy algoritmu ovlivňuje také použitá pamět ová architektura a způsob přístupu do sdílených pamět ových oblastí. Tato kapitola pojednává o modelu PRAM a jeho vlastnostech a derivátech. CÍL Obeznámit se s výpočetním modelem PRAM a jeho základními vlastnosti. Pochopit, jak jednotlivé podmodely PRAM ovlivňují časovou a prostorovou složitost paralelního algoritmu.

Parallel Random Access Machine (PRAM) model 3 1 Parallel Random Access Machine (PRAM) model PRAM model je jednoduchý model SIMD SMP systému. Vychází z klasického RAM (Random Access Machine) modelu, který je definován těmito vlastnostmi [1]: Základem RAM je výpočetní jednotka s uživatelsky definovaným programem. Pro čtení vstupních dat používá vstupní pásku a pro zápis výstupních dat výstupní pásku. Počet lokálních pamět ových buněk je neomezený. Pamět ové buňky jsou schopny obsahovat čísla neomezené velikosti. Systém podporuje instrukce pro aritmetické, logické a I/O operace a větvení toku programu. Výpočet začne první instrukcí a skončí po provedení instrukce HALT. Všechny instrukce trvají jednotkový čas bez ohledu na délku operandů. Časová složitost je definována jako počet provedených instrukcí. Pamět ová složitost je definována jako počet použitých pamět ových buněk. PRAM model je zobecněním RAM modelu; místo jednoho procesoru bude použito více procesorů připojených ke společné paměti. Tyto procesory budou pracovat synchronně jako u SIMD počítače. Další vlastnosti specifické pro PRAM model jsou: PRAM obsahuje neomezený počet procesorů P 1, P 2,..., P p. Pamět je tvořena neomezeným počtem sdílených pamět ových buněk M[1], M[2],..., M[n]. Každý P i má vlastní neomezenou lokální pamět a zná svůj index i. Každý procesor může přistupovat to kterékoliv sdílené pamět ové buňky v jednotkovém čase. Vstup a výstup PRAM algoritmu se skládá z n/n položek uložených ve sdílené paměti. PRAM instrukce tvoří vždy 3-fázové cykly: 1. Čti data ze sdílené paměti do svého registru 2. Proved lokální výpočet 3. Zapiš data ze svého registru do sdílené paměti Procesory provádějí tyto PRAM instrukce synchronně. Konflikty souběžného čtení či zápisu do sdílené paměti je zapotřebí explicitně ošetřit. Procesory mohou komunikovat pouze čtením/zápisem do sdílené paměti. P 1 má speciální aktivační registr obsahující nejvyšší index aktivního procesoru: 1. Na počátku je aktivní pouze P 1 2. P 1 spočítá počet požadovaných aktivních procesorů a nastaví aktivační registr 3. Poté začnou provádět své programy ostatní aktivní procesory Výpočet běží až do doby, kdy se P 1 zastaví (v té době již budou všechny ostatní procesory neaktivní) Paralelní časová složitost je rovna času výpočtu P 1. Prostorová složitost je rovna počtu použitých pamět ových buněk.

Parallel Random Access Machine (PRAM) model 4 1.1 Vlastnosti PRAM modelu Ačkoliv PRAM model ignoruje určitá omezení a detaily nižších vrstev paralelního systému, je pro tvůrce paralelních algoritmů důležitý, protože: je přirozený, nebot počet operací provedených v jednom cyklu na p procesorech je nejvýše p. je výpočetně silný, nebot jakýkoliv procesor může číst či zapisovat do sdílené pamět ové buňky v jednotkovém čase. je jednoduchý, nebot zanedbává komunikační a synchronizační režie. může sloužit jako zkušební model - neexistuje-li pro daný problém rozumný/efektivní PRAM model, nemá smysl se snažit vymýšlet rozumný/efektivní řešení na reálném paralelním systému. je užitečný, nebot je idealizací existujících paralelních počítačů se sdílenou pamětí (SMP). 1.2 Omezení PRAM modelu Prakticky použitelné PRAM algoritmy musí počítat s omezeními, kterými je nutné korigovat některé velkorysé předpoklady základního PRAM modelu a to zejména: Omezení velikosti slova: velikost slova procesorů nebo pamět ová buňky je omezena. Malé PRAM: počet procesorů je v reálném světe omezen. Pokud je počet procesorů PRAM modelu vyšší, fyzické procesory se musí mezi nimi přepínat v režimu sdílení času. PRAM s malou pamětí: počet buněk sdílené paměti je omezen. Konflikty přístupu do paměti: pro současný přístup z více procesorů do jedné sdílené pamět ové buňky jsou definovány jasné omezující podmínky, kterým se budeme věnovat v následující kapitole. 1.2.1 Souběžný přístup do sdílené paměti Z hlediska nutnosti ošetření souběžného přístupu ke sdíleným pamět ovým buňkám bylo definováno několik podmodelů stanovujících podmínky omezující souběžné přístupy k jedné pamět ové buňce. Jedná se o podmodely Exclusice Read Exclusive Write (EREW) PRAM - Žádným dvěma procesorům není povoleno číst ani zapisovat do téže pamět ové buňky současně. Concurent Read Exclusive Write (CREW) PRAM - Současné čtení téže pamět ové buňky je povole, zapisovat však může v daný okamžik pouze jeden procesor. Exclusive Read Concurent Write (ERCW) PRAM - Číst sdílenou pamět ovou buňku může v daný omakžik pouze jeden procesor, současné zápisy do sdílené paměti je povoleno víc procesorům. Concurent Read Concurent Write (CRCW) PRAM - Jsou povolena jak současná čtení, tak i zápisy do sdílené pamět ová buňky. Je zřejmé že případy souběžného zápisu (Concurent Write) je nutné dále upřesnit pomocí rozšiřujících podmodelů:

Parallel Random Access Machine (PRAM) model 5 Prioritní (Priority) CRCW - Procesorům jsou přiděleny pevné priority a fyzický zápis je povolen pouze procesoru s nejvyšší prioritou ve skupině žadatelů. Náhodný (Arbitrary) CRCW - Ukončit zápis je povoleno náhodně vybranému procesoru. Shodný (Common) CRCW - Existuje-li více žádostí o zápis do dané pamět ové buňky, musí být zapisovaná hodnota ve všech žádostech shodná. Výše uvedené podmodely ovlivňují také celkový paralelní čas algoritmu. Uved me si jednoduchý příklad. Příklad Uvažujme p procesorový PRAM kde p < n a pole n nesetříděných hodnot uložených ve sdílené paměti obsahující n různých položek. Procesor P 1 vlastní hodnotu x. Úkolem je oznámit procesoru P 1, zda se hodnota x nalézá ve vstupním poli. 1. EREW PRAM algoritmus: (a) Procesor P 1 rozešle procesorům P 2,..., P p hodnotu x v log p krocích pomocí binární distribuce kopií. (b) Každý procesor provede lokální hledání v n/p položkách v n/p krocích. (c) Každý procesor nastaví příznak Nalezeno a všechny procesory povedou paralelní redukci hodnot těchto příznaků pomocí binárního redukčního stromu v čase O(log p). Celkový paralelní čas je tedy T (n, p) = O(log p + n/p). 2. CREW PRAM algoritmus: Řešení je podobné jako u EREW podmodelu pouze s tím rozdílem, že procesory P 2,..., P n si mohou načíst hledanou hodnotu souběžně ze sdílené pamět ové buňky v čase O(1). Paralelní čás závěrečné redukce však zůstává stejný a pro se nemění ani asymptotické vyjádření celkového paralelního času, které je tedy stejně jako minule T (n, p) = O(log p+n/p). 3. Shodný CRCW PRAM algoritmus: V této modifikaci trvá také závěrečný krok algoritmu konstantní čas O(1) nebot ty procesory, které nastavily příznak Nalezeno na hodnotu 1, mohou provést zápis do sdílené výsledkové pamět ové buňky procesoru P 1 současně v jednom kroku. Celkový paralelní čas poté bude T (n, p) = O(n/p), čímž jsme se dostali k optimálnímu řešení. 1.3 Výpočetní síla PRAM podmodelů Jak bylo patrné z příkladu v kapitole 1.2.1, omezení uvalená na jednotlivé podmodely PRAM ovlivňují také časovou složitost algoritmů a proto můžeme hovořit o výpočetní síle jednotlivých PRAM podmodelů. Definice 1 PRAM podmodel A je výpočetně silnější než podmodel B, psáno A B, jestliže jakýkoliv algoritmus napsaný pro PRAM počítač B poběží na stejně velkém PRAM počítači A beze změny a s tímtéž paralelním časem. Lemma 1 Prioritní CRCW Náhodný CRCW Shodný CRCW CREW EREW

Simulace velkého PRAM na malém PRAM 6 1.4 Cena, optimalita a efektivnost PRAM algoritmů Definice 2 Necht K je problém s množinou vstupních dat o velikosti n. Předpokládejme, že K lze řešit na p-procesorovém PRAM počítači algoritmem A v čase T (n, p). Pak řekneme, že 1. A je efektivní, jestliže T (n, p) = O(log O(1) n) a C(n, p) = O(SU(n) log O(1) n) 2. A je cenově optimální, jestliže T (n, p) = O(log O(1) n) a C(n, p) = O(SU(n)) 3. A je plně paralelní, jestliže T (n, p) = O(1) a p = O(SU(n)) Plně paralelní algoritmy jsou tedy cenově optimální. 2 Simulace velkého PRAM na malém PRAM Model PRAM neomezuje návrháře paralelních algoritmů ani z hlediska počtu procesorů ani z hlediska počtu sdílených pamět ových buněk. Situace se však může radikálně změnit při implementaci takového PRAM algoritmu na reálném PRAM počítači (SMP), který nedisponuje potřebným počtem procesorů nebo buněk sdílené paměti. V takovém případě je potřeba přistoupit k simulaci velkého PRAM počítače na malém. Věta 1 Předpokládejme, že p < p. Uvažujme algoritmus A, který běží na p-procesorovém PRAM v t krocích. Pak lze A simulovat na p -procesorovém PRAM v t = O(t p/p ) krocích za předpokladu, že velikost sdílené paměti je stejná. Důkaz. 1. Rozdělme p simulovaných procesorů do p skupin o velikosti p/p. 2. Přiřad me každému z p simulujících procesorů jednu skupinu. 3. Každý simulující procesor simuluje jeden krok své skupiny procesorů: (a) provedením nejdříve všech jejích operací READ a lokálních výpočtů, (b) provedením jejich operací WRITE poté. Důležitým důsledkem je, že Každý PRAM algoritmus s cenou C(n, p) lze provést sekvenčně v čase T (n, 1) = C(n, p). Pokud jsme navrhli PRAM algoritmus s cenou C(n, p) = o(su(n)), pak jsme automaticky navrhli nový nejlepší sekvenční algoritmus. V případě, že omezení reálného PRAM počítače spočívá v nedostatečném velikosti sdílené paměti, je možné chybějící pamět ové buňky simulovat v lokální paměti procesorů. Simulující procesory tak budou simulovat jak procesory původní, tak také chybějící velkou sdílenou pamět pomocí svých malých lokálních pamětí. Věta 2 Předpokládejme, že m < m a uvažujme algoritmus A, který běží na p-procesorovém PRAM s m pamět ovými buňkami v t krocích. Pak lze A simulovat na p = max(p, m )-procesorovém PRAM s m pamět ovými buňkami v t = O(t m/m ) krocích.

Simulace silnějšího PRAM na slabším PRAM 7 Důkaz. Pamět ové buňky simulovaného a simulujícího počítače budeme označovat M[1,..., m] a M [1,..., m ]. 1. Rozdělme m simulovaných sdílených pamět ových buněk do m souvisejících úseků S i o velikosti m/m. 2. Každý simulující procesor P i, 1 i p, bude simulovat P i původního PRAM. 3. Každý simulující procesor P i, 1 i m, uloží počáteční obsah S i do své lokální paměti a bude používat M [i] jako pomocnou pamět ovou buňku pro simulování přístupu k buňkám S i. 4. Simulace jedné původní operace READ: Každý procesor P i, i = 1,..., max(p, m ), opakuje pro k = 1,..., m/m : (a) je-li i 1,..., m, zapiš hodnotu k-té buňky svého úseku S i do M [i]. (b) je-li i 1,..., p a v nějakém M [j] se objevila hodnota, kterou by simulovaný procesor P i četl v tomto simulovaném kroku, přečti ji. 5. Lokální výpočetní krok procesoru P i, i = 1,..., p, je simulován procesorem P i v jednom kroku. 6. Simulace jedné operace WRITE je analogická simulaci operace READ. Časová složitost simulace pak plyne z faktu, že jeden krok původního algoritmu je simulován v t = O(m/m ) + 1 + O(m/m ) = O(m/m ) krocích. 3 Simulace silnějšího PRAM na slabším PRAM Jak již bylo zmíněno v kapitole 1.3, různé podmodely PRAM mají různou výpočetní sílu. Při návrhu paralelního algoritmu se může stát, že výpočetní síla použitého podmodelu je vyšší, než výpočetní síle reálného PRAM počítače, např. pokud HW počítače neumí ošetřit konflikty přístupu do sdílených pamět ových buněk. V takovém případě je nutné přikročit k SW řešení konfliktních situací, tj. k simulaci výpočetně silnější PRAM podmodelu na výpočetně slabším PRAM počítači. Vzhledem k tomu, že možných simulačních kombinací je velké množství, zaměříme se na extrémní případ simulace výpočetně nejsilnějšího prioritního CRCW PRAM na výpočetně nejslabším EREW PRAM. Uved me si dvě možné simulační metody. Věta 3 Uvažujme Prioritní CRCW PRAM s prioritním systémem založeným na indexování procesorů a to takovým, že procesory s nižším indexem mají vyšší prioritu. Jeden krok p-procesorového Prioritního CRCW PRAM s m buňkami sdílené paměti lze simulovat na p-procesorovém EREW PRAM s m p buňkami sdílené paměti v t = O(log p) krocích. Důkaz. 1. Každý procesor P k, k = 1,..., p, v Prioritním CRCW je simulován EREW procesorem P k. 2. Každá buňka sdílené paměti M[i], i = 1,..., m, v Prioritním CRCW je simulována polem p buněk sdílené paměti M [i, k], k = 1,..., p, na EREW. M [i, 1] hraje roli M[i]. M [i, 2],..., M [i, p] jsou pomocné buňky organizované jako vnitřní uzly úplného binárního stromu T i s p listy, i = 1,..., m. Výška stromu T i je log p. 3. Simulace kroku prioritní WRITE. Každý EREW procesor musí zjistit, zda je procesorem s nejmenším indexem v rámci skupiny procesorů, žádajících o zápis do téže buňky. Pokud ano, je vítězem skupiny a může provést zápis. Postup je následující:

Simulace silnějšího PRAM na slabším PRAM 8 (a) Všechny buňky pomocných polí M [i, ] mají nastavený příznak s na prázdný. (b) Pokud chce P k zapisovat do M[i], procesor P [k] se stane aktivním a stane se k-tým listem stromu T i. Ví, zda je pravým či levým listem vzhledem ke svému rodiči, tj. dané buňce pomocného pole M [i, ]. (c) Každý aktivní levý procesor uloží své ID do rodičovské buňky ve svém stromě, nastaví její příznak s na obsazená a zůstane aktivní. (d) Každý aktivní pravý procesor zkontroluje svou rodičovskou buňku. Je-li s = prázdná, uloží do ní své ID, nastaví s na obsazená a zůstane aktivní. V opačném případě se přepne do stavu neaktivní. (e) Toto se opakuje log p-krát na dalších hladinách stromu. (f) Procesor, kterému se podařilo postoupit do kořene T i se stává vítězem, který může zapsat do M [i, 1]. Procesory, které používaly strom T i ho pak musí projít dolů v opačném pořadí a vynulovat příznak s. 4. Simulace kroku Prioritní READ je podobná. (a) Paralelně se provedou stejné průchody stromy T i směrem nahoru, aby se určili vítězové ve skupinách. (b) Vítězové přečtou hodnotu z buněk M [, 1]. (c) Během zpětného průchodu stromy T i směrem dolů si procesory, které prohrály, kromě nastavování příznaku s kopírují načtenou hodnotu. Druhý simulační algoritmus má stejně jako předchozí optimální časovou složitost (i když skrytá konstanta je větší), ale vyžaduje pomocné pole, kde stačí pouze jedna buňka na jeden simulovaný procesor. Věta 4 Uvažujme Prioritní CRCW PRAM, kde procesory s nižším indexem mají vyšší prioritu. Jeden krok Prioritního CRCW PRAM s p procesory a m buňkami sdílené paměti lze simulovat na EREW PRAM s p procesory a m + p buňkami sdílené paměti v t = O(log p) krocích. Důkaz. 1. Každý procesor P k, k = 1,..., p, v Prioritním CRCW je simulován EREW procesorem P k. 2. Každá buňka M[i], i = 1,..., m, v Prioritním CRCW je simulována EREW buňkou M [i]. 3. EREW používá pomocné pole A s p buňkami. 4. Chce-li P k přístup do M[i], procesor P k zapíše do buňky A[k] dvojici (i, k), v opačném případě zapíše dvojici (0, k). 5. Všech p procesorů provede paralelní setřídění pole A podle indexů procesorů lexikograficky vhodným EREW algoritmem s časovou složitostí O(log p)). 6. Každý P k připojí k buňce A[k] příznak s, kde: 0 je-li první položka dvojice A[k] bud rovna 0 nebo je-li shodná s první položkou s = předchozí dvojice A[k-1], 1 jinak. Další kroky se liší podle toho, zde simulujeme WRITE nebo READ.

Asynchronní PRAM (APRAM) model 9 7. Prioritní WRITE: (a) Každý P k přečte trojici (i, j, s) ze své buňky A[k] a zapíše ji do A[j] (tato permutace je bezkonfliktní). V tomto okamžiku má každý procesor P k ve své buňce A[k] zpět svoji trojici (, k, ). (b) Každý P k přečte trojici (i, k, s) ze své buňky A[k]. Je-li s = 1, stal se vítězem a může zapsat do M[i] svoji hodnotu. 8. Prioritní READ: (a) Každý P k přečte trojici (i, j, s) ze své buňky A[k]. (b) Každý P k s s = 1 přečte hodnotu v i z M [i] a uloží ji do trojice (i, j, v i ). Jelikož ale díky předchozímu třídění došlo k permutaci trojic, není prozatím v A[k] jeho vlastní výsledek. (c) Sémantika operace Prioritní READ je taková, že každý, kdo požádal o čtení, by měl obsah požadované buňky dostat. Vzhledem k tomu, že sousední buňky v setříděném poli A obsahují požadavky na stejné pamět ové buňky, provedou všechny procesory pomocí EREW algoritmu binárního zdvojování jednoduše rozkopírování trojice (i,, v i ) do všech (i,, 0) v O(log p) krocích. (d) Každý P k přečte trojici (i, j, v i) ze své buňky A[k] a uloží ji do A[j]. Tím se požadavek dostává do buňky svého původce. (e) Každý P k, který žádal o READ si přečte hodnotu v i z trojice (i, k, v i ) ze své buňky A[k]. 4 Asynchronní PRAM (APRAM) model Reálné paralelní počítače se vetšinou od idealizovaného PRAM modelu liší v několika důležitých skutečnostech: jednak jejich procesory nepracují synchronně a navíc přístup do sdílené paměti je časově náročnější než přístup do lokálních registrů. Z tohoto důvodu je užitečné mít k dispozici model, který bude lépe reflektovat možnosti reálných počítačů. Tím může být například model APRAM (Asynchronous PRAM), který se od klasického PRAM odlišuje těmito vlastnostmi: procesory pracují asynchronně, procesory je potřeba explicitně synchronizovat, a doba přístupu do sdílené paměti není jednotková. 4.1 APRAM výpočet APRAM výpočet může provádět instrukce 4 typů: 1. Globální čtení - přečte obsah sdílené pamět ové buňky do lokální paměti. 2. Lokální výpočet - provede jakoukoliv RAM instrukci s operandy a výsledky uloženými v lokální paměti. 3. Globální zápis - zapíše hodnotu z lokální paměti do sdílené paměti. 4. Bariérová synchronizace - každý proces se v bodě bariéry zastaví až do doby, než k ní dorazí všechny zbývající procesy, pro které byla bariéra definována. Výpočet na APRAM je pak definován jako posloupnost asynchronně prováděných globálních fází oddělených bariérovou synchronizací. V rámci daných globálních fází musí být zápis do sdílených pamět ových buněk exkluzivní.

Asynchronní PRAM (APRAM) model 10 4.2 Výkonostní parametry modelu APRAM Složitost jednotlivých APRAM operací je následující: Složitost lokální operace je 1. Složitost globální operace čtení nebo zápisu je obecně d. Pro jednoduchost předpokládáme, že d 2 je konstanta. Složitost implementace bariéry b(p) je vždy neklesající funkcí p, kde d b(p) p. Typické hodnoty jsou b(p) = Θ(d log p) pro implementaci pomocí binárního redukčního stromu nebo b(p) = Θ(d p) pro implementaci pomocí centrálního čítače [1]. k po sobě jdoucích operací globálního čtení nebo zápisu má složitost d + k 1, ne d k, jak by se dalo předpokládat, což odráží vlastnosti současných sběrnicových systémů [1].

Kontrolní otázky 11 5 Kontrolní otázky Co je to výpočetní model PRAM a k čemu slouží? Jaké rozličujeme výpočetní podmodely PRAM z hlediska řízení souběžného přístupu k pamět ovým buňkám? Jakým způsobem ovlivňuje simulace většího PRAM na menším časovou a pamět ovou složitost algoritmu? Jakým způsobem ovlivňuje simulace silnějšího PRAM na slabším časovou a pamět ovou složitost algoritmu?

REFERENCE 12 Reference [1] Pavel Tvrdík. Paralelní systémy a algoritmy. Vydavatelství ČVUT, Praha, 2005.