Hotfix release available: 2025-05-14b "Librarian".
upgrade now! [56.2] (what's this?)
Hotfix release available: 2025-05-14a "Librarian".
upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian".
upgrade now! [56] (what's this?)
Hotfix release available: 2024-02-06b "Kaos".
upgrade now! [55.2] (what's this?)
Hotfix release available: 2024-02-06a "Kaos".
upgrade now! [55.1] (what's this?)
New release available: 2024-02-06 "Kaos".
upgrade now! [55] (what's this?)
Hotfix release available: 2023-04-04b "Jack Jackrum".
upgrade now! [54.2] (what's this?)
users:martin.kocicka:pdp:6b
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
users:martin.kocicka:pdp:6b [2017/06/13 10:10] – martin.kocicka | users:martin.kocicka:pdp:6b [2017/06/13 10:16] (current) – martin.kocicka | ||
---|---|---|---|
Line 20: | Line 20: | ||
:!://Viz skripta CZ [2006] str. 87 nebo EN [2009] str. 70// | :!://Viz skripta CZ [2006] str. 87 nebo EN [2009] str. 70// | ||
- | {{: | + | {{: |
< | < | ||
Line 237: | Line 237: | ||
====== Teorie a důkazy ====== | ====== Teorie a důkazy ====== | ||
- | ===== Dokažte, že e-cube směrování v Qn při zhuštění je bezkolizní ===== | ||
- | ★ //Bylo ve zkoušce: [[.: | ||
- | |||
- | ==== Řešení ==== | ||
- | |||
- | //viz skripta {{: | ||
- | |||
- | Důkaz je induktivní, | ||
- | Jelikož je to sousední dvojice, tak i ve výsledku budou sousední v tomto pořadí (z definice zhuštění). | ||
- | |||
- | Tedy mohou nastat dva případy : | ||
- | |||
- | - " | ||
- | - " | ||
- | |||
- | :?: Jak se může v druhém bodu vnořit do jiné podkrychle, když permutoval na nejnižším bitu (a ne na nejvyšším)? | ||
- | |||
- | Pozn: Neni tady nahodou ta druha cast spatne? Ja bych rekl, ze ten nejnizsi bit je ten nejvic v pravo. | ||
- | |||
- | |||
- | Pozn: Zhusteni zachovava poradi, takze kdyz jeden paket zacina na uzlu s poslednim bitem = 0 a druhy vedle nej, tedy s poslednim bitem = 1, budou i ve vysledku muset mit v cili posledni bit roven: jeden 0 a druhy 1 nebo opacne) Proto mame 2 moznosti viz vyse. | ||
- | |||
- | Zaroven se tu pouziva e-cube smerovani, ktere postupne porovnava bity zdrojoveho a ciloveho uzlu - pokud se nelisi (prvni pripad, protoze posledni bit v cili ccc0 a zdroji bbb0 je stejny), posle ty 2 pakety pod sebou rovne => nedojde ke kolizi. | ||
- | V druhem pripade se zdrojovy a cilovy uzel lisi v poslednim bite => bude se lisit i u zdroje a cile toho druheho paketu. Opet e-cube porovna i-ty bit zdroje a cile a pokud se lisi, posle pakety krizem => opet nebude kolize - nenabouraji do sebe | ||
- | |||
- | Ještě přidám moji verzi (bliznjan): V i-tém kroku (kroky i bity indexuji od nuly, bity indexuji zprava od nejnižšího) řeším vzájemně pouze ty dvojice paketů, jejichž souřadnice se liší právě v i-tém bitu zprava (jinak by v Qn nebyly v sousedních uzlech). Kolize by mohla nastat, kdybych takovouto dvojici paketů chtěl přesunout do stejného uzlu, tedy na stejné souřadnice. Vzhledem k e-cube směrování už mám bity vpravo (nižší) vyřešené a mohou se v následujících krocích měnit už jen vyšší bity, ale ty se naopak zatím neměnily. U dvou paketů, co zrovna řeším, tudíž platí, že jejich vyšší bity byly od začátku rovny, takže na začátku (i teď) byly od sebe vzdálené o méně než < | ||
- | ===== Dokažte, že neúplná online permutace zhuštění na indBFn je bezkolizní ===== | ||
- | Popište, jak si procesory na zadané indBFn zjistí pořadí, když lokálně mají jen flag 0/1 (zda patří do množiny) a následně proveďte neúplnou online permutaci zhuštění procesorů s flagem 1. Dokažte, že online směrování na indBF je pro ni bezkolizní | ||
- | |||
- | ★ //Bylo ve zkoušce: [[.: | ||
- | |||
- | ==== Řešení ==== | ||
- | |||
- | zjištění cílového umístění, | ||
- | |||
- | {{ : | ||
- | |||
- | V podstatě stejné jako [[škola: | ||
- | |||
- | Důkaz je ve slidech, slide 31 přednáška 9 (pro oBFn, ale to je v skoro to samé). | ||
- | |||
- | Minimální směrování v indBFn funguje tak, že se porovnají adresy cíle a zdroje (postupně od LSB k MSB, v každé úrovni jeden). Když se bit adresy zdroje a cíle liší, tak se jde směrovačem křížem, když se neliší, tak se jde rovně. | ||
- | |||
- | Kolize může nastat v 1. úrovni motýlka pouze pro sousední uzly (tedy např. zdrojové uzly bbbb0 a bbbb1). Ty se permutují buď na uzly se stejnou paritou (xxxx0 a xxxx1) nebo s opačnou paritou (xxxx1 a xxxy0). Žádný jiný případ nemůže nastat. | ||
- | Když je parita stejná, tak oba uzly chtějí v cestě pokračovat rovně - není kolize a když je různá, tak chtějí oba pokračovat křížem - není kolize. | ||
- | |||
- | Po prvním stupni indBFn budou pakety směrovány do disjunktních podmotýlků indBFn-1 a důkaz tam induktivně probíhá stejně. | ||
- | ===== Důkaz bezkoliznosti operace přeložení na Qn při použití e-cube ===== | ||
- | |||
- | Dokažte, že v Qn je operace přeložení //i->i xor w// je při směrování e-cube bezkolizní (//w// je n-bitová posloupnost) | ||
- | |||
- | ==== Řešení ==== | ||
- | |||
- | E-cube směrování se řídí bity řetězce //w// (protože < | ||
- | |||
- | Ke kolizi může nastat v libovolném kroku //k// mezi uzly spojenými hranou dimenze //k//. | ||
- | |||
- | Existují 2 možnosti: | ||
- | * a) //k//-tý bit řetězce //w// je 0 => k pohybu v //k//-té dimenzi nedojde => kolize nenastává | ||
- | * b) //k//-tý bit řetězce //w// je 1 => u obou uzlů dojde k pohybu v dimenzi //k// => vymění se pozice => kolize nenastává | ||
- | |||
- | //Pozn. by Klaara (ad pochybnosti o XORech): Řešení je OK. Jde o to si jakoby " | ||
- | |||
- | --- | ||
- | |||
- | Edit: dovysvětlení by Rulfik \\ | ||
- | jelikož permutace na < | ||
- | |||
- | Potom cílová adresa permutovaného paketu vyslaného z uzlu < | ||
- | |||
- | Edit: aby to bylo jasné, jak jsme se dostali k tomuto vzorci: < | ||
- | |||
- | xor je definován následovně | ||
- | |||
- | ^ < | ||
- | |0|0|0| | ||
- | |0|1|1| | ||
- | |1|0|1| | ||
- | |1|1|0| | ||
- | |||
- | Je nutné si uvědomit, že se směruje e-cube (tedy po jednotlivých dimenzích od LSB k MSB) tedy celkem v n krocích. | ||
- | Pro každý k-tý krok mohou nastat následující 2 případy: | ||
- | |||
- | ^ < | ||
- | ^0|**0**^0| | ||
- | ^1|**0**^1| | ||
- | |||
- | Je li w=0, pak k-tý bit adresy paketu zůstává nezměněn, ke směrování nedochází = žádná kolize | ||
- | |||
- | ^ < | ||
- | ^0|**1**^1| | ||
- | ^1|**1**^0| | ||
- | |||
- | Je-li w=1, pak k-tý bit se zneguje = čili u dvou sousedních uzlů dojde ke křížové výměně paketů = žádná kolize. | ||
- | |||
- | Čili je pravda, že směrování se řídí bity řetězce k jak již bylo uvedeno. | ||
- | |||
- | ===== Minimální směrování pro nepřímý oBFn ===== | ||
- | |||
- | Dokažte, že minimální směřování pro nepřímý oBF< | ||
- | |||
- | ★ //Bylo ve zkoušce: [[.: | ||
- | |||
- | ==== Řešení ==== | ||
- | |||
- | [[https:// | ||
- | |||
- | Cyklický posun jsou 2 operace zhuštění na stejné síti. Důkaz je tedy skoro stejný jako u důkazu že zhuštění je bezkonfliktní: | ||
- | - záleží na paritě slova o které se posouváme. Pokud je parita lichá, v prvním sloupci se vždy nastaví přepínače křížem = není kolize. Pokud je parita sudá, nejnižší bit se vůbec nemění a čili se nastaví přepínače rovně = není kolize | ||
- | - jelikož výstupy ze stupně 0 jdou na vstupy disjunktních podmotýlků, | ||
- | |||
- | |||
- | {{https:// | ||
- | |||
- | (a) Cyklický posun o < | ||
===== Konstrukce všech uzlově disjunktních cest v 3D mřížce s nejkratšími délkami ===== | ===== Konstrukce všech uzlově disjunktních cest v 3D mřížce s nejkratšími délkami ===== | ||
Line 421: | Line 306: | ||
Nestačí. Nemáš najít pouze nejkratší cesty, ale všechny disjunktní cesty tak, aby byly co nejkratší. Disjunktních cest může být max 2*dimenze (to ti požere všechny sousední uzly k počátečnímu uzlu a žádné disjunktní cesty už neuděláš) a ty se je snažíš najít tak, aby byly co nejkratší -> najdeš dimeze-krát úplně nejkratších pomocí přímýho směrování + ty úhybný. (hroncmir) | Nestačí. Nemáš najít pouze nejkratší cesty, ale všechny disjunktní cesty tak, aby byly co nejkratší. Disjunktních cest může být max 2*dimenze (to ti požere všechny sousední uzly k počátečnímu uzlu a žádné disjunktní cesty už neuděláš) a ty se je snažíš najít tak, aby byly co nejkratší -> najdeš dimeze-krát úplně nejkratších pomocí přímýho směrování + ty úhybný. (hroncmir) | ||
- | |||
- | ===== SF,oBFn monotonni permutace ===== | ||
- | //Řešení obdobného příkladu: [[škola: | ||
- | |||
- | |||
- | Dokázat, že každou monotónní permutaci lze na SF oBFn realizovat bezkolizně, | ||
- | ==== Řešení ==== | ||
- | :!://Viz skripta [2006] str. 161-162// && [2015] 9. přednáška / slide 33 | ||
- | === Důkaz bezkoliznosti === | ||
- | |||
- | Monotónní permutace se skládá ze zhušťovací, | ||
- | |||
- | Důkaz je induktivní. Uvažujme, že žádné dva pakety se nemohou srazit na stejném uzlu v 1. úrovni (číslujeme od nuly). Ke kolizi by mohlo dojít jen mezi pakety, které by tvořily sudo–lichou dvojici po sobě jdoucích paketů. Tyto pakety by ovšem po zhuštění skončily také na dvou po sobě jdoucích výstupech. Mohou nastat dvě situace: | ||
- | - Výstupní uzly budou **sudo–lichá dvojice** (nejnižší bit se neliší). → Pakety šly v 1. úrovni **rovně** (dle pravidel min. směrování). → Nemohlo dojít ke kolizi. | ||
- | - Výstupní uzly budou **licho–sudá dvojice** (nejnižší bit se liší). → Pakety šly v 1. úrovni **křížem**. → Nemohlo dojít ke kolizi. | ||
- | Po tomto kroku se pakety dostanou na vstupy dvou navzájem disjunktních podmotýlků oBF< | ||
- | |||
- | |||
- | === Časová složitost === | ||
- | |||
- | Každá z permutací má složitost O(n). PPS má složitost O(2n) (FIXED). Celkem tedy O(5n), skrytá konstanta je 5. | ||
- | PPS n vstupních hodnot lze řešit na libovolné n-uzlové síti v čase T = O(diam(G)) viz Prednaska 7, slide 11. | ||
- | diam(oBFn) = 2n viz Prednaska 4, slide 37. | ||
- | |||
- | DOTAZ :?:: v tom zminenem tvrzeni se preci pise, ze to PPS lze resit v O(log n), kde n je pocet vstupnich hodnot, u nas tedy v O(log 2^n) = n. Podminku toho, ze tvrzeni to plati mame splnenou (diam(G) = 2*n = O(log2^n) = O(n). Budu rad za objasneni, diky. (navic tam se navic predpoklada, | ||
- | === Trocha teorie === | ||
- | |||
- | * Monotónní permutace je jakákoli neúplná permutace, která nemění pořadí paketů. Jinak řečeno, jedná se o směrování z libovolné podmnožiny vstupů do stejně velké podmnožiny výstupů, které mohou být různě posunuté, ale musí zachovávat stejné pořadí paketů. Každou monotónní permutaci lze vytvořit složením z permutace zhušťovací a roztažné. | ||
- | * Zhušťovací permutace je směrování paketů z libovolné podmnožiny **//x//** vstupů do //prvních, nebo posledních **x**// výstupů (tj. odshora, nebo odspoda), přičemž se opět zachovává relativní pořadí paketů. | ||
- | * Roztažná permutace (též zředění) je zrcadlovým otočením zhušťovací permutace. Je pro ni nutné zrcadlově otočit i celého motýlka, tj. posílat pakety zprava doleva. | ||
- | * Identita je směrování paketů z libovolné podmnožiny (nebo všech) vstupů do protějších výstupů. Jednoduše řečeno, pouze přenese pakety z jedné strany na druhou ve stejné řádce. | ||
- | |||
- | Realizace monotónní permutace na obyčejném motýlkovi má celkem **čtyři fáze**. Nejprve musíme spočítat relativní pořadí paketů (tj. aktivních vstupů) pomocí **paralelního prefixového součtu** (PPS). To je potřeba k výpočtu výstupních adres pro druhou fázi, **zhušťovací permutaci**. Ve třetí fázi provedeme **roztažnou permutaci**. Nejprve jsme pakety poslali zleva doprava, poté zpátky doleva, takže nakonec musíme provést **identitu**, | ||
- | |||
- | {{tag> |
users/martin.kocicka/pdp/6b.1497348611.txt.gz · Last modified: 2017/06/13 10:10 by martin.kocicka