1. okruh Kritéria pro hodnocení složitosti paralelních výpočtů
Transkript
1. okruh Kritéria pro hodnocení složitosti paralelních výpočtů
12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_1 [FIT Wiki, FIT sobě] PAR - MSZZ - 1. okruh Zpracovává Michal Kabelka [mailto:mailto:[email protected]] Poznámka Překlopeno z Exfort wiki Zadání Kritéria pro hodnocení složitosti paralelních výpočtů. Optimalita a škálovatelnost algoritmů (izoefektivní funkce). Základní pojmy Pojem Hlavní část Kritéria pro hodnocení složitosti paralelních výpočtů velikost vstupních dat: počet procesorů: Meze spodní mez: - nejhorší časová složitost nejlepšího sekvenčního možného algoritmu horní mez: - nejhorší časová složitost nejrychlejšího sekvenčního známého algoritmu Čas paralelní čas: - čas, který uplyne od začátku výpočtu až do okamžiku, kdy poslední procesor ukončí výpočet (měří se počtem výpočetních a komunikačních kroků) spodní mez paralelního času: - nejmenší možný čas, za který může p procesorů vyřešit daný problém Optimalita: Kazdy alg dosahujici L(n,p) je optimalni. Cena paralelní cena: Zrychlení paralelní zrychlení: https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_1 1/3 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_1 [FIT Wiki, FIT sobě] Efektivnost paralelní efektivnost: Optimálnost časově optimální algoritmus: cenově optimální algoritmus: cenová optimalita ⇔ časová optimalita ⇔ lineární zrychlení ⇔ konstantní efektivita Optimalita a škálovatelnost algoritmů (izoefektivní funkce) škálovatelnost - schopnost efektivně využít rostoucí počet procesorů isoefektivní funkce - číselně vyjadřují, jak n musí růst s p, aby se efektivnost neměnila (zůstala konstantní) je asymptoticky mininimální funkce taková, že pro každé , kde platí, že je zvolená konstanta mezi 0 a 1 Udává asymptoticky nejmenší instanci problému, která je na daném počtu procesorů řešitelná s konstantní efektivností (Říká, jaké je minimální množství vstupních dat, aby byla při daném počtu procesorů zachována efektivnost). Pomalu rostoucí znamená dobrou škálovatelnost, neboť pro efektivní využití přidaného procesoru stačí rozsah problému zvětšit o málo. je asymptoticky maximální funkce taková, že pro každé , kde platí, že je zvolená konstanta mezi 0 a 1 Udává asymptoticky největší počet procesorů, který poskytuje s konstantní efektivností řešení dané instance problému o velikosti n (Říká, jaké má být maximální množství procesorů, aby byla při dané velikosti vstupních dat zachována efektivnost). funkce je a asymptoticky jsou vzájemně inverzní minimální platí, že funkce taková, že , kde pro každé je nejmenší počet procesorů, pro které udává asymptoticky nejmenší počet procesorů, aby čas byl stejného řádu jako : Brentův simulační princip: pokud je počet procesorů menší než stupeň paralelismu vnitřně obsažený v problému (a předpokládáme-li malou komunikační režii), pak simulace nemůže mít https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_1 2/3 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_1 [FIT Wiki, FIT sobě] řádově horší ani práci ani cenu. T(n,p') = W(n,p)/p' + t; p' < p, t = T(n,p) Amdahlův zákon: každý výpočet se skládá z přirozeně sekvenční části (kterou může provádět pouze jeden procesor) a z přirozeně paralelní části předpokládejme, že čistě sekvenční výpočet trvá normalizovaný čas čas pro paralelní výpočet: paralelní zrychlení: platí: Gustafsonův zákon: * existují paralelní algoritmy, které mají přirozeně sekvenční část konstantní, kděžto přirozeně paralelní část můžeme lineárně škálovat s počtem procesorů * u těchto algoritmů zůstává doba výpočtu paralelní části nezměněná (tedy i celkový paralelní čas) * předpokládejme, že paralelní čas je jednotkový: <math>T(n, p) = f_s + f_p = 1</math> * pokud takový algoritmus provedeme sekvenčně, bude trvat <math>T(n, 1) = f_s + p \cdot f_p</math> (jeden procesor simuluje práci p procesorů) * paralelní zrychlení: <math>S(n, p) = f_s + p \cdot f_p = f_s + p \cdot (1 - f_s) = p \cdot (1 - f_s + \frac{f_s}{p})</math> * platí: <math>\displaystyle\lim_{p \to \infty} S(n, p) = p(1 - f_s)</math> * závěr: masivně paralelní počítače mohou být optimálně využity pro lineárně škálovatelné problémy Zdroje Zdroj Exfort wiki [http://exfort.org/wiki/predmety/mszz/paralelni_algoritmy_x36par] Diskuze Jiří Anděl, 2012/05/25 16:44 Gustafsonův zákon se už pár let zpátky neprobírá. A nebo mi něco hodně uteklo https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_1 … 3/3 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_2 [FIT Wiki, FIT sobě] PAR - MSZZ - 2. okruh Zpracovává Michal Kabelka [mailto:mailto:[email protected]] Poznámka Překlopeno z Exfort wiki Zadání PRAM modely a jejich vzájemné simulace. Základní pojmy Pojem PRAM modely a jejich vzájemné simulace Random Access Machine (RAM) model: výpočetní jednotka, vstupní a výstupní páska, neomezený počet paměťových buněk lokální paměti instrukce pro přesun dat, aritmetické, logické a větvící trvající jednotkový (konstantní) čas časová složitost algoritmu = počet provedených instrukcí prostorová složitost algoritmu = počet použitých paměťových buněk Parallel Random Access Machine (PRAM) neomezený počet procesorů RAM (bez pásek, ale s vlastní lokální pamětí) označených P 1, P2, P3, … neomezený počet sdílených paměťových buněk M[1],M[2],M[3], … přístupných v jednotkovém čase každý Pi má vlastní lokální paměť (registry) a zná svůj index i vstup PRAM algoritmu: n položek v (obvykle prvních) n buňkách sdílené paměti výstup PRAM algoritmu: n' položek v n' buňkách sdílené paměti instrukce pro čtení a zápis z / do sdílené paměti a pro lokální operace (prováděné synchronně): 1. čtení buňky sdílené paměti (READ, krátce R) 2. lokální operace (LOCAL, krátce L) 3. zápis do buňky sdílené paměti (WRITE, krátce W) jediný způsob komunikace procesorů = READ/WRITE buněk sdílené paměti P1 má speciální aktivační registr RA, obsahující bit Active / Idle pro každý Pi výpočet trvá, dokud se P1 nezastaví (což se stane, pokud ostatní Pi skončily) paralelní časová složitost = čas výpočtu na P1 1. jednotkový model: READ, WRITE, LOCAL trvají jednotkový čas 1 https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_2 1/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_2 [FIT Wiki, FIT sobě] 2. globální model: READ, WRITE trvají čas d > 1 a LOCAL trvá jednotkový čas 1 význam PRAM modelu: silná (přístup k jakékoliv buňce sdílené paměti v konstantním čase) jednoduchý a intuitivní (a tedy užitečný) slouží jako zkušební model schema PRAM [http://cs.uef.fi/~penttone/parallel/pram.gif] Ošetření konfliktů při přístupech do sdílené paměti: Exclusive Read Exclusive Write (EREW) PRAM - žádným dvěma procesorům není dovoleno READ nebo WRITE do téže buňky sdílené paměti najednou Concurrent Read Exclusive Write (CREW) PRAM - současná čtení téže buňky paměti jsou dovolena, ale v jednom okamžiku se pouze jeden procesor smí pokusit zapsat do dané buňky Concurrent Read Concurrent Write (CRCW) PRAM - jsou dovoleny jak současná čtení tak současné zápisy téže paměťové buňky 1. Prioritní (Priority) CRCW procesorům jsou přiděleny pevné priority zápis je povolen procesoru s nejvyšší prioritou 2. Náhodný (Arbitrary) CRCW ukončit zápis je povoleno náhodně vybranému procesoru algoritmus nesmí činit žádné předpoklady o tom, který procesor byl vybrán 3. Shodný (Common) CRCW všem žádajícím procesorům je povoleno dokončit zápis právě tehdy, když všechny zapisované hodnoty jsou stejné každý algoritmus pro tento model musí zajistit splnění této podmínky v opačném případě není algoritmus správný a stav počítače není definován Výpočetní síla: PRAM podmodel A je výpočetně silnější než podmodel B, psáno A ≥ B, jestliže jakýkoliv algoritmus napsaný pro B poběží beze změny na A s tímtéž paralelním časem, předpokládáme-li stejné architektonické parametry. Pro CRCW platí: PRIORITY ≥ ARBITRARY ≥ COMMON ≥ CREW ≥ EREW. Efektivita Pram algoritmus s T(n,p) je časově efektivní pokud = a zaroven C(n,p) = Simulace velkých PRAM na malých PRAM téhož typu Hrubší simulace zachovávající paralelní cenu: Nechť A je PRAM(n, p) algoritmus s časem t = T(n, p) a nechť p' < p. Pak A lze simulovat pomocí PRAM(n, p') algoritmu na PRAM téhož typu v čase T(n, p') = O(t · p / p'). Jednoduché: Náš PRAM má méně procesorů, tudíž každý z nich simuluje několik původních procesorů a to tak, že v každém kroku nejdříve provede všechny jejich https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_2 2/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_2 [FIT Wiki, FIT sobě] operace READ+LOCAL a potom všechny operace WRITE. Druhou možností je Jemnější simulace zachovávající paralelní práci - je to velmi podobné, jen simulace probíhá dynamicky (asi si tu práci rozdělují aby nikdo nezahálel). Simulace PRAM s velkou pamětí na PRAM s malou pamětí: Algoritmus A PRAM(n,p) s p procesory s pamětí n trvá t = T(n,p) . Pak lze A simulovat na PRAM(m, max(p,m)) stejneho typu v t * O(n / m) krocich. důležité je si uvědomit že je nutné mít vždy alespoň tolik procesorů, kolik je buněk v paměti nového PRAMu (proto to max(p, m)) (Ptal jsem se na nalejvárně, co se stane když vyberu počet procesorů P, tedy více než M a Tvrdík říkal, že potom ti co nemají svou paměťovou buňku nic nedělají a to není žádoucí. Není zde prý max. P myšleno jako maximální počet procesorů, který mám k dispozici, ale maximální počet procesorů, který řeší problém efektivně.) simulovaná pamět (z toho většího pramu) se rozdělí na n/m souvislých úseků S i každý procesor p' i každý procesor p' i bude simulovat procesor původního PRAM si uloží obsah Si do své lokální paměti a M' i (oznacuje mensi pamet) bude používat pro simulaci přístupu k buňkám Si. Pro cteni a zapis: (for k in Si): Vsechny procesory paralelne vystavi k-tou bunku do M' i a nasledne se provede globalni cteni/zapis. Pak se provadi dalsi krok for cyklu (k = k + 1). Operace local: pro tu neni potreba nic vystavovat. Takže každý procesor má v podstatě část té původní paměti schovanou v sobě (v lokální pmaěti) a má jednu buňku ve sdílené paměti kam dává k dispozici žádanou buňku ze své vnitřní paměti (a naopak z ní čte co má do nějaké buňky Si zapsat) simulace probíhá potom tak, že každý procesor i postupně vystaví do M' i první, druhou… až n/m-tou buňku Si, aby si to mohli všichni číst a provádět LOCAL operace a po local zas to co je v Mi vezme a zapíše zpět (jak jednoduché, že? Jj, krása, skoro jsem se z toho udělal. Slovy oblíbeného profesora Mišoviče: „Náááááádhera!“.) Simulace silnějšího PRAM na slabším (C3.1-1, slide 20-21) Simulace silnějšího PRAM na slabším č.1 uvažujme prioritní CRCW s prioritním systémem založeným jednoduše na indexování: procesory s nižším indexem mají vyšší prioritu jeden krok prioritního CRCW PRAM(n, p) algoritmu lze simulovat pomocí EREW-PRAM(n · p, p) algoritmu v O(log p) krocích: 1. pomocné buňky reprezentují vnitřní uzly úplného binárního stromu (vnitřní uzly znamená, že tam nejsou listy) - slouží k vyřešení priority při zápisu do buňky 2. každý procesor nastaví příznak, do které buňky chce zapisovat (tj. stane se listem stromu) a nastaví svůj stav na active 3. každý levý zapíše své ID do rodiče https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_2 3/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_2 [FIT Wiki, FIT sobě] 4. každý pravý zkontroluje, zda je rodič prázdný a pokud ano, zapíše se do něj, pokud ne, nezapisuje ale deaktivuje se 5. takto se postupuje po hladinách až se najde kořen 6. procesor, který získal právo zápisu, projde strom dolů a vynuluje příznaky (při čtení dojde také k distribuci čtené hodnoty) česky - ke každé buňce paměti je zavěšený úplný binární strom (má p listů, protože je p procesorů), tam se zapisují procesory které chtějí do dané buňky psát… na vyřešení kdo nakonec zapíše je potřeba log p kroků (výška stromu) - takže každý krok se simuluje log p kroky. Simulace silnějšího PRAM na slabším č.2 jeden krok prioritního CRCW PRAM(n, p) algoritmu lze simulovat pomocí EREW-PRAM(n + 3p, p) algoritmu v O(log p) krocích:(C3.1-1, slide 26) Pozor, pole je zde indexováno od jedničky, OMFG, a já pořád, proč mi to nedává smysl… 1. používá se pomocné pole A[p][3] 2. každý procesor Pk v prioritním CRCW je simulován EREW procesorem P' k 3. chce-li Pk přístup do M[i], pak procesor P' k zapíše dvojici (i, k) do A[k][1,2] 4. v opačném případě procesor P' k zapíše dvojici (0, k) do A[k][1,2] 5. procesory paralelně setřídí pole lexikograficky algoritmem, který vyžaduje O(log p) kroků 6. každý P' k zapíše do A[k][3] příznak: I. 0, pokud je první položka dvojice rovna nule nebo je shodná s první položkou předchozí buňky II. 1 v opačném případě (tento příznak tedy říká, zda je daný požadavek na danou buňku první v řadě) https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_2 4/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_2 [FIT Wiki, FIT sobě] 7. pro zápis: I. procesor P' k přečte trojici (i, j, s) z buňky A[k] a zapíše ji do buňky A[j] II. procesor P' k přečte trojici (i, k, s) z buňky A[k] a jestliže s = 1, pak zapíše do M[i] 8. pro čtení: I. procesor P' k přečte trojici (i, j, s) z buňky A[k] II. pokud s = 1, procesor provede čtení a výsledek čtení uloží do A[k][3] III. binárním zdvojováním se nakopírují hodnoty do dalších buněk procesorů, které žádaly o čtení stejné buňky (jsou za touto) IV. procesor P' k přečte z buňky A[k] trojici (i, j, s) a zapíše ji do buňky A[j] V. každý P' k, který žádal o čtení, si přečte příslušnou hodnotu z buňky A[k][3] Dodatek: „Projdu všechny trojice A[k] a pokud A[k][3] = 0 pak zapíšu do buňky M[A[k][1]]“ je špatně, správně abych mohl zapsat musí být „A[k][3] = 1“. Zdroje Zdroj Exfort wiki [http://exfort.org/wiki/predmety/mszz/paralelni_algoritmy_x36par] Diskuze Petr Kukrál, 2012/05/26 11:14 Opravil jsem vzorce pro simulaci PRAM s velkou na PRAM s malou pamětí. Uvnitř závork má být index i místo Pi (viz. slidy). Jiří Hanousek, 2012/06/04 21:49 https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_2 5/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_2 [FIT Wiki, FIT sobě] Dotázek k Simulace PRAM s velkou pamětí na PRAM s malou pamětí: „simulované buňky se rozdělí na n/m úseků Si“ - není to nesmysl? Nemělo by to být spíš tak, že původní paměť velikosti n se rozdělí na m úseků o velikost n/m? Každý RAM má pak tu část délky n/m a vystavuje jí na tu svou buňku.. Nebo to jen špatně chápu? Vladimír Říha, 2012/06/05 22:40 Podle mne mas pravdu, ale tady je to imho jenom nevhodne naformulovany. Ja ze skript mam „simulovanych n pametovych bunek se rozdeli do m useku (Si) o delce n/m“ Jan Kucera, 2012/06/05 09:56 Drive se ptali i ma apram. Doporucuji taky naucit. Jirka Chadima, 2012/06/05 09:58 AFAIK APRAM neni v prednaskach/osnovach PARu na FITu Lukáš Němeček, 2012/06/05 15:48 APRAM a CCC se na FITu neuci Jan Kucera, 2012/06/05 17:10 Prednaska 3 fit 2011 mas tam apram.. Petr Mikota, 2012/06/05 18:42 Za nás ho ještě zmínil, ale v aktuálních prezentacích už myslim vůbec není. Taky už předtím říkal, že APRAM stejně jako CCCn zkoušet nebude. Martin Černý, 2013/05/24 12:50 Příklad simulace silnějšího na slabším - zdá se mi, že u popisu obrázku je chyba: „Projdu všechny trojice A[k] a pokud A[k][3] = 0 pak zapíšu do buňky M[A[k][1]]“ Myslím, že by tam mělo být pokud A[k][3] = 1. Možná se pletu, v PARech plavu teď stejně jak před zkouškou. Jaroslav Líbal, 2013/05/30 01:44 Ano. Daniel Kobrle, 2013/06/07 18:01 Souhlasím, taky jsem se nad tím teď zaseknul :) Muchka Tomáš, 2013/06/08 19:43 Simulace silnějšího PRAM na slabším č.2 Úplně mi nejde do hlavy ta složitost simulace jednoho kroku. Je tam odkaz na přednášku, kde je napsáno to samé, takže to asi překlep nebude, ale… Pokud musím v každém kroku seřadit pole (předpokládám, že to bude konkrétně sekvenční řazení), tak by to mělo trvat O(p*log(p)), zatímco v textu je uvedeno O(log(p)). Co mi tedy uniká? Daniel Kobrle, 2013/06/09 09:18 Jestli ono to nevychází z SL(n) - jednodušeji než log(p) to nepůjde, protože vždy mohu v jednu chvíli porovnat mezi sebou maximálně dvě čísla a ty seřadit. To, že takový algoritmus nemám mě v tuhle chvíli netrápí a použiji třeba mergesort… ale to tipuju :) Muchka Tomáš, 2013/06/09 10:55 https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_2 6/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_2 [FIT Wiki, FIT sobě] Našel jsem to ve skriptech, řadí to pomocí Cole MergeSort EREW-PRAM (p,p) Daniel Kobrle, 2013/06/09 15:24 Koukám, že ho Tvrdík probírá v doktorským https://edux.fit.cvut.cz/oppa/PI-PPA/prednasky/PI-PPA2011-3.pdf studiu.. [https://edux.fit.cvut.cz/oppa/PI-PPA/prednasky/PI-PPA2011-3.pdf] https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_2 7/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_3 [FIT Wiki, FIT sobě] PAR - MSZZ - 3. okruh Zpracovává Michal Kabelka [mailto:mailto:[email protected]] Poznámka Překlopeno z Exfort wiki Zadání Propojovací sítě pro paralelní počítače (taxonomie, vlastnosti, přímé propojovací sítě ortogonální a řídké hyperkubické, nepřímé vícestupňové sítě). Vnoření, simulace a výpočetní ekvivalence propojovacích sítí. Základní pojmy Pojem Hlavní část Propojovací sítě pro paralelní počítače (taxonomie, požadavky na jejich vlastnosti) Taxonomie z hlediska toků instrukčních dat: 1. SIMD (Single instruction multiple data) - identické podřízené výpočetní uzly, které jsou řízené jedním tokem makroinstrukcí, které vysílá nadřazený počítač 2. MIMD (Multiple instruction multiple data) - množina samostatných uzlů, z nichž je každý schopen provádět svůj vlastní program ve své vlastní paměti Taxonomie z hlediska organizace paměti: 1. systémy se sdílenou pamětí - SMP (Symmetric multiprocessing), UMA (uniform memory acces) 2. systémy s distribuovanou pamětí - NUMA (non-uniform memory access) 3. systémy s distribuovanou sdílenou pamětí - DSM (virtuální sdílená paměť) - CC-NUMA (cache coherent NUMA) spojuje v sobě dobré vlastnosti předchozích dvou Taxonomie z hlediska propojovacích sítí: [+] alternativní dělení Typy propojovacích sítí: 1. sdílené komunikační médium (sběrnice) 2. přepínané komunikační médium (uzly připojeny k přepínačům) Přímé a nepřímé propojovací sítě: 1. přímé sítě: každý přepínač je připojen alespoň k 1 výpočetnímu uzlu (PE) 2. nepřímé sítě: některé přepínače jsou připojeny pouze k jiným přepínačům I. vícestupňové II. stromové Pravidelné a nepravidelné propojovací sítě: 1. pravidelné sítě: topologie propojení tvoří pravidelný zobecnitelný graf 2. nepravidelné: topologie propojení tvoří náhodný graf Klasifikace podle doby života propojovacích cest: 1. statické – propojovací cesty zůstávají neměnné 2. dynamické: křížové přepínače (jednoúrovňové, několikaúrovňové), sběrnice https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_3 1/8 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_3 [FIT Wiki, FIT sobě] Základní pojmy z teorie grafů graf G je určen množinou uzlů a hran G = (V, E). stupeň uzlu je počet sousedů. graf je k-regulární, když všechny uzly mají stupeň k kartézský součin grafů: graf je uzlově symetrický, pokud vypadá z pohledu kteréhokoliv uzlu stejně (pro každou dvojici uzlů existuje automorfismus tak, že se jeden uzel zobrazí na druhý) graf je hranově symetrický, pokud vypadá z pohledu kterékoliv hrany stejně (pro každou dvojici hran existuje automorfismus tak, že se jedna hrana zobrazí na druhou) excentricita uzlu u je vzdálenost uzlu u od uzlu, který je mu nejvzdálenější průměr grafu je vzdálenost dvou nejvzdálenějších uzlů (maximální excentricita v grafu) poloměr grafu je excentricita uzlu s nejmenší excentricitou (ze všech uzlů grafu) (minimální excentricita v grafu) souvislost grafu je minimální počet uzlů, jejichž odebrání způsobí rozpojení grafu (obdobně hranová souvislost) graf je bipartitní, pokud lze jeho uzly obarvit dvěma barvami tak, aby dva uzly se stejnou barvou nesousedily. Bipartitni graf je vyvazeny, pokud se velikosti techto dvou mnozin rovnaji. Hamiltonovská kružnice je uzavřená cesta přes všechny uzly bisekční šířka grafu je nejmenší počet hran, jejichž odebrání způsobí rozpad grafu na dvě přibližně stejně velké části (obdobně uzlová bisekční šířka) chybová vzdálenost uzlů u a v je maximum z délek všech možných co nejkratších uzlově disjunktních cest mezi u a v chybový průměr je maximum ze všech chybových vzdáleností Požadavky na vlastnosti propojovacích sítí 1. malý a konstantní stupeň uzlu: technologický požadavek ⇒ řídký graf, malá souvislost a velké vzdálenosti, levné a univerzální směrovače 2. malý průměr a malá průměrná vzdálenost: algoritmický požadavek, snižuje komunikační zpoždění 3. konstantní délka hran: rozmístitelnost uzlů ve 3D tak, aby délka kabelů byla konstantní 4. symetrie: zjednodušuje návrh algoritmů (nezáleží na tom, kde výpočet začne ani kterým směrem začne), snazší vnořování a VLSI návrh 5. škálovatelnost: inkrementálně škálovatelná topologie (dostupná pro libovolné N), jinak je částečně škálovatelná je efektivně škálovatelná, pokud přidání k uzlů vyžaduje řádově stejně změn hran, tj. O(k) změn 6. hierarchická rekurzivita (instance nižších dimenzí jsou podgrafy instancí vyšších dimenzí): induktivní návrh a mapování paralelních algoritmů, většinou jen částečná škálovatelnost 7. vysoká souvislost a malé chybové vzdálenosti: důležité z hlediska spolehlivosti a robustnosti, obcházení výpadků nebo přetížených linek, posílání paketů po paralelních cestách 8. velká bisekční šířka: pro metody rozděl a panuj (a jiné rekurzivní problémy) - vysoké přenosové kapacity mezi oběma polovinami (horní mez je N/2) 9. podpora pro směrování a kolektivní komunikační operace 10. existence hamiltonovských cest a 2-barvení: hamiltonovská cesta je vnoření kružnice, zjednodušuje návrh algoritmů, které používají lineární číslování uzlů 11. vnořitelnost: efektivní zobrazení daného grafu procesů do sítě procesorů, schopnost efektivně simulovat jiné topologie Přímé propojovací sítě Ortogonální https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_3 2/8 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_3 [FIT Wiki, FIT sobě] Binární hyperkrychle Qn : 2n uzlů, n · 2n - 1 hran, průměr n, bisekční šířka 2n - 1, souvislost n regulární (všechny uzly mají stejný stupeň a tedy stejný počet sousedů) logaritmický stupeň uzlů ⇒ řídká hyperkubická síť hierarchicky rekurzivní: Qn lze rozložit na dvě hyperkrychle Qn - 1 uzlová a hranová symetrie největší možná bisekční šířka ⇒ ideální pro D&C algoritmy vyvážený bipartitní (dáno paritou) a Hamiltonovský graf (dán Grayovými kódy) simuluje efektivně téměř všechny známé topologie vzdálenost uzlů dána počtem rozdílných bitů problém alokace na víceuživatelském počítači - podkrychle, problém fragmentace nedostatky: nedostatečná škálovatelnost, logaritmický stupeň přeložení z uzlu u do uzlu v (souvisí s uzlovou symetrií): x = x xor (u xor v) (tedy u se zobrazí na v a v se zobrazí na u) permutace dimenzí (souvisí s hranovou symetrií): systematická změna pořadí souřadnic všech uzlů částečně, ale efektivně škálovatelná Mřížka M(z1 , z2 , …, zn ) uzlů, hran, bisekční šířka (pokud je maximální zi sudé, pak platí rovnost bez omega) průměr - - nevím jak se k tomuhle přišlo a ve zkušenostech někdo psal, že Šimečkovi se to nelíbilo a chtěl tu druhou definici, alternativně n - rozměrná mřížka, zi - jednotlivé rozměry 1D - inkrementálně škálovatelné, protipól úplného grafu 2D, 3D - nejpraktičtější pro použití není regulární ⇒ není uzlově symetrická velký průměr hierarchicky rekurzivní problém alokace jako u hyperkrychlí bipartitní Hamiltonovská cesta existuje vždy (ale Hamiltonovská kružnice pouze pokud je alepsoň jeden rozměr sudý) částečně, ale neefektivně škálovatelná konstrukce pomocí kartézského součinu (jako u krychlí) Toroid K(z1 , z2 , …, zn ) mřížka, kde každá lineární řada je uzavřena do kružnice. pocet hran regulární, uzlově symetrický - stupen grafu je 2 * n poloviční průměr oproti mřížce, dvojnásobná bisekční šířka https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_3 3/8 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_3 [FIT Wiki, FIT sobě] bipartitní pokud jsou všechny délky stran sudé částečně škálovatelný (ještě méně efektivní v porovnání s mřížkami) Warning – tenhle obrázek je matoucí, toroid samozřejmě má i uzly uvnitř: Řídké hyberkubické Jedná se o řídké grafy odvozené od hyperkrychle rozvinutím každého uzlu hyperkrychle do více uzlů. Kružnice propojené krychlí CCC n : * počet uzlů n · 2n, počet hran n · 2n - 1 + n · 2n, průměr <math>\displaystyle (2n - 2) + \lfloor{n} / 2\rfloor</math> (pro CCC3 je průměr 6), stupeň 3, bisekční šířka 2n - 1 * je uzlově symetrický, není hranově symetrický (hyperkubické a kružnicové hrany) * není hieararchicky rekurzivní * pro sudá n je vyvážený bipartitní - v našich PARech bylo tohle vypuštěno, ne? Zabalený motýlek wBF n : jako CCCn, ale hyperkubické hrany nespojují stejnolehlé uzly v sousedních kružnicích, ale uzly sousední (jak vlevo tak vpravo) uzel má tedy dva sousedy ve své kružnici a dva sousedy v sousedních kružnicích základní vlastnosti má stejné jako CCCn, až na to, že má více hran (n · 2n + 1), větší bisekční šířku 2n a menší průměr Obyčejný motýlek oBF n : počet uzlů (n + 1)· 2n, počet hran n · 2n + 1, průměr 2n, bisekční šířka 2n pozor: uzly o stejné x-ové souřadnici jsou číslovány od nuly do n, na každé x-ově souřadnici jich je tedy n + 1 (narozdíl od CCCn a wBFn) není regulární ani uzlově symetrický https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_3 4/8 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_3 [FIT Wiki, FIT sobě] hierarchicky rekurzivní oBF3: Nepřímé vícestupňové sítě TODO pro budoucí generace: jak funguje obousměrné směrování (chtěl konkretní příklad), delta sítě, počet možných směrování na delta síti (nebo něco v tom smyslu) Nepřímé sítě: 1. vícestupňové nepřímé sítě 2. stromové sítě 3. nepravidelné sítě I. jednosměrné II. obousměrné Nepřímé vícestupňové sítě: existuje jedinečná cesta mezi libovolnou dvojicí vstupu a výstupu mají n sloupců tvořených 2n - 1 přepínači 2×2: levý sloupec je připojen ke vstupům (procesory) hranami nultého stupně pravý sloupec připojen hranami n-tého stupně k výstupu (procesory, paměti) druhy permutačních stupňů: 1. dokonalé promíchání (Perfect Shuffle), σ: rotace vlevo o jeden bit 2. motýlek (Butterfly), βi: záměna posledního a i-tého bitu 3. základní (Baseline), δi: rotace doprava posledních i+1 bitů, bity před tím nechávám beze změny příklady: 1. základní síť (sigma, základní, základní, základní) 2. motýlek (motýlek, motýlek, motýlek, motýlek) 3. nepřímá hyperkrychle (sigma, motýlek, motýlek, motýlek) 4. omega síť (sigma, sigma, sigma, sigma) přestavitelné - Benešova (dva motýlci otočení k sobě „zády“; proto zde neplatí „mají n sloupců tvořených 2n - 1 přepínači“) - lze realizovat jakoukoliv permutaci bez kolize obousměrné: přepínače se umí vevnitř přepojit tak, že jeden vstup jde na druhý vstup https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_3 5/8 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_3 [FIT Wiki, FIT sobě] Problém vnoření Základní pojmy: vnoření zdrojového grafu G do cílové sítě H (opět graf) je dvojice zobrazení - z uzlů na uzly, z hran na množinu všech cest zatížení cílového uzlu - počet zdrojových uzlů na něj namapovaných (značí se load) zatížení vnoření - maximální zatížení uzlu (ze všech uzlů cílové sítě) expanze - poměr velikosti cílové sítě (počet uzlů) a zdrojového grafu (počet procesů) (značí se emb) dilatace zdrojové hrany - protažení zdrojové hrany v cílové síti (tj. na jak dlouhou cestu byla hrana namapována) (značí se dil) dilatace vnoření - maximální dilatace (ze všech hran zdrojového grafu) linkové zahlcení cílové linky - počet zdrojových hran využívajících cílovou hranu (namapovaných na cestu procházejících cílovou hranou) (značí se ecng) linkové zahlcení vnoření - maximum ze všech linkových zahlcení uzlové zahlcení cílového uzlu - počet cest, na které je namapovaná nějaká zdrojová hrana a procházejí cílovým uzlem (značí se ncng) Grafy a jsou quasiisometrické, pokud existuje vnoření i s konstantními hodnotami měřítek vnoření. simuluje se zpomalením s, jestliže jeden krok výpočtu na může být simulován v krocích na . a jsou výpočetně ekvivaletní (jsou-li quasiisometrické), pokud dokáže simulovat s konstantním zpomalením a naopak. Rozdělení: 1. statický známe velikost a strukturu grafu procesů máme počítač s distribuovanou pamětí se známou topologií sítě jak mapovat graf procesů na tento stroj, aby výpočet byl co nejefektivnější? 2. dynamický procesy dynamicky vznikají, neznáme velikost ani strukturu grafu procesů, jen částečné informace (např. max. počet potomků jednoho procesu) máme počítač s distribuovanou pamětí se známou topologií propojovací sítě https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_3 6/8 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_3 [FIT Wiki, FIT sobě] jak distribuovat dynamicky vznikající procesy mezi procesory tak, aby výpočet byl co nejefektivnější? Vnoření do hyperkrychle: vnoření do hyperkrychle může být popsáno pomocí: 1. značení uzlů - ohodnocení uzlů binárními adresami 2. značení hran - ohodnocení hran čísly dimenzí cesty a kružnice: pomocí Grayových kódů (Binární zrcadlový Grayův kód) v krychli neexistují kružnice liché délky úplné binární stromy: CBTn není podgrafem Qn + 1, protože CBTn není, zatímco Qn + 1 je, vyvážený bipartitní graf staticka varianta 1 (lepe zapamatovatelna :)) In order znackovani uzlu stromu. Cili na prikladu: koren bude mit 10, levy potomek 01 a pravy 11. Toto se da rekurentne pekne zopakovat statická varianta 2 - vnořujeme do Qn + 1 rekurzivní zdvojování kořene load = ecng = 1, dil = 2 inorder číslování (imho inorder číslování je taky dil = 2. Podle EN skript strana 60) dil = ecng = 2, load = 1 dynamická varianta (pravděpodobnostní algoritmus) kořen je umístěn do libovolného uzlu hyperkrychle podle náhodného rozhodnutí listový proces umístí svého levého syna do stejného uzlu a pravého syna do sousedního nebo opačně mřížky: toroidy: pro všechna zi sudá, jinak se vnořuje s load = 1 a dil = 2 kružnice propojené krychlí: pro n sudé, jinak se vnořuje s load = 1 a dil = 2 obyčejný motýlek: zabalený motýlek: s dil = O(1) a ecng = O(1) Vnoření do mřížek a toroidů: důležité v praxi - navrhování VLSI obvodů hyperkrychle: Peanova křivka (spojuje uzly v lexikografickém pořadí při dělení střídavě podle osy x a osy y) čtvercová mřížka do obdélníkové: hadi obdélníková mřížka do čtvercové: vyplníme hadem čtverec (dil = 1, load = ecng = 2) lineárních polí a kružnic: v toroidu nalezneme Hamiltonovskou kružnici, v mřížce Hamiltonovskou cestu mřížka do toroidu: mřížka je podgrafem toroidu toroidu do mřížky: load = 1, dil = ecng = 2 (pomocí kartézské dekompozice na problem vnoreni 1D Tor do 1D Mesh) Lineární pole nebo kružnici lze vnořit do jakéhokoli grafu G 1. vytvoř kostru T grafu G 2. prováděj DFS na T a při uzavírání uzlu umisťuj uzly vnořovaného grafu Výpočetní ekvivalence sítí Grafy a jsou quasiisometrické, pokud existuje vnoření i s konstantními hodnotami měřítek vnoření. simuluje se zpomalením s, jestliže jeden krok výpočtu na může být simulován v krocích na . a jsou výpočetně ekvivaletní, pokud dokáže simulovat s konstantním zpomalením a naopak. Quasiisometrické sítě ⇒ výpočetně ekvivalentní, ale ne naopak! https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_3 7/8 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_3 [FIT Wiki, FIT sobě] Zdroje Zdroj Exfort wiki [http://exfort.org/wiki/predmety/mszz/propojovaci_site_paralelnich_pocitacu_a_komunikacni_algoritmy_x36par] Diskuze Jiří Hanousek, 2012/05/28 22:07 Jen drobný dotaz, jaktože je bisekční šířka maximálně N/2? Když ten gram rozdělím na 2 poloviny, tak ty dvě poloviny mohu spojit (N/2)^2 hranami, ne? Nebo jsem úplně vedle? Petr Mikota, 2012/05/28 23:37 Hmm… je to divné… když ten graf bude úplný, tak bude bisekční šířka větší, než N/2. Když se na dvě poloviny rozdělí hyperkrychle, tak to tak ale je. Taky je v textu rozdíl n a N: Hyperkrychle má bisekční šířku: když https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_3 je počet uzlů. 8/8 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_4 [FIT Wiki, FIT sobě] PAR - MSZZ - 4. okruh Zpracovává Michal Kabelka [mailto:mailto:[email protected]] Poznámka Překlopeno z Exfort wiki Zadání Směrovací algoritmy, základní techniky řízení komunikace, problém zablokování a jeho řešení. Základní pojmy Porty 1-portový procesor - procesor má k dispozici pouze 1 injekční a 1 ejekční kanál a v jednom kroku je schopen jednu zprávu do sítě vložit a jednu ze sítě převzít. Tento model je nejčastější. k-portový procesor - místo 1 zprávy zvládne procesor k zpráv najednou, přijmout i vyslat. všeportový procesor - počet injekčních vnitřních kanálů je roven počtu vnějších výstupních kanálů směrovače a počet ejekčních vnitřních kanálů je roven počtu vnějších vstupních kanálů směrovače. Procesor je tedy schopen plně saturovat komunikační výkon směrovače. Uzly s touto architekturou nejsou běžné. Směrovost kanálů simplexní - jsou komunikační linky, pokud jsou vstupní a výstupní kanály odděleny. To znamená, že po dané lince mezi dvěma směrovači lze přenášet zprávy pouze 1 směrem. poloduplexní - pokud jsou vstupní i výstupní kanál připojeny na tutéž linku, ale v jednom okamžiku lze přenášet pouze 1 zprávu, jedno jakým směrem plně duplexní - pokud lze v jednom okamžiku přenášet po vnějším kanále mezi dvěma směrovači dvě zprávy najednou, každou jiným směrem Hlavní část Směrovací algoritmy a architektura směrovačů Klasifikace komunikačních problémů: 1. jeden jednomu: žádné problémy se zablokováním či zahlcením 2. jeden mnoha: vysílání ve skupině (MC – MultiCast), vysílání jeden-všem (OAB – One to All Broadcast), rozesílání jeden-všem (OAS – One to All Scatter) 3. všichni-všem: vysílání (AAB – All to All Broadcast), rozesílání (AAS – All to All Scatter) Základní pojmy (architektura): výpočetní uzel = počítač + směrovač (poskytuje připojení do propojovací sítě a zajišťuje funkci mezilehlého uzlu) směrovač = centrální přepínač + vstupní a výstupní vnitřní (k procesoru) a vnější kanály (propojují směrovače mezi sebou - definují topologii sítě) + jednotky pro směrování a řešení konfliktů kanály mohou být jednosměrné, poloduplexní a plně duplexní https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_4 1/9 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_4 [FIT Wiki, FIT sobě] u výpočetního uzlu s distribuovanou pamětí (na sběrnici připojen procesor, paměť atd.) je směrovač připojen na sběrnici přepínač = propojuje vstupní kanály na výstupní Klasifikace směrovacích algoritmů: 1. rozhodování o směrování (kdy a kde je provedeno) I. distribuované (inkrementální): rozhodnutí podle cílových adres v hlavičkách zpráv II. zdrojové - celou trasu předpočítá zdrojový uzel III. hybridní - zdrojový uzel předpočítá mezilehlé uzly, přesné trasy mezi nimi jsou distribuovaně určeny směrovači IV. centralizované (u SIMD strojů s centrálním řadičem) 2. adaptivita I. deterministické - vždy generují tutéž trasu pro tutéž dvojici zdroj-cíl (e-cube, XY) II. necitlivé (ke stavu sítě) - jakékoli deterministické směrování je necitlivé, nikoli naopak (např. vybírání náhodně nebo cyklicky mezi nějakými cestami) III. adaptivní - vyhýbají se zahlceným nebo porouchaným částem sítě 3. minimálnost I. minimální („greedy“) (po nejkratší cestě) - každý krok blíže k cíli, náchylné k zablokování II. neminimální (obcházející) - posílání paketů dále od svého cíle je možné, náchylné k dynamickému zablokování 4. progresivnost I. progresivní (každé minimální) - každý krok alokuje nový kanál a délka cesty vzroste; při zablokované trase paket buď čeká, nebo je odkloněn (náhodně nebo adaptivně) II. s návratem - při zablokování se stáhne zpět a uvolní obsazené kanály 5. implementace I. konečný automat (HW nebo SW) II. směrovací tabulky intervalové směrování (nemá tak velké paměťové nároky, protože v tabulce je vždy záznam pro interval cílových adres) Minimální směrovací algoritmy typu jeden jednomu: hyperkrychle: e-cube směrování (porovnávají se bity v cílové a aktuální adrese, při neshodě se provede negace příslušného bitu, což odpovídá přechodu do cílové dimenze) mřížky: dimenzně uspořádané směrování - XY (pro 2D) nebo XYZ (pro 3D) směrování - podobné e-cube, jenom se porovnávají nebinární čísla (nejprve se dostanu do správné pozice v rámci jedné dimenze, pak druhé a nakonec třetí dimenze) toroidy: dimenzně uspořádané směrování, ale o něco složitější (je třeba se rozhodnou, na kterou stranu mám v rámci dané dimenze jít, abych to měl blíž) kružnice propojené krychlí: minimální směrování je obtížné neminimální: 1. zjisti, ve kterých bitech se liší adresa výchozí a cílové kružnice 2. nechť i je pozice prvního takového bitu zleva 3. přesuň se do i-tého uzlu v rámci výchozí kružnice 4. pomocí e-cube algortimu přejdi do cílové kružnice 5. v ní se přesuň do cílového uzlu zabalený motýlek: e-cube směrování obyčejný motýlek: e-cube směrování (existuje pouze jediná cesta mezi (0, x) a (n, y)) Základní techniky přepínání https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_4 2/9 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_4 [FIT Wiki, FIT sobě] Základní pojmy: zpráva - jednotka komunikace z hlediska programu, proměnná délka paket - pevná délka, obsahuje směrovací informace flit - linková vrstva, několik typů (hlavičkové, datové, …) fit - fyzická vrstva (přenesena přes jednu fyzickou linku v jednom cyklu) Zpráva obsahuje pakety, paket obsahuje flity, flity jsou složeny z fitů Metrika: rychlost kanálu je špičková rychlost přenosu bitů po jednom fyzickém vodiči zpoždění kanálu startovní zpoždění je zpoždění mezi sousedními směrovači na jeden fit je SW a HW zpoždění ve zdrojovém a cílovém uzlu nutné pro: zformátování a složení paketu validace dat a jejich kopírování mezi pamětí uzlu a frontou směrovače směrovací zpoždění přepínací zpoždění je čas pro směrovací rozhodnutí během budouvání trasy je čas přenosu přes přepínač ze vstupních na výstupní kanály velikost paketu délka přenosové trasy platí: doba přenosu μ-bytového paketu mezi dvěma sousedními směrovači je Přepínání kanálů (CS - Circuit Switching) Princip: 1. konstrukce propojovací cesty: před vlastním přenosem je vyslána směrovací sonda délky p flitu v radu jednotek, která rezervuje fyzické linky 2. když dorazí do cíle, tak je poslán nazpět potvrzovací flit 3. přenos zprávy 4. zrušení spojení (například cílovým uzlem nebo posledními datovými bity) Vlastnosti: po průchodu sondy obvod funguje jako jediný vodič neexistují žádná omezení na délku zprávy výhodné, pokud jsou zprávy dlouhé a málo časté přenos zprávy délky μ na vzdálenost δ trvá čas , kde: sonda pro cestu do cíle potřebuje čas potvrzení putuje zpět čas přenos dat trvá čas https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_4 3/9 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_4 [FIT Wiki, FIT sobě] zjednodušení: Ulož-pošli-dál (SF - Store and Forward) Vlastnosti: zprávy rozděleny do stejně velkých paketů přepínání paketů - každý paket je individuálně směrován do cíle směrovací rozhodnutí učiněno až po přijetí celého paketu fronty musí mít takovou kapacitu, aby se do nich vešel celý paket výhodné pro krátké a časté zprávy (z celé trasy je obsazen nejvýše jeden kanál) komunikační zpoždění je úměrné součinu velikosti paketu a délky trasy ⇒ potřebujeme minimální směrování a nízký průměr sítě, aby zpoždění zůstalo rozumné přenos zprávy délky μ na vzdálenost δ trvá čas zjednodušení: ⇒ citlivé na vzdálenost https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_4 4/9 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_4 [FIT Wiki, FIT sobě] Průřezové (VCT - Virtual Cut Through) Vlastnosti: princip funkce jako u SF, ale směrovací rozhodnutí provedeno a flit přeposlán ihned po přijetí hlavičkového fitu (tj. nečeká se na celý paket) každý další flit je uložen a rovněž hned prořízne do dalšího směrovače (je-li výstupní kanál volný) fronty přesto musí mít takovou kapacitu, aby se do nich vešel celý paket (kdyby nemohla hlavička pokračovat dál, může ji celý zbytek paketu „dohnat“) všechny fronty podél trasy jsou pro jiné komunikační požadavky blokovány (protože pouze hlavičkový flit obsahuje směrovací informace) z uvedených technik je nejnákladnější a nejsložitější, ale díky vyspělosti technologií se dnes nejvíce používá přenos zprávy délky μ na vzdálenost δ trvá čas , kde: zpoždění hlavičky při provádění směrovacích rozhodnutí, přepínání a přesunech je rychlost přenosu řetězce flitů, jakmile dosáhne hlavička cíle a pokud mají směrovače vstupní a výstupní fronty je výstupní, je to (pokud mají pouze vstupní nebo pouze ) zjednodušení: https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_4 ⇒ necitlivé na vzdálenost 5/9 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_4 [FIT Wiki, FIT sobě] Červí přepínání (WH - Wormhole Switching) Vlastnosti: princip naprosto stejný jako VCT, ale vyrovnávací paměti mají kapacitu jen pro jeden flit (nebo malý počet flitů) náchylné na zablokování - když hlavička nemůže pokračovat dál, zamrzne za ní celý řetěz flitů (to je důsledek neexistence pamětí pro celé pakety) proč se používá: umožňuje malé, levné a rychlé směrovače přenos zprávy délky μ na zjednodušení: https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_4 vzdálenost δ trvá čas ⇒ necitlivé na vzdálenost 6/9 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_4 [FIT Wiki, FIT sobě] Problém zablokování a jeho řešení (graf kanálových závislostí, neblokující směrování, virtuální kanály) Základní pojmy: zablokování: situace, kdy paket v síti již obsadil několik kanálů a pro další postup požaduje kanál, který je již obsazen jiným paketem, ale ten je ve stejné situaci (existuje tedy cyklus) řešení: 1. detekce a zotavení: nejméně opatrné, možný velký zisk, ale i ztráty (např. odebrání kanálu paketu nebo zrušení paketu) 2. prevence: kanály jsou paketům přidělovány tak, že nemůže dojít k zablokování (de facto přepínání kanálů) ⇒ malé využití prostředků sítě 3. vyhnutí se zablokování (střední cesta): kanály jsou při postupném budování spojení přidělovány tak, aby výsledný globální stav byl bez zablokování Pro obecnou sit 1. graf kanálových závislostí Z(G, R) - orientovaný graf jeho uzly jsou kanály sítě a dva uzly jsou propojeny orientovanou hranou právě tehdy, když směrovací funkce R může pro tyto uzly směrovat paket z daného vstupního kanálu na výstupní pokud je Z(G, R) acyklický, nemůže dojít k zablokování Ortogonální topologie (hyperkrychle, mřížky) 1. neblokující směrování: seřazení dimenzí (směrů) a jejich přidělování jen v klesajícím pořadí (tím se vyloučí vznik cyklických žádostí) - typičtí představitelé jsou XY směrování, XYZ směrování a ecube směrování Nepravidelné topologie https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_4 7/9 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_4 [FIT Wiki, FIT sobě] Algoritmy nahoru / dolů: 1. zkonstruujeme kostru s jediným kořenem (jednojakym korenem, ale musi byt zvolen pred zapocetim algoritmu) (např. průchodem do šířky) 2. každý uzel má nějaký identifikátor, kořen bude mít nejnižší ID 3. určíme orientaci (od uzlu dále od kořene do uzlu blíže kořenu, pokud jsou na stejné hladině tak od vyššího ID k nižšímu) 4. dovolené jsou pouze ty cesty, které používají nejprve jen linky nahoru a následně jen linky dolů Dalsi moznost prevence deadlocku 1. virtuální kanál: každý fyzický kanál bude nahrazen dvěma nebo více virtuálními kanály, které se budou fyzicky spravedlivě multiplexovat na bázi flitů (používá se v toroidech) Zdroje Exfort wiki [http://exfort.org/wiki/predmety/mszz/propojovaci_site_paralelnich_pocitacu_a_komunikacni_algoritmy_x36par] Diskuze Vladimír Říha, 2012/06/01 18:09 Nemohl by mi nekdo vysvetlit tyhle 2 k primemu smerovani otazky? proc je pri primem XY smerovani v 2D mrizce horizontalni pohyb bez kolizi a pri tom vertikalni neni? staci zapojit predstavivost :) u toho primeho smerovani v 2D mrizce musi byt pamet smerovace b = max(2, 2n/3-1). Pokud mam ale mrizku 3×3, pak b = 2, ale pritom kdyz mam nasledujici pripad https://www.dropbox.com/s/k1zq4fz6hj5zvgc/IMG_20120601_180607.jpg [https://www.dropbox.com/s/k1zq4fz6hj5zvgc/IMG_20120601_180607.jpg] Tak mam v jeden moment 4 pakety (uplne prostredni smerovac) Diky :) Vladimír Blažek, 2012/06/02 14:39 Hlavně máš ten komentář u špatného tématu. To na co se ptáš je přímé permutační směrování, což je okruh 5. Ale jinak taky nevím, koukal jsem na to teď asi 30 minut a netuším. Nejdřív mi trvalo vypátrat, že se fronta je potřeba pouze k „uskladnění paketů“ navíc, takže pokud je fronta n, tak na směrovači může být n+1 paketů. Nicméně ten tvůj příklad vypadá, že je OK. Možná by stálo za to, zkusit napsat Tvrdíkovi. Jinak příště můžeš dopsat i odpověď na tu otázku, kterou si škrtnul, protože se to někomu může hodit. Já bych řekl, že je to tím jak funguje XY směrování, kdyby to bylo YX směrování (rozuměj nejdříve směruji v ose Y poté v ose X), tak to platí obráceně. Nebo-li když mám plně duplexní kanál (pakety můžou po kanálu chodit i proti sobě), tak se mi nemůže stát v horizontálních kanálech, že by dva pakety čekaly na stejný kanál. Buď chodí proti sobě nebo jdou jednotlivě po sobě. Ale pro Y směrování už se může stát, že dva pakety čekají na jednom směrovači a oba chtějí jít po stejném kanále (např. v M(3,3) čekají dva pakety v [2,3], protože jejich cíle jsou [2,1] a [2,2] a dostali se do [2,3] zleva a zprava v prvním kroku. Vladimír Říha, 2012/06/02 19:17 To je tak, kdyz ma clovek otevreno vice tabu :) Ad prvni otazka: Vidim to podobne, z kazdyho uzlu startuje 1 paket, je to vseportovy fullduplex, takze nedojde ke kolizim. Pri postupu po sloupcich uz z jednoho uzlu muze jit https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_4 8/9 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_4 [FIT Wiki, FIT sobě] vice paketu ⇒ FF strategie Preklopim komentar do spravneho okruhu https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_4 9/9 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_5 [FIT Wiki, FIT sobě] PAR - MSZZ - 5. okruh Zpracovává Michal Kabelka [mailto:[email protected]] Poznámka Překlopeno z Exfort wiki Zadání Kolektivní komunikační algoritmy (permutace, vysílání a rozesílání jeden-všem a všichnivšem, skupinová komunikace) na ortogonálních a hyperkubických sítích (dolní a horní meze složitosti, optimalita). Základní pojmy Možnosti manipulace s pakety 1. kombinující model: směrovače či procesory jsou schopny všechny pakety, které obdržely v předchozím kroku, sloučit do větší zprávy či paketu a poslat jednou komunikační operací dále. Obvykle neuvažujeme časovou složitost takové manipulace a předpokládáme, že je započítána v startovním zpoždění . 2. nekombinující model: Směrovače jsou schopny pakety či zprávy pouze kopírovat z vstupů na výstupy a jinak s nimi nemanipulují. Hlavní část Algoritmy pro permutace permutační algoritmy říkají, jak nastavit směrovače, aby vytvořená permutace mezi procesory spotřebovala minimální počet kroků a minimální množství paměti každý procesor je zdrojem maximálně jedné zprávy každý procesor přijímá maximálně jednu zprávu pokud se permutace účastní všechny procesory, jedná se o úplnou permutaci uvažujeme pouze ortogonální a hyperkubické sítě ve většině případů se uvažují SF sítě časově optimální permutace: počet kroků je O(průměr sítě) paměťově optimální permutace: pomocné fronty směrovačů mají velikost O(1) pro minimalizaci paměťových nároků permutačního směrování se používají metody založené na randomizaci, seřazení paketů nebo s předvýpočtem Přímé 1D mřížka všeportová s duplexními kanály strategie nejvzdálenější nejdřív (nejprve je z uzlu vyslán paket, jehož cíl je nejdále) každý paket potřebuje k dosažení cíle nejvýše n - 1 kroků permutace 1-1: všechny pakety se dají do pohybu v kroku 1 a jejich pohyb je bezkolizní kD mřížka Mk(n, n, …) všeportová s duplexními kanály XY směrování (případně jeho varianta pro více dimenzí) přesun nejprve do sloupců a pak ve sloupcích do řádků vyžaduje k · (n - 1) kroků https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_5 1/11 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_5 [FIT Wiki, FIT sobě] směrovače musí mít pomocné fronty pro paketů, což je obecně problém Náhodné randomizace a náhodné permutace je nejjednodušší postup zmenšení maximální velikosti fronty rovnoměrné rozptýlení paketů činí jejich shlukování méně pravděpodobné První metoda 1. vygenerujeme náhodně mezilehlý uzel 2. nejprve pošleme paket do mezilehlého uzlu a pak do cílového (použijeme minimální angl termin „greedy“ směrování) Druhá metoda 1. každý sloupec rozdělen do intervalů o velikosti 2. každý paket je nejprve směrován k náhodně vybranému cíli uvnitř svého intervalu, pak v rámci aktuálního řádku do cílového sloupce a nakonec do cílového řádku 3. při kolizi se použije strategie nejvzdálenější nejdřív Založené na třídění (Pro allport SF) 1. Setřiď lexikograficky do globálního hada po sloupcích (dle adres cílových sloupců) - T sort(M(n, n)) kroků. 2. Každý druhý sloupec převráť(n - 1 kroků). V každém řádku je pak maximálně jeden paket určený pro konkrétní sloupec. 3. Přesun do cílových sloupců (in all rows in parallel)(permutace v rámci jednotlivých řádků) - n - 1 kroků. 4. Přesun do cílových řádků (in all rows in parallel) (permutace v rámci jednotlivých sloupců) - n - 1 kroků. S předvýpočtem (offline) - dobre pokud se stejna permutace pouziva vicekrat 1. Pro všechny sloupce se předpočítají takové permutace, aby po jejich provedení byl v každém řádku nejvýše jeden paket určený pro jakýkoliv daný sloupec (lze využít Hallovu větu o párování). 2. Ve sloupcích se proveď tyto permutace - n - 1 kroků. 3. Přesun do cílových sloupců - n - 1 kroků. https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_5 2/11 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_5 [FIT Wiki, FIT sobě] 4. Přesun do cílových řádků - n - 1 kroků. Spodní meze na počty kroků a časová zpoždění a efektivní a optimální algoritmy Rozdělení komunikačních modelů: počet paralelně použitelných portů: 1-portové, k-portové nebo všeportové směrovost kanálů: simplexní, poloduplexní a plně-duplexní velikost paketu: v kombinujícím modelu se bude velikost paketu μ měnit přepínání: pomalý SF nebo rychlý WH kroky: spodní mez ρ, horní mez r čas: spodní mez τ, horní mez t Všeportová plně duplexní SF nekombinující hyperkrychle Qn : OAB: (průměr sítě) AAB: (každý uzel má obdržet paketů a přitom může obdržet nejvýše n v (zdroj má vyslat celkem paketů a přitom v jednom kroku jich může jednom kroku) OAS: vyslat nejvýše n) AAS: OAB SF sítě: nemá smysl uvažovat kombinování výstupně všeportová síť: ρ = průměr sítě záplavový algoritmus - když přijmu paket poprvé, zkopíruju si ho a pošlu všem zbývajícím sousedům aby nedocházelo k duplikacím, lze použít kostru vytvořenou např. průchodem do šířky 1-portový model: , protože v jednom kroku se může počet informovaných uzlů maximálně zdvojnásobit obecně spodní mez v nesymetrické d-portové síti: obecně spodní mez v uzlově symetrické d-portové síti: EREW PRAM: binární zdvojování (obrácená paralelní binární redukce) úplný graf a hyperkrychle: binomiální kostra (SBTn se skládá ze dvou SBTn - 1 s propojenými kořeny) a na ní buď záplavový algoritmus (všeportová síť) nebo binární zdvojování (1-portová síť) mřížky: dimenzionálně uspořádané kostry (zobecnění SBT) - když přišel paket z dimenze i, tak ho pošli dál v této dimenzi a rozešli ho všem sousedům v dimenzích větších než i (na obě strany) https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_5 3/11 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_5 [FIT Wiki, FIT sobě] WH sítě: komunikace necitlivá na vzdálenost (takže se u spodní meze neuplatní průměr) výstupně všeportová 1-portová síť: d-portový model (d-regulární mřížka): hyperkrychle: 1-portová - binomiální kostra jako u SF všeportová 2-krokový algoritmus dvojitého stromu (DTA) - nejprve se pošle paket do opačného uzlu a začnou se budovat dvě částečné binomiální kostry proti sobě algoritmus Ho-Kao (HKA) - rozdělíme krychli na podkrychle dimenze ≤ 6 (tam je výše popsaný postup optimální) a na ně algoritmus aplikujeme 1-portová 1D mřížka: binární zdvojování (tedy simulace binomiální kostry na SF hyperkrychli) 1-portová xD mřížka: dekompozice na 1D mrizky a pak binarni zdvojovani v prvni dimenzi a pak ve druhy az v xte dimenzi. 1-portový toroid: binární zdvojování (díky uzlové symetrii jednodušší) všeportová mřížka a toroid: https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_5 4/11 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_5 [FIT Wiki, FIT sobě] , kde N je počet uzlů a n je dimenze 3-fázový diagonální algoritmus (zobecněná diagonála) 1. zdrojový uzel doručí paket do každého řádku (logaritmický počet kroků - horizontální pásy) 2. seřazení paketů na hlavní diagonálu 3. diagonální uzly informují zbývající uzly postupným dělením do diagonálních pásů - tedy opět logaritmicky https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_5 5/11 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_5 [FIT Wiki, FIT sobě] Vysílání skupině (MC) jeden uzel informuje pouze podmnožinu uzlů M pro SF lze použít modifikace OAB pro WH obtížnější (klasický OAB by byl velmi neefektivní) d-portová WH sít: 1-portové WH sítě s plně duplexními kanály: vyuziva ADOC (ascending dimension-ordered chain - v podtate klesajici posloupnost uzlu podle dimenze) hyperkrychle: lexikografické setřídění (ADOC), binární zdvojování mřížka: - podobne jako u hyperkrychle, taky vyuziva lehce pozmeneny ADOC 1. rozdělit lexikograficky setříděnou posloupnost do dvou polovin (horní a dolní) 2. je-li zdroj ve spodní polovině, poslat paket prvnímu uzlu v horní polovině, jinak poslednímu uzlu spodní poloviny 3. opakuj rekurzivně na obě poloviny OAS zdrojový uzel pošle individuální paket každému uzlu, tedy na počátku má zdroj N-1 paketů velikosti μ, na konci získá každý uzel 1 paket velikosti μ podobná složitost jako AAB, neboť v AAB má každý uzel obdržet N - 1 paketů (v OAS zdroj vyslat) nekombinující model zdroj posílá všech N - 1 paketů jako samostatné jednotky: 1-portová SF síť: hamiltonovská cesta + FF (Farthest First – nejvzdálenější nejdřív) 1-portová WH síť: cíle v libovolném pořadí výstupně všeportové sítě , kde d je stupeň zdrojového uzlu kostra se bude skládat z d podstromů a v kazdem kroku poslu zpravy d uzlum z https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_5 6/11 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_5 [FIT Wiki, FIT sobě] nichz kazdy bude v jinem podstromu. kombinující model jako OAB až na to, že velikost zprávy postupně klesá (ρ je stejné jako u OAB) SF mřížky a toroidy - postupné předávání mezi sousedy (pipelining) WH mřížky a toroidy - binární zdvojování („recursive doubling“) hyperkrychle 1-portová: SF binomiální kostra, kde velikost zprávy klesá na polovinu. Do dimenze X poslu kombinovanou zpravu, pro ty kteri se v te dimenzi nachazeji a v dalsich kroku si to muzu predstavit, ze uz se muzim postarat o Q o jednu dimenzi mensi a zase provedu rekurentne to same. více-portová: OAS varianta dvojitých stromů (Ho-Kao) AAB SF kombinující sítě: d-portová síť: všeportový model plně duplexní: záplavový algoritmus (zkombinovat pakety ze všech směrů, odstranit duplikáty a rozeslat) poloduplexní: metoda soustřeď-rozešli: soustřeď všechno jednomu (AOG – All-to-One Gather, opak k OAS) a ten akumulovaný paket rozešle všem (OAB) bipartitní graf – střídavé přenášení zleva doprava a zprava doleva (funguje jen pro bipartitní sítě) pak 1-portový plně duplexní model: je možné použít metodu soustřeď-rozešli 1D mřížky a toroidy: střídavě licho-suché a sudo-liché výměny (výměna informací nejprve s levým sousedem, pak s pravým) vícerozměrné mřížky a toroidy: rozklad po dimenzích a pak opět licho-sudé a sudo-liché výměny (v rámci jednotlivých dimenzí) hyperkrychle: licho-sudé a sudo-liché výměny (v každé dimenzi jedna výměna, tj. ), velikost zprávy se v každém kroku zdvojnásobuje SF nekombinující sítě: počet paketů v síti je výrazně větší než u kombinujícího modelu (každý paket je doručován induviduálně) plně duplexní kanály odpovídají orientovaným hranám tam i zpět 1-portový model: hamiltonovská kružnice všeportový plně duplexní model: spodní mez , kde d je minimální stupeň uzlu v G 2D mřížka: každý uzel vyšle svůj paket oběma směry po hamiltonovské kružnici (všechny pakety se posunují podél jedné hamiltonovské kružnice) toroidy každý uzel rozdělí svůj paket na dvě poloviny každý uzel vyšle svoje poloviny paketu oběma směry po dvou hamiltonovských kružnicích (tedy celkem 4 pakety - každou polovinu dvakrát) když uzel obdrží obě dvojčata, složí je do původního paketu časově hranově disjunktní kostry (každý uzel je kořenem nějaké kostry, která mu umožní odeslat paket všem uzlům) - lze použít i pro hyperkrychle https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_5 7/11 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_5 [FIT Wiki, FIT sobě] WH sítě: 1. rozděl G do 2k souvislých regionů a zvol jejich reprezentanty 2. každý reprezentant shromáždí pakety uvnitř svého regionu použitím AOG 3. reprezentatni provedou AAB mezi sebou (simulací AAB v kombinující Qk - sudo-liché a licho-sudé výměny) 4. každý reprezentant distribuuje globální info uvnitř svého regionu AAS Jedná se o úplnou výměnu - v síti je N · (N - 1) paketů. SF nekombinující sítě: , kde m je počet hran v síti SF kombinující sítě: 1-portová hyperkrychle: standardní výměna (půlení hyperkrychle, n kroků, v každém kroku párování v jedné dimenzi) 1D-toroid: cyklické obíhání (jednoportova half duplex, nebo obihani proti sobe v dvou portove full duplex) xD-toroid: stejne jako v AAB vice rozmernych mrizkach/toroidech - dekompozice podle kartezkeho soucinu na 1D-toroid a pak provest AAS v 1 dimenzi pak v druhe atd. WH kombinující sítě: hyperkrychle: standardní výměna (půlení hyperkrychle, n kroků, v každém kroku párování v jedné dimenzi) - neni optimalni, naproti tomu WH nekombinujici alg je optimalni mřížky a toroidy: binární výměna: simulace binární výměny - v každém kroku mřížku půlíme (v obou směrech(dimenzich)) a přenášíme informace z jedné půlky do druhé (je ale třeba více kroků kvůli zahlcení WH kanálů) výměna mezi kvadranty: rekurzivně dělíme do kvadrantů a pokaždé provedeme mikro-AAS v obdélníku (osobně vyměníme informace mezi rohovými prvky, celkem tedy 3 kroky) WH nekombinující sítě: hyperkrychle FD: přímá výměna (2n - 1 permutací) - založena na přeložení (v j-tém kroku platí x = x xor j) mřížky a toroidy: uzlům přiřadíme adresy a simulujeme přímou výměnu Přehledové tabulky Ještě je potřeba dodělat zkontrolovat/opravit/upravit. AAS a celé to projít a OAB (One-All Broadcast) https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_5 8/11 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_5 [FIT Wiki, FIT sobě] uvažuje se pouze nekombinující model (pozn. kombinující nemá smysl, protože posíláme všem naprosto stejnou zprávu) SF (Store&Forward) topologie všeportový 1-portový úplný graf a hyperkrychle záplavový algoritmus binární zdvojování - SBTn mřížky záplavový algoritmus dimenzionálně uspořádané kostry toroidy záplavový algoritmus obdobné algoritmus pro mřížky WH (WormHole) topologie výstupně všeportový 1-portový hyperkrychle dvojitý strom, Ho-Kao binární zdvojování - SBTn mřížka toroidy simulování SBTn na SF hyperkrychli ⇒ binární zdvojování 3-fázový diagonální alg. (zobecněná diagonála) binární zdvojování MC (MultiCast) uvažuje se 1-portový WH model topologie hyperkrychle lexikografické uspořádání uzlů + binární zdvojování mřížky upravený algoritmus, který se používá pro hypekrychle OAS (One-All Scatter) kombinující přepínání topologie SF WH mřížky a toroidy přizpůsobené OAB algoritmy binární zdvojování hyperkrychle binomiální kostra binomiální kostra nekombinující porty SF/WH model výstupně všeportový 1-portový hyperkrychle OASTree - hloubky Di by měly být stejné mřížky OASTree - hloubky Di se mohou různit, ale cesty mají být hranově disjunktní Ham - strategie FF Ham - cíle jsou vybírány v libovolném pořadí Ham - konstrukce hamiltonovské cesty OASTree - konstrukce OAS kostry D, skládající se z přibližně stejně velkých podstromů Di AAB (All-All Broadcast) https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_5 9/11 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_5 [FIT Wiki, FIT sobě] kombinující všeportový plně duplexní kanály 1D mřížky a toroidy více rozměrné mřížky a toroidy hyperkrychle 1-portový plně duplexní kanály poloduplexní kanály záplavový algoritmus FloodingMinDupAAB soustřeď-rozešli, simulace plně duplexních, FloodingBipartiteAAB záplavový algoritmus obdoba algoritmu pro 1D soustřeď-rozešli, simulace plně duplexních, FloodingBipartiteAAB záplavový algoritmus analogický algoritmus soustřeď-rozešli, simulace plně duplexních, FloodingBipartiteAAB FloodingMinDupAAB - střídej NODUP výměny mezi lichosudými a sudo-lichými páry FloodingBipartiteAAB - algoritmus pouze pro bipartitní topologie viz 11. přednáška nekombinující topologie mřížka Ham toroid TADT, 2 hranově disjunktní Ham hyperkrychle konstrukce generické kostry Ham - hamiltonovská kružnice TADT - časově-hranově-disjunktní stromy Přehled mezí pro hyperkrychli Qn všeportovou plně-duplexní SF nekombinující Operace OAB n AAB OAS AAS Zdroje Exfort wiki [http://exfort.org/wiki/predmety/mszz/propojovaci_site_paralelnich_pocitacu_a_komunikacni_algoritmy_x36par] Skripta X36PAR Diskuze https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_5 10/11 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_5 [FIT Wiki, FIT sobě] Vladimír Blažek, 2012/06/02 17:57 Snažil jsem se přidat nějaké přehledové tabulky, co se na daný typ komunikace používá nebo alespoň jak se na to jde. Bohužel ne všechny algoritmy jsou pojmenované a u každého typu komunikace jsou algoritmy popsány v různých kontextech (kombinující, nekombinující, porty, přepínání). Snažil jsem se to, co nejvíce zpřehlednit, ale nemusí být vše správně. Spíš by to mělo sloužit pro rychlejší orientaci a pak případně nahlédnout do skript/slidů nebo na text nad tím, kde je to popsané podrobněji. Vladimír Říha, 2012/06/02 19:19 Nemohl by mi nekdo vysvetlit tenhle pripad? u toho primeho smerovani v 2D mrizce musi byt pamet smerovace b = max(2, 2n/3-1). Pokud mam ale mrizku 3×3, pak b = 2, ale pritom kdyz mam nasledujici pripad https://www.dropbox.com/s/k1zq4fz6hj5zvgc/IMG_20120601_180607.jpg [https://www.dropbox.com/s/k1zq4fz6hj5zvgc/IMG_20120601_180607.jpg] Tak mam v jeden moment 4 pakety (uplne prostredni smerovac) Diky :) P.S.: Na obrazku uz jsem nedopisoval ostatni :) Jde jen o ten uzel [2,2] Jiří Hanousek, 2012/06/02 20:09 Ono i v těch slidech je to naprosto nejasný, není patrné, co je vlastně n, a jestli je to jedna dimenze mřížky, tak je hned nad tím příklad, kdy v M3,3 jsou na jednom uzlu také 3 packety.. Jiří Hanousek, 2012/06/02 20:10 Taže bych tento detail asi nechal plavat, fornta není konstatntní, to je jasný, ale tohle číslo je prostě divné. Vladimír Blažek, 2012/06/02 20:38 Ano n je rozměr jedné z dimenzí mřížky a ve skriptech je tohle směrovaní definované pro čtvercovou dvourozměrnou mřížku tedy M(n,n). Ty tři pakety tam jsou proto, že do fronty se ukládají pakety, které jsou ve směrovači navíc tj. na směrovači může být b+1 paketů. Ale to je jen moje domněnka, protože jinak by to bylo extra divné. Pak by ještě bylo možné, že fronta je pouze pro pakety, které není možné v dalším kroku odeslat, ale to se mi samotnému nezdá. Jak jsem psal předtím, možná by stálo za to se na to Tvrdíka zeptat :). Vladimír Říha, 2012/06/02 22:09 Asi to nebudu vazne resit, ale ani to b+1 by pro ten muj pripad neplatilo, pokud te chapu spravne. Ta druha myslenka mne taky napadla, ale smerovac neni cerna dira a nekam je snad aspon na chvili ulozit musim :) Vladimír Blažek, 2012/06/02 23:35 Jo chápeš mne správně. Mně se jen nechtělo přepisovat ten předchozí post. Tam jsem psal, že mi to pro ten tvůj příklad taky nevychází. Jiří Pavelka, 2012/06/07 01:42 Oprava: logaritmická spodní mez OAB WH není pro všeportovou komunikaci, ale jednoportovou (skripta, str. 174). Nedávalo by to ani smysl, když d-portová je log_d+1… Takhle to sedí jakoby pro d=1, tedy spodní mez je log_2… https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_5 11/11 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_6_2013 [FIT Wiki, FIT sobě] PAR - MSZZ - 6. okruh Poznámka Překlopeno z verze před 2013 (spojené otázky 6-9) Zadání Základní paralelní algoritmy na PRAM a sítích počítačů (paralelní redukce a prefixový výpočet nad polem a spojovým seznamem, konstrukce Eulerovy cesty v grafu). Základní pojmy Pojem Základní paralelní NC algoritmy na PRAM a sítích počítačů Třída NC („Nick's Class“) je množina jazyků rozhodnutelných v nejvýše polylogaritmickém čase na počítači PRAM s nejvýše polynomiálním počtem procesorů . Definice třídy NC vznikla jako přirozený důsledek faktu, že mnoho důležitých problémů je na PRAM řešitelných v polylogaritmickém čase. Jsou to problémy se sekvenční složitostí od . přibližně do Třída NC zahrnuje: 1. redukci a prefixový součet 2. třídění a výběr k-tého prvku nesetříděné posloupnosti 3. maticové operace (násobení matic, řešení soustav lineárních rovnic) 4. kontrakce stromu a vyhodnocování výrazů 5. konstrukce eulerovské cesty v grafu a odvozené algoritmy 6. konstrukce souvislých komponent grafu 7. algoritmy pro 2-souvislost a 3-souvislost 8. mnoho problémů ve výpočetní geometrii 9. porovnávaní a vyhledávání textových řetězců Paralelní redukce jedná se o provedení binární operace se všemi prvky pole (pokud je daný binární operátor asociativní, je redukce krásně paralelizovatelná) https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_6_2013 1/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_6_2013 [FIT Wiki, FIT sobě] je optimální na hyperkubických sítích (normální hyperkubický algoritmus) WH lineární pole, hyperkrychle, EREW PRAM: jednoduše přímo se složitostí O(log n) mřížky: po dimenzích - nejprve lokální výpočet a pak paralelní Prefixový výpočet nad polem má stejnou škálovatelnost jako paralelní redukce, je rovněž normální hyperkubický pro pole X je výstupem pole Y, kde Y[i] je součet prvních i prvků pole X aplikace: RadixSort, paralelní binární sčítačka s predikcí přenosu, packing problem EREW PRAM Pro predstavu, bunka „pricte“ svoji hodnotu do bunky o 1 vedle, v dalsim kromu o 2, pak o 4… ve stylu 2^krok Nepřímý strom výšky h(T) hodnoty pouze v listech (tj. nepřímý) v 2 · h(T) krocích: 1. vzestupná vlna spouští h(T) sestupných vln: I. uzel vezme součet svých potomků a pošle ho svému rodiči II. hodnotu levého potomka pošle pravému potomkovi 2. sestupná vlna: příchozí hodnotu rodič rozkopíruje svým potomkům (pokud je listem, přičte ji ke své hodnotě) https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_6_2013 2/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_6_2013 [FIT Wiki, FIT sobě] Přímý strom výšky h(T) ve všech uzlech jsou hodnoty (tj. přímý) v 2 · h(T) krocích strom je namapován v pořadí postorder na pole A vlny: 1. vzestupná: rodič sečte svou hodnotu a hodnoty všech svých potomků, součet pošle svému rodiči druhému potomkovi posílá hodnotu prvního potomka, třetímu potomkovi součet hodnot prvních dvou, atd. 2. sestupná: rodič pošle příchozí hodnotu svým potomkům a navíc ji přičte ke své hodnotě Hyperkrychle Qn jako vysílání všichni všem v SF modelu (zelený registr pro součet všech čísel, žlutý registr pro prefixový součet) Neformální popis: V každém kroku se posílají čísla ze zeleného registru. Pokud je hodnota poslána z menšího čísla uzlu, je hodnota přidána do obou registrů, pokud je hodnota poslána z většiho čísla registru, je přičtena pouze do zeleného registru. https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_6_2013 3/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_6_2013 [FIT Wiki, FIT sobě] Mřížky a toroidy hodnoty se pošlou do pravého sloupce, pak v tomto sloupci do všech řádků a nakonec dojde k doinformování v řádcích (směrem doleva) nebo-li 1. hodnoty z levých uzlů (lexikograficky menší) se posílají v řádků do pravých uzlů (lexikograficky větší), posílá se vždy hodnota, která je rovna součtu hodnot dosud navštívených uzlů v daném řádku (analogie sněhové koule :)) – na konci tohoto kroku má první řádek konečná čísla (v obrázku lze vidět jako žluté uzly v druhém kroku) 2. hodnota z uzlu v posledním sloupci prvního řádku se pošle ve sloupci do nižších uzlů (lexikograficky větší) (opět sněhová koule) – na konci tohoto kroku má první řádek a poslední sloupec konečná čísla (v obrázku lze vidět jako žluté uzly ve třetím kroku) 3. hodnoty z posledního sloupce se pošlou zpět směrem k prvnímu sloupci, ale vždy se posílá v daném řádku hodnota (stále stejná pro celý řádek), která je o řádek výš (první řádek je v této fázi kompletní, takže se žádná hodnota neposílá) – na konci tohoto kroku jsou všechna čísla konečná (v obrázku lze vidět jako žluté uzly v posledním kroku) 4. hotovo https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_6_2013 4/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_6_2013 [FIT Wiki, FIT sobě] Pro 1D WH mrizku se to da predstavit jako PPS na primem stromu akorat splacatelem do 1D mrizky. Segmentovaný prefixový součet vstupní pole rozděleno do segmentů, úkolem je spočítat prefixový součet v rámci jednotlivých segmentů trik: speciální úprava binárního operátoru aplikace muze byt treba EREW paralel quick sort Upravený binární operátor je definován takto https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_6_2013 5/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_6_2013 [FIT Wiki, FIT sobě] Přeskoky ukazatelů a výpočet nad zřetězeným seznamem výpočet pořadí v zřetězeném seznamu reprezentovaného polem následníků předpokládá p = n zakladni myslenkou je pointer jumping inicializace: vsem nastavim poradi („rank“) na 1 krom prvniho (predpokladame ze pocitame vzdalenost od zacatku seznamu) tomu dam rank na 0. v každém z log p kroků se provede přičtení pořadí předchůdce a předchůdce se nastaví na předchůdce předchůdce (jinak: Každý ukazatel má váhu (vzdálenost od konce, na začátku mají všechny 1) v log p krocích u každého uzlu vždy přičtu do hodnoty svého ukazalete hodnotu ukazatele svého potomka a PAK změním svůj ukazatel tam, kam ukazuje můj potomek. ) Zkusím ještě jinak „algoritmicky“ ze slidů: R[i] := R[i] + R[S[i]]; S[i] := S[S[i]], kde R je pole ranků a S je pole ukazatelů na následníka (successor). Čili nejdřív ke svému ranku přičtu rank svého následníka a potom svůj ukazatel na následníka nastavím stejně, jako to má ten můj současný následník. umožňuje transformovat zřetězený seznam na lineární pole prefixový součet stejné jako výpočet pořadí, jen se nesčítají pořadí, ale hodnoty v uzlech (přeskoky ukazatelů k předchůdcům fungují stejně) Konstrukce Eulerovy cesty v grafu Eulerovská cesta vede přes všechny hrany právě jednou (rozpor s TIN: Kolář toto označuje jako Eulerův tah, protože v cestě se musí vyskytovat každý uzel právě jednou) Eulerovský graf musí mít sudý stupeň všech uzlů nebo právě dva uzly lichého stupně neorientovaný strom muže být transformován na eulerovský, je-li každá hrana nahrazena dvojicí anti-paralelních hran (to jsou hrany, které vytvoří mezi dvěma uzly cyklus) https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_6_2013 6/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_6_2013 [FIT Wiki, FIT sobě] pole uzlů Adj - obsahuje ukazatel do seznamu hran AA pole hran AA - skládá se z podseznamů hran vycházejících z jednotlivých uzlů, položkou pole je tedy hrana, následník a anti-paralelní dvojče Samotna konstrukce eulerovy cesty: vytvor pole ET tak ze pro každou hranu e v AA (do in parallel): ET[e] := AA[e].sib.next. Po skonceni ET bude reprezentovat cyklický zřetězený seznam následníků reprezentující Eulerovskou kružnici (v podstatě jde o pohyb v bludišti metodou „na všech rozcestích zahni vpravo“ zaručující vrácení do výchozí pozice, pokud neexistuje východ z bludiště) EREW PRAM zvladne vsechny hrany paralelne a tudiz T(n,p) = O(m/p). m je pocet hran slouží jako základ pro široké spektrum paralelních výpočtů, např. výpočet minimální kostry, testování planarity, testování souvislosti grafu, … Diskuze https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_6_2013 7/7 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_7 [FIT Wiki, FIT sobě] PAR - MSZZ - 7. okruh Poznámka Překlopeno z verze před 2013 (spojené otázky 6-9) Zadání Paralelní řadící sítě a 0-1 lemma. Mřížkové a hyperkubické paralelní algoritmy pro řazení. Základní pojmy Pojem Paralelní algoritmy pro třídění, třídicí sítě a 0-1 lemma základní operací je porovnej-a-vyměň (C&E) třídíme N čísel sekvenční algoritmus má složitost O(n · log n) Třídicí sítě nepřímá složená z komparátorů (dva vstupy a vrací maximum a minimum, jde tedy o HW implementaci operace C&E) uspořádaných do sloupců (je jich stejně jako počet vstupních dat) počet paralelních C&E kroků = hloubka sítě = délka nejdelší cesty ze vstupu na výstup pokud je N > k, kde k je počet vstupních vodičů, tak se na každý vstup přivádí čísel a komparátory provádějí operaci sluč-a-rozděl (Merge-and-Split - M&S) spodní mez je rovna hloubce sítě statická, realizuje datově necitlivý algoritmus přímá složená z p procesorů, které jsou vhodně lineárně indexovány v každém kroku se vytvoří úplné párování uzlů - každá dvojice uzlů provede C&E (M&S pokud p < N) realizace M&S: 1. plně duplexní kanály: Pi a Pj si vymění své podposloupnosti, každý provedem M&S a nechá si svou půlku podposloupnosti 2. poloduplexní kanály: Pi pošle svou podposloupnost procesoru Pj, ten provede M&S a vrátí procesoru Pi první polovinu výsledku spodní mez je rovna průměru sítě statická, realizuje datově necitlivý algoritmus Naivní PRAM algoritmus místo M&S se provádí slučování - O(k) operací postup: 1. P1 předá informace o tříděné posloupnosti ostatním (O(log(p))). Cili kazdy procesor dostane prideleny svuj kus. 2. každý procesor setřídí svou posloupnost o velikosti v čase 3. (log p)-krát budeme slučovat posloupnosti do dvakrát větších (začneme na velikosti posloupnosti ) špatně škálovatelný! 0-1 třídicí lemma https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_7 1/5 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_7 [FIT Wiki, FIT sobě] Jestliže datově necitlivý třídící algoritmus dokáže setřídit libovolnou binární vstupní posloupnost, pak dokáže setřídit libovolnou vstupní posloupnost. Důkaz Předpokladem je datově necitlivý (provadi se stejne kroky ve stejnem poradi navzdory tomu jaka data jsou na vstupu) algoritmus: Provádí stejné kroky při jakýchkoli posloupnostech (setříděné, nesetříděné, složené z jednoho čísla..). Pokud algoritmus setřídí jakoukoli binární posloupnost a nesetřídí jednu nebinární, pak existují dvě čísla (z lib domeny) taková, že je na výstupu před . Stačí tedy definovat funkci f(z), která přiřadí binární číslo číslu z: 0, pokud 1, pokud f(z) je nyní monotónně rostoucí (pro 2 argumenty zachovává jejich uspořádání) a binární - číslu přiřadí 0 a číslu přiřadí 1 - na výstupu je však 1 před 0, nejsou tedy seřazeny, což je spor s předpokladem, že řadí všechny binární posloupnosti. Nevím, jestli by tu měl být i důkaz o datové necitlivosti vůči monotónní fci - Mám třídící síť a je jedno, jestli čísla seřadím, a pak na ně aplikuji f(), nebo jestli na čísla nejdříve aplikuji f() a pak až je seřadím. Třídění na mřížkách typ mřížky algoritmus 1D mřížka Paralelní BubbleSort (sudo-liché transpozice) 2D mřížka ShearSort 3D mřížka 3DSort Paralelní BubbleSort třídění sudo-lichými transpozicemi na lineárním poli N kroků, špatná škálovatelnost (jako naivní PRAM algoritmus) ShearSort na 2D mřížce M(n, m) N = m · n procesorů cílem je setřídit data hadovitě po řádcích střídavě řadí řádky střídavými směry - hadovitě radky ( -krát) a sloupce směrem dolů ( -krát). Celkem tedy Nastin dukazu proc to trva tolik kroku je ve scriptech. Pro vzpomenuti porovnavaji se tam dva neciste radky co se s nimi stane po jedne radkove a sloupcove fazi a vychazi z toho ze redukce necistych radku je na polovinu a z toho ten logaritmus. Modifikovaný algoritmus s tříděním řádků stejným směrem nefunguje! 3DSort (Lexikografické řazení) https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_7 2/5 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_7 [FIT Wiki, FIT sobě] 1. setřídíme xz roviny (v zx pořadí) 2. setřídíme yz roviny (v zy pořadí) 3. setřídíme xy roviny (v yx pořadí střídavě ve směru y) 4. provedeme jednu licho-sudou a jednu sudolichou transpozici ve všech sloupcích paralelně 5. setřídíme xy roviny v yx pořadí Na M(n,n,n) setridi N = n^3 v case O(3odm(N)*log(N)) za predpokladu ze pro roviny je pouzit ShearSort Třídění na hyperkubických sítích základem je klasický sekvenční MergeSort [http://www.youtube.com/watch?v=GCae1WNvnZM] Batcherovy algoritmy 1. Sudo-Lichý MergeSort (EOMS) 2. Sudo-Sudý MergeSort (EEMS) 3. Bitonický MergeSort (BMSort) realizace: 1. řadicí nepřímá síť 2. motýlek 3. hyperkrychle 4. simulace na mřížkách Sudo-lichý MergeSort , kde EOMerge je sudo-liché sloučení slučujeme dvě posloupnosti A a B do výsledné posloupnosti L C = EOMerge(even(A), odd(B)) - tedy setřídíme sudé prvky z A s lichými z B D = EOMerge(odd(A), even(B)) - tedy setřídíme liché prvky z A se sudými z B L' = Promichani(C, D) - „srovnáme“ odpovídající prvky za sebe L = EOMerge(A, B) = Párované_C&E(L') - porovnáme odpovídající si prvky EOMerge potřebuje kroků a komparátorů (tohle je imho blbě. To N před závorkou by spíš měl být počet komparátorů v jedné řadě N/2. Je to tady totiž podle skript kde je velikost vstupních dat 2N.) EOMS potřebuje pro čísel kroků a https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_7 komparátorů 3/5 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_7 [FIT Wiki, FIT sobě] Sudo-sudý MergeSort slučuje se sudá posloupnost se sudou a lichá s lichou ⇒ odpadne jeden komparátor na konci EEMerge slučujeme dvě posloupnosti A a B do výsledné posloupnosti L C = EEMerge(even(A), even(B)) - tedy setřídíme sudé prvky z A se sudými z B D = EEMerge(odd(A), odd(B)) - tedy setřídíme liché prvky z A s lichými z B L' = Sudo_Liche_Promichani(C, D) - „srovnáme“ odpovídající prvky za sebe L = EEMerge(A, B) = Párované_C&E(L') - porovnáme odpovídající si prvky Bitonický MergeSort posloupnost je bitonická, pokud má jedno údolí a jeden vrchol (nezávisle na posunutí) Bitonické rozdělení bitonické posloupnosti A: platí: 1. AL i AH jsou opět bitonické https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_7 4/5 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_7 [FIT Wiki, FIT sobě] 2. každé číslo v AL je menší než libovolné číslo v AH rekurzivním prováděním bitonického rozdělení dosáhneme monotonní posloupnosti základní operací je BMerge, která dostane na vstup dvě posloupnosti délky N (jednu vzestupně, druhou sestupně setříděnou) a do hloubky aplikuje operaci BR BR lze implementoval pomocí C&E komparátorů Diskuze https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_7 5/5 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_8 [FIT Wiki, FIT sobě] PAR - MSZZ - 8. okruh Poznámka Překlopeno z verze před 2013 (spojené otázky 6-9) Zadání Paralelní algoritmy pro lineární algebru (transpozice matice, násobení matice vektorem, násobení matic, řešení soustav lineárních rovnic). Základní pojmy Pojem Hlavní část Paralelní algoritmy pro lineární algebru Mapování prvků na procesory: 1. proužkové (pro procesory v 1D mrizce): I. blokově - rozdělíme matici na p stejných částí (poslední může být menší) a každý procesor dostane jednu II. cyklicky - procesor pi pracuje se všemi řádky Rj, pro které III. blokově cyklicky - kombinace předchozích IV. výše uvedené navíc buď řádkově, nebo sloupově (tj. 6 variant) 2. šachovnicové (pro procesory v 2D mrizce): matici rozdělujeme na submatice také blokově / cyklicky / blokově cyklicky Transpozice matice namapovaná proužkově: AAS namapovaná šachovnicově: permutační směrování SF 2D mřížka: všechny submatice v řádcích jsou současně vyslány horizontálně (jdou pekne v pipeline) směrem k procesorům na diagonále, kde jsou zalomeny do sloupců - kroků WH 2D mřížka: kol - podobna myslenka jako u SF akorat zde neni mozny pipeline (ve scriptech je naznaceno obrazkem) hyperkrychle: vnořena Qq do mřížky kde (peanova krivka) rekurzivní dělení na čtvrtiny výměna posunem mezi diagonálně symetrickými částmi https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_8 1/4 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_8 [FIT Wiki, FIT sobě] kroků pro Násobení matice vektorem mapování po řádcích: 1. každý procesor pošle svůj subvektor vektoru všem ostatním (AAB) 2. každý procesor výpočte svůj subvektor vekrotu mapování po sloupcích: 1. každý může okamžitě spočítat svůj příspěvek k výslednému vektoru 2. provede se paralelní redukce s operací sčítání všech se všemi šachovnicové mapování: (vektor x je namapovan na nejpravejsich procesorech) 1. pravé krajní procesory pošlou svůj subvektor diagonálním procesorům ve stejném řádku šachovnice 2. ty informují o subvektoru svůj sloupec (OAB) 3. každý procesor vynásobí lokálně submatici a subvektor 4. v každém řádku se provede paralelní redukce s kořenem v pravém krajním procesoru - vysledny vektor bude zase namapovany jako pocatecni vektor x, to se hodi kdyz se iterativne nasobi vektor matici. Násobení matic naivní algoritmus Je realizovan na 3D mrizce. každý procesor Pi, j, k spočítá součin ai, j bj, k a procesory Pi, *, k provedou součet příslušných součinů pomocí paralelní redukce s kořenem v Pi, 1, k Neoverena predstava co jsem vykoukal ze zapisu alg.: Dejme tomu ze matice namapuji na steny, dejme tomu predni a bocni toho kvadru - ty steny poslu do hloubky aby i vnitrni procesory meli matice A a B a ne jen stenove procesory. Prvni krok si vykona to nasobeni. Druhy krok provadi redukci, cili pro predstavu jako by kdyz ten kvadr zmacknu ze zhora a zespoda a vysledna matice C se mi objevi na spodni (pokud mam nulovou souradnici dole) strane kvadru. méně naivní algoritmus matice n × n na mřížce mapována blokově šachovnicově pro výpočet Ci, k musíme znát celou řádkovou submatici Ai, * a celou sloupcovou submatici B*, k paměťově neefektivní postup: 1. procesory v jednom řádku vyšlou svou submatici (AAB) 2. procesory v jednom sloupci vyšlou svou submatici (AAB) 3. lokální výpočet https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_8 2/4 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_8 [FIT Wiki, FIT sobě] Cannonův algoritmus (toroid) Realizovan na 2D toroidu Faze 1: všechny submatice matice v řádku i se orotují o i - 1 pozic doleva Faze 2: všechny submatice matice ve sloupci k se orotují o k - 1 pozic nahoru Faze 3 (počet-řádků-krát): 1. P[i,k] vynásobí momentální submatice a přičte do výsledné C[i,k] (pro všechna i,k) 2. všechny submatice 3. všechny submatice , v řádku i se orotují o 1 pozici doleva (pro všechna i) , ve sloupci k se orotují o 1 pozici nahoru (pro všechna k) Výsledek první a druhé fáze je vidět v první iteraci třetího fáze. Modrá políčka samozřejmě odpovídají a červená matici . matici Foxův algoritmus Podobny jako cannonuv ale matice A se neposouva, pouze se broadcasti a rotuje se matice B. v každém kroku (je jich opět ): 1. jeden procesor z každého řádku rozešle svou submatici A do svého řádku (OAB) posílající procesory tvoří diagonálu, která se v každém kroku posouvá 2. přičte se součin aktuálních submatic 3. všechny submatice B se orotují nahoru o 1 (čímž dostaneme novou diagonálu) https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_8 3/4 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_8 [FIT Wiki, FIT sobě] Rotují se pouze fragmenty matice B, což je vidět i z obrázku, nová diagonála je určena tím, že v každém řádku broadcastuje procesor o +1 mod počet prvků v řádku. Na začátku jsou broadcastující procesory nastaveny na k+1(mod počet prvků v řádku) , kde i = k v každém řádku. A v každém cyklu k = Řešení soustav lineárních rovnic tridiagonální soustava rovnic: redukcí, kdy se do sudých rovnic dosazují proměnné vyjádřené z lichých rovnic (v každém kroku klesá počet neznámých na polovinu) řešení soustav lineárních rovnice s více pravými stranami: , kde je vektor pravých stran LU dekompozice: A = LU, kde L je dolní trojúhelníkovitá matice a U horní trojúhelníková matice postupujeme po hlavní diagonále a střídavě počítáme řádky U a sloupce L 1. dopředná redukce: pro každé hledáme 2. zpětná substituce: pro každé řešíme splňující předchozí krok implementujeme tak, že rozesíláme submatice z vrchního řádku po sloupcích dolů a submatice z levého sloupce po řádcích doprava a tim se nam pocitany prostor zmensuje. Jacobiho iterační metoda: iteruje, dokud není reziduální (zbytkový) vektor dostatečně malý Diskuze https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_8 4/4 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_9 [FIT Wiki, FIT sobě] PAR - MSZZ - 9. okruh Poznámka Překlopeno z verze před 2013 (spojené otázky 6-9) Zadání Paralelní algoritmy pro prohledávání stavového prostoru. Paralelní metoda větví a hranic. Základní pojmy Pojem Paralelní algoritmy pro prohledávání prostoru, paralelní metoda větví a hranic stavového používají se varianty prohledávání do hloubky procesory by měly být pokud možno stále vytíženy prohledáváním pokud možno disjunktních částí stavového prostoru vyváženost výpočetní zátěže 1. statické rozdělení každý procesor dostane na začátku přiděleno určité množství práce až svou práci dokončí, procesor je již až do konce výpočtu neaktivní neefektivní - velmi záleží na tom, v jaké části stavového prostoru (vzhledem k hranicím jednotlivých částí) se řešení nachází 2. dynamické vyvažování zátěže I. na začátku P0 přiřadí procesorům pokud možno disjunktní části stavového prostoru II. každý procesor je buď aktivní, nebo nečinný III. každý aktivní procesor provádí DFS (Depth-first search) ve své přidělené části stavového prostoru (s použitím lokálního zásobníku) IV. když aktivní procesor vyprázdní svůj zásobník a řešení stále ještě není nalezeno, stane se nečinným a žádá jiné procesory o další práci (přidělení nějaké neprozkoumané části stavového prostoru) Algoritmy pro dělení zásobníku na počátku procesor P0 provede dostatek expanzí, rozdělí zásobník na p částí a iniciativně pošle všem ostatním procesorům jejich první zásobníky. Nebo v zavislosti na strategii hledani darce muze P1 pockat a ostatni procesory se ho postupne doptaji na praci. postupným půlením rozdělí dárce svůj zásobník na k + 1 částí, kde k je počet žádostí od nečinných procesorů v jeho frontě zpráv oba podzásobníky vzniklé půlením by měly reprezentovat prohledávané podprostory https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_9 1/5 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_9 [FIT Wiki, FIT sobě] přibližně téže velikosti neexpandované stavy blízko dna zásobníku skrývají pravděpodobně větší části prohledávaného prostoru, zatímco stavy blízko vrcholu zásobníku skrývají spíše menší podprostory tudíž: položky nad tzv. řeznou výškou H (popripade V) se žádajícím procesorům již nepředávají Algoritmy: 1. půlení stavů poblíž dna zásobníku (Dárce dostane polovinu ze stavů u dna zásobníku): vhodné, jestliže je prohledávaný prostor stejnoměrný 2. půlení stavů poblíž řezné výšky zásobníku (Dárce dostane polovinu ze stavů u řezné výsky): funguje dobře v kombinaci se silnou heuristikou (např. Best-First), která upřednostňuje mezistavy bližší cílovým uzlům 3. půlení stavů podél celého zásobníku (Dárce dostane polovinu všech stavu mezi dnem a řeznou výškou): vhodné v případech jak rovnoměrně tak nepravidelně strukturovaného prohledávaného prostoru Algoritmy pro hledání dárce 1. Asynchronní cyklické žádosti každý procesor si udržuje lokální čítač D (index potenciálního dárce) jestliže se procesor stane nečinným, požádá potencionálního dárce D a inkrementuje čítač může se stát, že jeden procesor je žádán více procesory z počátku lokální komunikace může přejít v globální komunikaci 2. Globální cyklické žádosti procesor P0 udržuje globální sdílený čítač D jestliže se nějaký procesor stane nečinným, požádá P0 o aktuální hodnotu D - P0 odpoví a inkrementuje D po sobě přišlé žádosti o práci jsou zaručeně distribuovány rovnoměrně po procesorech hlavní nedostatek: úzké hrdlo = přístup ke sdílené hodnotě D řešení: kombinování žádostí (serializace) do jedné žádosti 3. Náhodné výzvy nečinný procesor generuje náhodně index jednoho ze zbylých procesorů, každý procesor může být vybrán se stejnou pravděpodobností ve většině případů jsou žádosti distribuovány rovnoměrně komunikace nezachovává lokalitu 4. Topologičtí sousedé dárce je vybrán z množiny sousedů (ve vzdálenosti 1), pak z množiny sousedů sousedů (vzdálenost 2), … až do určité meze vzdálenosti nedostatek: pomalejší distribuce lokální koncentrace práce mezi vzdálenější nečinné procesory 5. Nevyvážené páry každý procesor si udržuje čítač D (počáteční hodnota 0) předpokládejme, že procesory jsou indexovány čísly od 0 do p - 1 (pokud možno https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_9 2/5 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_9 [FIT Wiki, FIT sobě] konstrukcí hamiltonovské kružnice v dané propojovací síti) nečinný procesor hledá dva nebližší procesory Pi a Pi + 1 takové, že D(Pi) > D(Pi + 1) I. pokud takový pár existuje, dárcem se stává Pi + 1 (pošle práci a inkrementuje svůj čítač) II. pokud takový pár neexistuje, všechny procesory obsloužily stejný počet žádostí a je požádán P0 (začíná se nové kolo) Algoritmy pro distribuované ukončení výpočtu 1. Dijkstrův peškový ADUV podmínka použití: statická distribuce práce předpokládejme, že procesory jsou indexovány čísly od 0 do p - 1 (pokud možno konstrukcí hamiltonovské kružnice v dané propojovací síti) princip: I. stane-li se P0 nečinným, pošle peška procesoru P1 II. obdrží-li Pi peška, pošle ho procesoru P(i + 1) mod p jakmile se stane nečinným III. obdrží-li P0 peška zpět, všechny procesory ukončily výpočet 2. Modifikovaný Dijstrův peškový ADUV podmínka použití: dynamické vyvažování zátěže a číslování procesorů jako u nemodifikované varianty na počátku jsou všechny procesory bílé princip: I. stane-li se P0 nečinným, pošle bílého peška procesoru P1 II. pošle-li dárce Pi práci příjemci Pj a i > j (tj. proti směru běhu peška – dárce leží vpravo od příjemce), pak se dárce stane černým III. obdrží-li Pi peška a je-li Pi černý, obarví peška na černo IV. jakmile se procesor z předchozího kroku stane nečinným, předá peška dalšímu procesoru P(i + 1) mod p a sám se opět stane bílým V. obdrží-li P0 zpět bílého peška, výpočet lze ukončit - jinak P0 nastartuje nové kolo s novým bílým peškem Černý pešek v P0 značí, že některý z procesorů posílal práci procesoru, který již předtím poslal peška dále a při průchodu peška „tvrdil“, že již nemá nic na práci, což již teď nemusí platit (je možné, že už opět nemá práci, ale 100% jisté to není). Proto provedu další průchod. 1. Stromový ADUV určeno pro dynamické vyvažování zátěže princip: I. na počátku má P0 váhu w0 = 1 a ostatní procesory mají nulovou váhu II. stane-li se procesor Pi dárcem pro procesor Pj, Pi nastaví https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_9 a Pj 3/5 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_9 [FIT Wiki, FIT sobě] nastaví III. dokončí-li Pj práci, pošle svou váhu wj zpět svému dárci, který ji přičte ke své váze IV. má-li P0 váhu w0 = 1 a je-li nečinný, výpočet může být ukončen nedostatek: váhy mohou podtékat nebo se vynulovat (je třeba volit správnou aritmetiku) Strategie pohybu stavovým prostorem 1. Paralelní DFS (Depth-first search, prohledávání do hloubky) pokud existuje řešení, pak procesor, který nalezne první řešení: I. pošle toto řešení procesoru P0 II. zprávou jeden-všem pošle všem procesorům žádost o ukončení výpočtu pokud úloha nemusí mít řešení, je nutné zabudovat jeden z algoritmů pro ukončení výpočtu 2. Paralelní metoda větví a hranic s vždy úplným prohledáváním všechny procesory znají hodnotu horní meze hloubky prohledávání hodnota přesné spodní meze ceny řešení není známá každý procesor si lokálně pamatuje své dosud nejlepší řešení po vyprázdnění všech zásobníků se provede jeden z algoritmů pro ukončení výpočtu pomocí paralelní redukce se ze všech nejlepších lokálních řešení vybere globálně nejlepší řešení 3. Paralelní metoda větví a hranic s postupným prohlubováním prohledavanim zavislym na datech všechny procesory znají hodnotu horní meze hloubky prohledávání i hodnotu přesné spodní meze ceny řešení lokální varianta každý procesor si pamatuje lokálně nejlepší řešení pokud řešení s cenou rovnou spodní mezi neexistuje, pak je to stejné jako paralelní metoda větví a hranic s vždy úplným prohledáváním je-li nalezeno řešení s cenou rovné spodní mezi, pak procesor, který toto řešení nalezl, ukončí výpočet vysláním zprávy typu jeden-všem globální varianta každý procesor, který nalezne lepší řešení než je nejlepší jemu známé řešení, neaktualizuje pouze svou informaci, ale rozešle zprávu typu jedenvšem ostatním procesorům je-li nalezené řešení optimální, pak je to opět signál pro ukončení výpočtu jinak proběhne po vyprázdnění všech zásobníků distribuované ukončení výpočtu pomocí jednoho z algoritmů (bez nutnosti následné redukce lokálních řešení) globální varianta má vyšší komunikační režii, ale prohledá větší část stavového prostoru https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_9 4/5 12/9/13 škola:předměty:mi-par:par_szz:par_szz_okruh_9 [FIT Wiki, FIT sobě] Diskuze https://www.fit-wiki.cz/škola/předměty/mi-par/par_szz/par_szz_okruh_9 5/5