Alternatívne výpočtové modely IB110 1 / 31 Alternatívne výpočtové modely Motivácia existencia veľkej triedy prakticky neriešiteľných (a/e rozhodnutelných) problémov, ktoré potrebujeme prakticky riešiť! Idea využiť principiálne iné spôsoby počítania • paralelné počítanie • súbežnosť • kvantové počítanie • molekulárne počítanie pomôže to 111 Paralelizmus Princíp paralelizmu Praktický príklad Varianta A veža o základe 1 m x 10 m a výšky 1 m; 1 murár vs 10 murárov Varianta B veža o základe 1 m x ma výšky m; 1 murár vs 10 murárov Jednoduchý program Varianta AX^3; Y <- 4 Varianta BX^3; Y <- X paralelizovatelne problémy vs vnútorne sekvenčné problémy 3/31 Paralelné sčítovanie First step (A/72 processors) Second step (A74 processors) log2 Nth step (1 processor) Paralelné sčitovanie pre sčítanie 1 000 čísel potrebujeme v 1. kroku 500 procesorov v 2. kroku 250 procesorov v 3. kroku 125 procesorov pri vhodne zvolenej dátovej štruktúre a organizácii komunikácie mezdi procesormi stačí na realizáciu celého výpočtu práve 500 procesorov pre sčítanie N čísel potrebujeme N/2 procesorov a počet (paralelných) výpočtových krokov je 0(log N) Paralelizmus - počet procesorov • počet procesorov potrebných k realizácii paralelného výpočtu ako funkcia veľkosti vstupnej inštancie (A//2 pre sčítanie N čísel) • je to realistické? indikátor, aké veľké vstupy môžeme riešiť s počtom procesorov, ktoré máme k dispozícii (viz analógia s časovou a priestorovou zložitostou) ak počet procesorov, ktoré máme k dispozícii, je menší, môžeme kombinovať paralelný a sekvenčný prístup Paralelené triedenie sekvenčné triedenie zoznamu L spájaním (mergesorť) procedúra sort-/. (1) ak L má len 1 prvok, je utriedený (2) inak (2.1) rozdeľ L na dve polovičky L\ a Z. 2 (2.2) sort-Z-i (2.3) sort-/_2 (2.4) spoj dva utriedené zoznamy do jedného utriedeného zoznamu počet vykonaných porovnaní je Ö{N log N) Paralelné triedenie paralelné triedenie zoznamu L spájaním procedúra parallel-sort-/. (1) ak L má len 1 prvok, je utriedený (2) inak (2.1) rozdeľ L na dve polovičky L\ a Z. 2 (2.2) súbežne volaj parallel-sort-Z-i a parallel-sort-Z-2 (2.3) spoj dva utriedené zoznamy do jedného utriedeného zoznamu počet (paralelných) porovnaní je (predpokladáme, že N je mocninou 2) v 1. kroku N postupností dĺžky 1; /V/2 procesorov; spojenie dvoch postupností = 1 porovnanie v 2. kroku /V/2 postupností dĺžky 2; /V/4 procesorov; spojenie dvoch postupností = 3 porovnania v 3. kroku /V/4 postupností dĺžky 4; /V/8 procesorov; spojenie dvoch postupností = 7 porovnaní spolu 1 + 3 + 7 + 15 H---------h (N - 1) < 2N porovnaní Paralelizmus - čas x priestor icia: v kontexte paralelných výpočtov sa pod priestorovou zložitosťou rozumie počet procesorov potrebných k realizácii výpočtu časová a priestorová zložitost paralelných výpočtov sú spolu tesne zviaza iné I zníženie jednej obvykle znamená zvýšenie druhej a naopak Paralelizmus - čas x priestor SEQUENTIAL PARALLEL Name Size (no. of processors) Time (worst case) Product (time x size) Bubblesort 1 0(N2) 0(N2) Mergesort 1 0(Nx\ogN) O(WxlogA0 (optimal) Parallelized mergesort 0(N) O(A0 0(W) Odd-even sorting network 0(Nx(\ogN)2) 0({\ogN)2) 0(Nx(\ogN)4) "Optimal" sorting network 0(N) 0(\ogN) 0(NxlogN) (optimal) Paralelné siete Spôsob komunikácie medzi procesormi zdieľaná pamäť súčasný zápis resp. čítanie z pamäťového miesta 111 v prípade súčasného zápisu nutnosť stratégie riešenia konfliktov sieť s fixovaným prepojením každý procesor je prepojený (môže komunikovať) len s ohraničením počtom susediacich procesorov; často ako špecializovaný hardware Triediaca siet x- y- V7, áÄ ->- menší z A a 7 ->- vetší z A a ľ Môže paralelizmus riešiť neriešiteľné? Fakt Každý paralelný algoritmus sa dá transformovať na sekvenčný algoritmus. (každý paralelný krok nahradíme postupnostou sekvenčných krokov; každý sekvenčný krok vykoná prácu jedného procesoru) Dôsledok Neexistuej paralelný algoritmus pre nerozhodnuteľný problém. (CT hypotéza sa vztahuje aj na paralelné výpočtové modely) Paralelizmus Paralelizmu a prakticky neriešiteľné problémy • existujú problémy, ktoré sú sekvenčne prakticky neriešiteľná a pritom sú prakticky riešiteľné paralelnými algoritmami? • špecifikácia pojmu "efektívneho" paralelného algoritmu ??? 14 / 31 Paralelizmu a prakticky neriešiteľné problémy • existujú problémy, ktoré sú sekvenčne prakticky neriešiteľná a pritom sú prakticky riešiteľné paralelnými algoritmami? • špecifikácia pojmu "efektívneho" paralelného algoritmu ??? • pozorovanie: pre problém z triedy N P máme nedeterministický algoritmus polynomiálnej časovej zložitosti; ak nedeterministický výber nahradíme paralelizmom, tak okamžite dostavama polynomiálně časovo ohraničený paralelný algoritmus pre tento problém • je to prijateľné riešenie? Paralelizmu a prakticky neriešiteľné problémy • existujú problémy, ktoré sú sekvenčne prakticky neriešiteľná a pritom sú prakticky riešiteľné paralelnými algoritmami? • špecifikácia pojmu "efektívneho" paralelného algoritmu ??? • pozorovanie: pre problém z triedy N P máme nedeterministický algoritmus polynomiálnej časovej zložitosti; ak nedeterministický výber nahradíme paralelizmom, tak okamžite dostavama polynomiálně časovo ohraničený paralelný algoritmus pre tento problém • je to prijateľné riešenie? • exponenciálny počet procesorov Paralelizmu a prakticky neriešiteľné problémy • existujú problémy, ktoré sú sekvenčne prakticky neriešiteľná a pritom sú prakticky riešiteľné paralelnými algoritmami? • špecifikácia pojmu "efektívneho" paralelného algoritmu ??? • pozorovanie: pre problém z triedy N P máme nedeterministický algoritmus polynomiálnej časovej zložitosti; ak nedeterministický výber nahradíme paralelizmom, tak okamžite dostavama polynomiálně časovo ohraničený paralelný algoritmus pre tento problém • je to prijateľné riešenie? • exponenciálny počet procesorov • čo ak prakticky neriešiteľný problém nepatrí do N P? Paralelizmu a prakticky neriešiteľné problémy • existujú problémy, ktoré sú sekvenčne prakticky neriešiteľná a pritom sú prakticky riešiteľné paralelnými algoritmami? • špecifikácia pojmu "efektívneho" paralelného algoritmu ??? • pozorovanie: pre problém z triedy N P máme nedeterministický algoritmus polynomiálnej časovej zložitosti; ak nedeterministický výber nahradíme paralelizmom, tak okamžite dostavama polynomiálně časovo ohraničený paralelný algoritmus pre tento problém • je to prijateľné riešenie? • exponenciálny počet procesorov • čo ak prakticky neriešiteľný problém nepatrí do N P? • otázka praktickej implementácie paralelného algoritmu, ktorý má síce polynomiálnu zložitosť, ale potrebuje exponenciálny počet procesorov (napr. otázka komunikácie) Paralelizmus Paralelná výpočtová téza Časť A Všetky "rozumné" paralelné výpočtové modely sú polynomiálně ekvivalentné. Časť B Paralelný čas je polynomiálně ekvivalenty sekvenčnému času. Se/o/enčný-PSPACE = Paralelný-PJ\ME 15 / 31 NC - Nickova trieda • polynomiálně časovo ohraničené paralelné algoritmy nemôžeme považovať za prakticky použiteľné • zmyslom zavedenia paralelizmu je výrazne redukovať výpočtový čas sublineárne algoritmy Trieda NC Trieda problémov riešiteľných paralelnými algoritmami s polylogaritmickou časovou zložitosťou a polynomiálnym počtom procesorov. Trieda NC je robustná Vztah sekvenčných a paralelných zložitostných tried NC C P C NP C PSPACE Otvorené problémy: o žiadnej z inklúzií nieje známe, či je ostrá, alebo predstavuje rovnosť Predpoklady O existujú problémy, ktoré sú prakticky (sekvenčne) riešiteľné, ale nie sú riešiteľné veľmi rýchlo paralelne s použitím rozumne veľkého hardwaru Q existujú problémy, ktoré sa dajú riešiť (sekvenčne) v polynomiálnom čase s využitím nedeterminizmu, ale nie bez neho O existujú problémy, ktoré sa dajú riešiť v rozmunom (tj. polynomiálnom) sekvenčnom priestore (tj. aj v rozumnom paralelnom čase), ale nie sú riešiteľné v rozumnom sekvenčnom čase bez využitia nedeterminizmu. Vztah sekvenčných a paralelných zložitostných tried NC C P C NP C PSPACE Príklady problémov NC sčítať N čísel rozhodnúť, či v grafe existuje cesta z vrcholu s do vrcholu P \ NC rozhodnúť, či c je najväčším spoločným deliteľom čísel a, i NP \ P problém Hamiltonovského cyklu; splniteľnosť logickej formi PSPACE \ PN slovný futbal Súbežnost situácie, keď paralelizmus nevyužívame k tomu, aby sme zefektívnili výpočty, ale keď paralelizmus vzniká v reálnych aplikáciách reaktívne a zapuzdrené systémy Úloha navrhnúť komunikačné protokoly pre komunikujúce objekty tak, aby spĺňali požadované vlastnosti Špecifikum úlohou systémov nieje nájsť konkrétne riešenie, ale počítať (byť funkčný) "donekonečna" Problém hotelovej sprchy • na poschodí je len jedna sprcha, na veľmi studenej chodbe • každý hosť sa chce osprchovať, ale nemôže čakať na voľnú sprchu na chodbe • ak by z času na čas kontroloval, či je sprcha voľná, môže nastať situácia, že sa nikdy neosprchuje možné riešenie • tabuľa pri vstupe do sprchy • hosť pri odchode zo sprchy zmaže z tabule číslo svojej izby a napíše na ňu číslo nasledujúcej izby (v nejakom fixovanom poradí) • každý hosť z času na čas kontroluje, či je na tabuli napísané číslo jeho izby a ak áno, osprchuje sa je to dobré riešenie? (prázdna izba, práve jedno sprchovanie v cykle, ...) Distribuované súbežné systémy • (súbežné) komponenty systému sú fyzicky oddelené • komponenty vzájomne komunikujú • typicky od systémov nepožadujeme vstupno - výstupné chovanie, ale kontinuálnu (neprerušenú, neukončenú) funkcionalitu • dôležité je chovanie systému v čase • okrem požiadavkov na jednotlivé komponenty, kladieme na systém globálne obmedzujúce podmienky • zdieľanie spločných zdrojov • prevencia uviaznutia (vzájomné čakanie, deadlock) » prevencia starnutia procesov (starvation) (algoritmické) protokoly Problém vzájomného vylúčenia zobecnenie problému hotelovej sprchy Problém vzájomného vylúčenia: je daných N procesov, každý proces opakovane (v nekonečnom cykle) vykonáva • súkromné aktivity (proces ich môže vykonávať nezávislé na ostatných procesoch) a • kritické aktivity (žiadne dva procesy nemôžu súčasne vykonávať svoje kritické aktivity) Protokol pre problém vzájomného vylúčenia pre dva procesy P\ a Pi protokol využíva 3 premenné Z globálna premenná (všetky procesy môžu menit jej hodnotu); nadobúda hodnoty 1 a 2 Xi lokálna premenná procesu P\, nadobúda hodnoty yes a no Xi lokálna premenná procesu P-i, nadobúda hodnoty yes a no počiatočná hodnota premenných X\ a Xi je no, počiatočná hodnota Zje buď 1 alebo 2 Protokol pre problém vzájomného vylúčenia (pre dva procesy) protokol pre proces Pi protokol pre proces P2 (1) opakuj v nekonečnom cykle (1) opakuj v nekonečnom cykle (1.1) vykonaj súkromné aktivity (11) vykonaj súkromné aktivity (1.2) Xi <- yes (1.2) X2 <- yes (1.3) Z<-1 (1.3) Z <- 2 (1.4) čakaj kým buď (1-4) čakaj kým buď X? nenadobudne hodnotu no alebo Xl nenadobudne hodnotu no alebo Z nenadobudne hodnotu 2 Z nenadobudne hodnotu 1 (1.5) vykonaj kritické aktivity (1-5) vykonaj kritické aktivity (1.6) Xi <- no (1.6) X2 <- no korektnosť protokolu vzájomné vylúčenie OK starnutie procesu OK uviaznutie OK Protokol pre problém vzájomného vylúčenia (pre N procesov) protokol pre /-ty proces P; (1) opakuj v nekonečnom cykle (1.1) vykonaj súkromné aktivity (1.2) pre každé J od 1 do N - 1 urob (1.2.1) X[l}^- J (1.2.2) Z[l] +- I (1.2.3) čakaj kým buď X[K] < J pre nejaké K ^ I alebo Z[J] + I (1.5) vykonaj kritické aktivity (1.6) X[l] +- 0 Vlastnosti distribuovaných súbežných systémov distribuované súbežné systémy sa odlišujú od sekvenčných systémov špecifikácia problému nemôžeme použiť špecifikáciu problému prostredníctvom množiny vstupných inštancií a fuknčnej závislosti medzi vstupom a požadovaným výstupom korektnosť nepostačuje dôkaz konečnosti výpočtu a správnosti vstupno-výstupného vzťahu efektívnosť nepostačuje vyjadrenie efektivity cez časovú (počet krokov od začiatku do ukončenia) a priestorovú zložitosť aké vlastnosti požadujeme od súbežných procesov? Vlastnosti živosti a bezpečnosti Vlastnosti, ktoré požadujeme od protokolov pre súbežné procesy (najčastejšie) spadajú do dvoch kategórií: bezpečnosť a živosť. bezpečnosť nikdy nenastanú "špatné" udalosti resp. vždy sa stávajú len "dobré" udalosti živosť určité "dobré" udalosti sa nakoniec stanú aby sme ukázali, že protokol porušuje vlastnosť bezpečnosti, stačí ukázať konkrétnu postupnosť akcií, ktoré vedú k zakázanej udalosti aby sme ukázali, že protokol porušuje vlastnosť živosti, musíme ukázať existenciu nekonečnej postupnosti akcií, ktoré nevedú k požadovanej dobrej udalosti Overovanie vlastností živosti a bezpečnosti testovanie a simulácia môžu odhaliť chybu, ale nemôžu dokázať platnosť požadovanej vlastnosti; techniky sú jednoduché formálna verifikácia matematická metóda, ktorá dokáže platnosť požadovanej vlastnosti; metóda overovania modelov (model checking) náročné na implementáciu a samotné overenie vlastnosti; pre niektoré systémy je problém nerozhodnuteľný Temporálna logika - jazyk pre popis vlastností súbežných systémov formule logiky sa vyjadrujú o pravdivosti základných tvrdení v čase (v priebehu výpočtu) základné konštrukcie: globálna platnosť (globally, G) a platnosť v budúcnosti (future, F) príklady - protokol vzájomného vylúčenia pre dva procesy P!-je-v-(1.4) => F (Pi-je-v-Cl.5)) G HPi-je-v-(1.5) A P2-je-v-(1.5) ]) Kvantové počítanie Kvantové počítanie • založené na princípoch kvantovej mechaniky • teoretický model: základnou jednotkou reprezentácie informácie je qubit, ktorý (zjednodušene) môže nadobúdať ľuboboľnú hodnotu z intervalu [0,1] • kvantové algoritmy • otázka konštrukcie kvantového počítača 30 / 31 Molekulárne počítanie Molekulárne (DNA) počítanie • DNA == reťazce nad abededou A, C, T, G • vývoj organizmu == manipulácia s reťazcacmi: kopírovanie, rozdeľovanie, spájanie • 1994: experiment, v ktorom pomocou manipulácie s molekulami bola vyriešená inštancia problému Hamiltonovskeho cyklu veľkosti 7; experiment predstavoval niekoľko dní laboratórnej práce • pozitívum: veľká miera paralelizmu • negatívum: veľký objem biologického materiálu potrebného k riešeniu rozsiahlejších inštancií • budúcnosť: 111 31 / 31