14
Stromové kódy Stromové kódy Jakub Havlík a Milan Holec Jakub Havlík a Milan Holec

Stromové kódy

Embed Size (px)

DESCRIPTION

Stromové kódy. Jakub Havlík a Milan Holec. Nástin problému. Výběr vhodného algoritmu při simulacích mnoha částic Částice – částice anebo částice – síť? Když částice – částice, tak jaký algoritmus? Není zbytečné simulovat interakce všech částic se všemi částicemi? - PowerPoint PPT Presentation

Citation preview

Page 1: Stromové kódy

Stromové kódyStromové kódy

Jakub Havlík a Milan HolecJakub Havlík a Milan Holec

Page 2: Stromové kódy

Nástin problému

• Výběr vhodného algoritmu při simulacích mnoha částic• Částice – částice anebo částice – síť?• Když částice – částice, tak jaký algoritmus?• Není zbytečné simulovat interakce všech částic se všemi

částicemi?• Odpověď : „Ano je. Všechno jde dělat chytře místo

složitě“

Page 3: Stromové kódy

Proč stromové algoritmy

• Základní myšlenka:

Máme-li velkou skupinu částic, která je velmi vzdálená od ostatních částic, pak silový příspěvek této skupiny můžeme aproximovat silovým příspěvkem jedné částice s hmotnosti rovnou součtu hmotností částic ve skupině a s hmotným středem umístěným v hmotném středu skupiny částic.

Page 4: Stromové kódy

Schéma rádiusu buňky

Page 5: Stromové kódy

První příklad

• Pro velikou vzdálenost obou skupin částic a malé úhly theta se nevyplatí provádět všechny čtyři interakce červená-modrá, červená-červená, modrá-červená, modrá-modrá, ale jak je znázorněno vedle rozdělíme simulovanou plochu na čtyři kvadranty a napočítáme pouze dvě interakce modrá-červená a červená-modrá.

Page 6: Stromové kódy

Konstrukce stromu

• při konstrukci stromu nejdříve uzavřeme prostor částic do čtverce (obdélníku), který je dostatečně velký, aby v něm částice během celé simulace zůstaly – root cell

• poté začneme čtverec dělit na menší a menší pravoúhelníky

• simulací v 1D tak z rodičovské buňky vzniknou dvě stejné děti – dvě buňky – binarytree, ve 2D vzniknou 4 buňky (obvykle čtverce) – quadtree a ve 3D z jedné rodičovské buňky vznikne 8 menších, každá o objemu 1/8 rodičovské buňky – octtree

• takto postupujeme rekurzivně tak dlouho, dokud nemáme každou částici zvlášť v jedné buňce

Page 7: Stromové kódy

Základní názvosloví

• Definice oblasti:Oblast je část simulované plochy a to vždy část obdélníková. Je rozdělena na 4 kvadranty. Tato oblast může a nemusí být nadále rozdělena na další 4 pod-oblasti, každá podle příslušného kvadrantu. První oblastí je celá simulovaná plocha.

• Definice listu:Listem rozumím poslední oblast stromu, na které už nenavazují žádné další oblasti.

Page 8: Stromové kódy

Vysvětlující obrázky

Quadtree - každý uzel se

rozdělí na 4 stejné poduzly

Quadtree – prostor dělímetak dlouho, dokud není každáčástice v buňce sama

Page 9: Stromové kódy

Výpočty – část 1

• Celková hmotnost a umístění hmotného středu je jednoduché pro listy – je to přesně ta hodnota a pozice částice uvnitř listu

• Pro uzly jsou tyto hodnoty určeny z jejich subbuněk ale pouze pro první úroveň! ( pro 2D jsou tak tyto hodnoty určeny ze 4 subbuněk, ve 3D z 8)

Page 10: Stromové kódy

Výpočty – část 2

• Teď už můžeme počítat interakce částic – ty budou dvou druhůa) výpočet silových příspěvků od individuálních částic, které jsou blízko

naší částicib) výpočtem silového příspěvku od hmotného středu sady buněk stromu,

které jsou velmi vzdálené od naší částiceTo, jestli vybereme metodu a nebo b záleží na parametru ca, který je

pevně zvolen

• Při výpočtu interakcí postupujeme od kořene rekursivně k poduzlům a listům.

• Pro snížení výpočtů je dovoleno, mít na každé úrovni jen maximálně 9 buněk, které potřebují dále rozdělit. Výpočet další úrovně se pak redukuje na 27 operací (2*3*2*3-9). Na každé úrovní je pak výpočetní náročnost 27 O(1).

Page 11: Stromové kódy

Zhodnocení

• hloubka stromu je určena jako min(b, log(n)) a celková náročnost je tedy

O(n min(b, log(n)))• toto zjednodušení dokáže velmi zredukovat počet

výpočtů až o několik řádů !!! (v závislosti na počtu částic)

• stromové kódy jsou přesnější než metoda částice – síť, ale méně přesné než metoda částice – částice

• vyžadují navíc pomocné uskladnění dat• Algoritmus Barnes – Hut využívá stromové struktury a je

hojně užíván zejména v astrofyzice

Page 12: Stromové kódy

Dodatek 1 – Barnes - HutAlgoritmus1. Vytvoř quadtree nebo octtree 2. Postupuj ve směru od listů ke kořeni a počítej hmotnost a hmotný střed

pro každý uzel3. Postupuj směrem od kořene k listům a pro každou částici spočítej sílu

během postupu

Bod 2 můžeme schématicky rozepsat:

Počítej aproximace (N) pokud N je list pak konec; pro každý subuzel n uzlu N proveď -> počítej aproximace (n) M:=0, cm:= (0,0) Pro každý subuzel n uzlu N proveď

M:=M + hmotnost n, cm:= cm + hmotnost n*pozice nkonec

cm:=1/M *cm Hmotnost N := M Pozice N := cmkonec

Page 13: Stromové kódy

Dodatek 2 – Paralelní výpočty

• Problém mezi komunikace částic mezi procesory• Malá datová propustnost může být problém mezi počítači

s malou pamětí• Vytvoří se lokální stromy na každém procesoru• A posílají se pouze základní informace o stromech• Velice výhodné při počítání obrovského počtu částic (až

109.• Ukázka klíče buňky(listu)

Page 14: Stromové kódy

Odkazy

http://ocw.mit.edu/NR/rdonlyres/Mathematics/18-337JSpring-2005/7F272796-9A83-44EF-AF25-0366CA296EA4/0/chapter_9.pdfhttp://www.cita.utoronto.ca/~dubinski/treecode/natreecode.pdfhttp://www.sweb.cz/labirlab/plasma/tree_cods.htmhttp://chaos.swarthmore.edu/research/Tree_Codes.pdfhttp://library.lanl.gov/cgi-bin/getfile?00326635.pdfhttp://www.amara.com/papers/nbody.html#tcuhttp://delivery.acm.org/10.1145/370000/369033/a2-hu.pdf?key1=369033&key2=3073965021&coll=GUIDE&dl=GUIDE,ACM&CFID=59550468&CFTOKEN=38354691 http://library.lanl.gov/cgi-bin/getfile?22-09.pdf http://www.cs.berkeley.edu/~demmel/cs267/lecture26/lecture26.htmlhttp://www.cita.utoronto.ca/~dubinski/treecode/treecode.html