Treecodes<br />Miloslav Pekař<br />
Proč?<br />Spojité fyzikální problémy musí být diskretizovány, ve skutečnosti nemáme mnoho možností<br />Diskretizace pomo...
N-Body Simulation<br />Prostoročasová hustota f je reprezentována shlukem „částic“ (particles) nebo „těl“ (bodies), která ...
Výpočetní čas<br />Protože gravitace je „síla s dlouhým dosahem“ (klesá pouze jako čtverec vzdálenosti), bylo by nutno poč...
Hierarchické stromové metody<br />Vynalezeny v roce 1985<br />3 hlavní problémy:<br />Load – balance<br />Komunikace mezi ...
Load – balance	 <br />Rozdělení problému do částí podle počtu procesorů<br />Každá část musí zabrat zhruba stejně výpočetn...
Meziprocesorová komunikace<br />Nejpopulárnější paralelní počítače využívají distribuovanou paměť (každý procesor má svoji...
Komunikační instrukce<br />Tyto musí být psány explicitně programátorem, protože výpočty pro částice ve stromových kódech ...
FastTreeCodefor Many – Body Problems<br />Los Alamos Science, November 22, 1994<br />
Classified<br />V roce 2002 Los AlamosNationalLaboratory ukončila přístup k tisícovkám veřejných reportů, které byly volně...
Cíle<br />Cílem byl „friendlycode“ a vysoká modularita programu (kažý výpočet provádí samostatná část programu)<br />Začín...
Metoda stromu<br />Struktura programu je velice jednoduchá<br />Nejprve se počítá celkové silové působení okolních částic ...
Vylepšení<br />Vylepšujeme přiblížení využitím základní myšlenky stromových kódů: problém rozdělíme na skupiny a ty na dal...
2D strom<br /><ul><li>Prostor je rozdělen hierarchicky na strom buněk
Buňky obsahující 1 částici se nedělí – jsou to listy stromu, oblasti bez částic se ignorují
Buňky jsou čtverce a jsou děleny ortogonálně přes střed, čili každá může mít maximálně 4 dceřiné buňky, proto se užívá ozn...
Struktura se musí přepočítat při každé změně pozice částice
3D verze je oct-tree</li></li></ul><li>MultipoleAcceptanceCriterion (MAC)<br />Kód musí obsahovat kritérium, kdy je možné ...
Kritický rádius<br />
Mapování buněk<br />Popis stromu, který zahrnuje souřadnice každé buňky, jejího těžiště a multipólové momenty, musí také o...
Klíč<br />První možnost má též nevýhodu, že je těžké na startu určit, která data by procesor mohl potřebovat <br />Druhá m...
Klíče buněk<br />
Organizace programu<br /><ul><li>Po inicializaci programu (nastavení výchozích pozic a rychlostí částic) jsou další části ...
Proces je opakován podle požadavku uživatele, obvykle stovky až tisíce časových kroků</li></li></ul><li>Paralelní dekompoz...
Konstrukce stromu<br />Seřazené klíče jsou výhodou<br />V obvyklém algoritmu pro konstrukci stromu je částice vložena do k...
Upcoming SlideShare
Loading in …5
×

Treecodes - stromové kódy

594 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
594
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Treecodes - stromové kódy

  1. 1. Treecodes<br />Miloslav Pekař<br />
  2. 2. Proč?<br />Spojité fyzikální problémy musí být diskretizovány, ve skutečnosti nemáme mnoho možností<br />Diskretizace pomocí konečných diferencí nebo konečného počtu elementů je vhodná pouze pro diferenciální rovnice nejvýše 3D<br />Např. Boltzmannova bezesrážková rovnice:<br />6 nezávisle proměnných, diskretizace domény se 100 elementy v každé dimenzi by vedla na systém s 1012 elementů <br />Přejdeme k ParticleSimulation (nebo N-body simulation)<br />
  3. 3. N-Body Simulation<br />Prostoročasová hustota f je reprezentována shlukem „částic“ (particles) nebo „těl“ (bodies), která se vyvíjí v čase podle dynamiky newtonowské gravitace:<br />Takovouto diferenciální rovnici můžeme řešit mnoha metodami, problém je, že přímá implementace pravé strany vyžaduje O(N2) operací<br />Simulace využívající přímou sumaci jsou tudíž vhodné jen pro několik desítek tisíc částic, nepomohou ani teraflopové stroje, které zvýší výkon jen o zhruba řád<br />
  4. 4. Výpočetní čas<br />Protože gravitace je „síla s dlouhým dosahem“ (klesá pouze jako čtverec vzdálenosti), bylo by nutno počítat silové působení mezi každými 2 částicemi v každém časovém kroku -> (N – N2) / 2 párů<br />Naštěstí existují aproximativní metody, známé jako hierarchické stromové metody, které redukují čas nutný pro výpočet sil z O(N2) na O(N∙log N) nebo i na O(N), což je výborné, uvážíme-li, že N jde do miliónů<br />
  5. 5. Hierarchické stromové metody<br />Vynalezeny v roce 1985<br />3 hlavní problémy:<br />Load – balance<br />Komunikace mezi procesory<br />Programování instrukcí pro komunikaci mezi procesory<br />
  6. 6. Load – balance <br />Rozdělení problému do částí podle počtu procesorů<br />Každá část musí zabrat zhruba stejně výpočetního času<br />Standartně rozdělení na procesorové domény (processordomains), každý procesor provádí výpočty ve své doméně<br />Protože v kosmologických simulacích jsou částice rozloženy nepravidelně, je težké dělit na oblasti s zhruba stejným počtem částic<br />Navíc, protože se částice pohybují jedna vzhledem ke druhé, rozdělení, které bylo na začátku load – balanced, takové nemusí zůstat<br />
  7. 7. Meziprocesorová komunikace<br />Nejpopulárnější paralelní počítače využívají distribuovanou paměť (každý procesor má svoji paměť, kde ukládá data své domény)<br />Komunikace mezi procesory je pomalá, naneštěstí, protože studujeme síly dlouhého dosahu, relativně husté komunikaci mezi procesory se nevyhneme<br />Pokud není meziprocesorová komunikace minimalizována, program poběží mnohem déle<br />
  8. 8. Komunikační instrukce<br />Tyto musí být psány explicitně programátorem, protože výpočty pro částice ve stromových kódech závisí na tom, kolik částic je v okolí<br />
  9. 9. FastTreeCodefor Many – Body Problems<br />Los Alamos Science, November 22, 1994<br />
  10. 10. Classified<br />V roce 2002 Los AlamosNationalLaboratory ukončila přístup k tisícovkám veřejných reportů, které byly volně přistupné na stránkách laboratoře v rámci projektu „LibraryWithoutWalls“<br />Naštěstí většina reportů byla získána a uložena Gregory Walkerem a CareySublette<br />Jedním z těchto reportů je i magazín Los Alamos Science, konkrétně vydání z 22. listopadu 1994 s titulem High Performance Computing, popisující použití „klíčového schématu“ k překonání problémů stromových kódů<br />
  11. 11. Cíle<br />Cílem byl „friendlycode“ a vysoká modularita programu (kažý výpočet provádí samostatná část programu)<br />Začínalo se „od píky“, nemodifikovaly se stávající nepřehledné kódy – časová náročnost<br />Nicméně úsilí se vyplatilo, díky modularitě lze zaměnit část popisující např. gravitační působení za modul jiný, přitom se vědec nemusí zabývat částí provádějící paralelní počítaní – vysoká adaptivita<br />Další výhodou je portabilita – např. moduly pro input-output a meziprocesorovou komunikaci mohou být měněny v závislosti na použitém stroji nebo systému<br />
  12. 12. Metoda stromu<br />Struktura programu je velice jednoduchá<br />Nejprve se počítá celkové silové působení okolních částic na danou částici<br />Z této síly se počítá pozice a rychlost<br />Tato procedura (timestep) se opakuje dokud je třeba<br />Metoda stromu je jedna z cest jak využít výhodu základní aproximativní metody – multipólového rozkladu<br />Skupina částic v určité vzdálenosti působí silově stejně jako jedna velká částice v těžišti skupiny<br />Pokud je ale skupina částic blízko k částici, vzhledem ke které počítáme silové působení skupiny, je toto přiblížení méně přesné<br />Je možné použít vyšší členy multipólového rozkladu ke zvýšení přesnosti<br />
  13. 13. Vylepšení<br />Vylepšujeme přiblížení využitím základní myšlenky stromových kódů: problém rozdělíme na skupiny a ty na další skupiny, atd.<br />Každá z menších skupin může být považována za jednu částici<br />Při výpočtu silového působení je třeba skupinu rozdělit dostatečně jemně, abychom dostali požadovanou přesnost, ale ne příliš jemně, abychom se vyhnuli zbytečným výpočtům<br />Abychom rozdělili skupinu efektivně pro každou částici, sestavíme „strom“ – hierarchii jemnějšího a jemnější úrovně rozdělení a pak vybereme nejhrubší akceptovatelnou úroveň (z hlediska přesnosti)<br />
  14. 14. 2D strom<br /><ul><li>Prostor je rozdělen hierarchicky na strom buněk
  15. 15. Buňky obsahující 1 částici se nedělí – jsou to listy stromu, oblasti bez částic se ignorují
  16. 16. Buňky jsou čtverce a jsou děleny ortogonálně přes střed, čili každá může mít maximálně 4 dceřiné buňky, proto se užívá označení quad-tree
  17. 17. Struktura se musí přepočítat při každé změně pozice částice
  18. 18. 3D verze je oct-tree</li></li></ul><li>MultipoleAcceptanceCriterion (MAC)<br />Kód musí obsahovat kritérium, kdy je možné pohlížet na skupinu částic jako na makročástici v těžišti skupiny a kdy ne<br />Minimální vzdálenost se označuje jako kritický rádius, rc<br />Metoda výpočtu kritického rádiusu je velmi důležitá pro rychlost a přesnost stromového kódu<br />Při výpočtu silového působení na částici se prochází strom úroveň po úrovni, až je přiblížení přijatelné (zadá uživatel), může skončit až na úrovni jedné částice<br />Čas na projití stromu je O(N∙log N), toto enormní zrychlení chodu (N je velké) ospravedlňuje nutnost znovu postavit strom při každém časovém kroku<br />
  19. 19. Kritický rádius<br />
  20. 20. Mapování buněk<br />Popis stromu, který zahrnuje souřadnice každé buňky, jejího těžiště a multipólové momenty, musí také obsahovat informaci, jak nalézt dceřiné buňky<br />Způsob pomocí ukazatelů (pointers) je nevhodný, protože jednak pozice v paměti, na kterou ukazatel ukazuje nemá nic společného s umístěním částice, a jednak pokud procesor potřebuje informace o buňce z domény jiného procesoru, musí se ukazatele nějak přeložit<br />2 možnosti: buď si každý procesor nabere veškerá data, která by mohl potřebovat, na začátku programu, a pak pracuje s vlastní kopií stromu, nebo se procesor zeptá jiného procesoru na data až je bude potřebovat<br />
  21. 21. Klíč<br />První možnost má též nevýhodu, že je těžké na startu určit, která data by procesor mohl potřebovat <br />Druhá možnost vyžaduje metodu efektivního „vyžádání si“ kusu dat od jiného procesoru<br />Za identifikátor každé částice vezmeme klíč, odvozený od pozice částice, a ten se přeloží do adresy dat buňky pomocí hashingu<br />Pokud máme klíč částice, můžeme její data rychle nalézt, i u jiného procesoru – klíčové schéma představuje uniformní adresovací systém<br />Můžeme nalézt jakoukoli větev stromu v čase O(1) (nezávislé na N), oproti O(N∙log N) při použití ukazatelů, kde musíme projít strom od kořenu<br />Pokud srovnáme částice podle velikosti jejich klíčů, budou částice s hodnotou klíče poblíž sebe také blízko sebe ve skutečnosti<br />
  22. 22. Klíče buněk<br />
  23. 23. Organizace programu<br /><ul><li>Po inicializaci programu (nastavení výchozích pozic a rychlostí částic) jsou další části prováděny paralelně
  24. 24. Proces je opakován podle požadavku uživatele, obvykle stovky až tisíce časových kroků</li></li></ul><li>Paralelní dekompozice dat<br />Velice důležitá pro rychlost algoritmu<br />Seznam částicových klíčů rozdělíme podle počtu procesorů<br />Problém je, že do jedné procesorové domény takto mohou spadnout dvě vzdálené skupiny částic, ovšem eliminace tohoto problému neukázala výrazné zrychlení algoritmu<br />
  25. 25.
  26. 26. Konstrukce stromu<br />Seřazené klíče jsou výhodou<br />V obvyklém algoritmu pro konstrukci stromu je částice vložena do kořene (nejvyšší úroveň stromu)<br />Částice postupuje dolů po větvi dokud není vytvořena nová buňka, která bude jejím listem<br />Tento proces je O(log N) pro každou částici<br />V našem algoritmu jsou částice přidány do stromu tam, kde byla přidána poslední částice, protože blízkost v seznamu značí i blízkost ve skutečnosti, přesun částice na danou pozici je řádu O(1)<br />
  27. 27. Výkon<br />1992, klasický stromový kód (před modifikací v Los Alamos)<br />Stroj Intel Touchstone Delta, 512 procesorů<br />17,15 milionů částic, 0,5Gflops<br />Ačkoli nám to nepřipadá jako velký výkon, vyhrál tento výpočet soutěž Gordon Bell Performance Prize 1992<br />
  28. 28. Výkon<br />Stroj Intel Touchstone Delta, 512 procesorů, 1994<br />8,8 milionů částic, střední kvadratická odchylka zrychlení < 10-3<br />2,2 ∙ 1020 interakcí za časový krok při rozjezdu<br />
  29. 29. Výkon<br />1997, Gordon Bell performance prize, účastník ASCI Red, SandiaNationalLaboratory<br />O(N2) metoda – 635 Gflops na 6800 procesorech, 1 milion částic<br />O(N∙log N) metoda – 430 Gflops na 6800 procesorech, 322(!) milionů částic – 105 krát efektivnější než O(N2) metoda <br />1996, dva stroje z Los Alamos, Loki a Hyglac, postaveny pouze z běžných komponent, 16 procesorů každý, třída Beowulf, dosáhly při běhu gravitačního stromového kódu poměru 50$/Mflop<br />2. 9. 2009 – Oct-tree metoda realizovaná za použití GPU, cena systému 900$, 2,8 milionu částic, 21,8 Gflop – 41,6$/Gflop, současný rekord<br />AssociationforComputingMachinery - http://awards.acm.org/bell/<br />

×