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
Download

1. okruh Kritéria pro hodnocení složitosti paralelních výpočtů