Symulacje oddziaływania grawitacyjnego wielu ciał
na komputerze PC
Andrzej Odrzywołek
Instytut Fizyki UJ, Zakład Teorii Względności i Astrofizyki
18.06.2008, środa, 9:00
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
O czym będzie ten referat?
Zagadnienie N-ciał: podstawowe informacje
1 sformułowanie w ramach teorii Newtona
2 kilka nietrywialnych przykładów dla 3 ciał
3 układy setek, tysięcy i więcej obiektów w kosmosie
Zastosowanie kart graficznych
1 moc obliczeniowa współczesnej karty graficznej
2 NVIDIA CUDA: przykłady użycia
3 symulacje zagadnienia N-ciał
przyszłość komputerów PC: programowanie wieloprocesorowe
Zasada dynamiki Newtona
Ruch pojedynczej cząstki pod wpływem siły: F = ma F = (Fx, Fy, Fz), v = (vx, vy, vz), r = (x , y , z)
Fx = mdvx
dt , Fy = mdvy
dt , Fz = mdvz dt , vx = dx
dt, vy = dy
dt, vz = dz dt
Jawne przybliżone rozwiązanie układu równań ruchu Pochodna funkcji w przybliżeniu:
f0(t) ≡ df (t)
dt = f (t + ∆t) − f (t)
∆t
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Przybliżone rozwiązanie równań ruchu Newtona
Oryginalny układ równań (jego część) Fx = mdvx
dt , vx = dx dt
Układ równań pochodnych różnicami skończonymi Fx = mvx(t + ∆t) − vx(t)
∆t
vx = x (t + ∆t) − x (t)
∆t
Jawne przyblizone rozwiązanie równań ruchu
Siły w równaniach ruchu Newtona
równania Newtona nic nie mówią o działających siłach przedstawiony algorytm rozwiązywania równań ruchu działa (lepiej lub gorzej) dla praktycznie dowolnych sił, w tym: (1) nie zachowujących energii (2) zależnych od czasu
poprzez odpowiednie określenie sił możemy rozwiązywać szeroki zakres problemów od ruchu rzucanych piłek, poprzez ruch płynów, lawiny błotne aż do kontynentów, sond
kosmicznych i gromad galaktyk
szczególną rolę gra newtonowskie przyciąganie grawitacyjne, które z bardzo dużą dokładnością opisuje znakomitą większość obiektów w kosmosie
wyjątkami są m. in. czarne dziury oraz wszechświat jako całość
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Teoria grawitacji Newtona
Siła przyciagania pomiędzy 2 masami F12 = Gm1m2
r122
r1− r2
|r1− r2|
G = 6.674 × 10−11m3/s2/kg – stała przyciagania grawitacyjnego Gmr12m2
12
– wielkość siły przyciągającej
r1−r2
|r1−r2| – kierunek działającej siły: wektor jednostkowy skierowany od ciała 1 do 2
Składowe siły przyciagania pomiędzy 2 masami Fx 12= G m1m2(x1− x2)
3
Równania dla 3 ciał
d2r1
dt2 = F12+ F13 d2r2
dt2 = F21+ F23 d2r3
dt2 = F31+ F32
UWAGA!
Ilość sił i operacji matematycznych aby je obliczyć rośnie bardzo szybko z ilością ciał. Stanowi to podstawową trudność w
analizowaniu bardzo złożonych układów.
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Ogólne uwagi o teorii Newtona
UWAGA!
Jedyne dokładnie znane i całkowicie zbadane jest zagadnienie 2 ciał, rozwiązane przez samego Newtona: ruch przez
nieskończony czas po elipsie, paraboli lub hiperboli wokół wspólnego środka masy
zaczynając od 3 ciał w górę mamy do czynienia z niezwykle bogatym obszarem badań gdzię wciąż dokonywane są zaskakujące odkrycia (np. stabilny ruch trzech ciał po
„ósemce”)
powoli zaczyna wypływać pogląd, że na duże systemy (gromady kuliste, galaktyki) mogą wpływać obiekty pozanewtonowskie jak np. czarne dziury
teoria grawitacji Newtona ciągle jednak dominuje w tym polu badań ilościowo znacznie wyprzedzając Ogólną Teorię
Względności Einsteina
-0.1 -0.2 0.1 0.0
0.2
0.00 0.05
A. Odrzywołek0.10 Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Przykłady ruchu 2 ciał
stosunek mas 1:1 (gwiazda podwójna) stosunek mas 1:10 (układ Pluton-Charon) stosunek mas 1:100 (układ Ziemia-Księżyc)
-0.1 0.0 0.1 -0.1 -0.2 0.1 0.0
0.2
-0.10 -0.05 0.00 0.05 0.10
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Przykłady ruchu 2 ciał
stosunek mas 1:1 (gwiazda podwójna) stosunek mas 1:10 (układ Pluton-Charon) stosunek mas 1:100 (układ Ziemia-Księżyc)
0.0 0.2 0.4 0.6
-0.6
-0.4
-0.2
0.0 0.2 0.4
Przykłady ruchu 2 ciał
stosunek mas 1:1 (gwiazda podwójna) stosunek mas 1:10 (układ Pluton-Charon) stosunek mas 1:100 (układ Ziemia-Księżyc)
-0.10 -0.05 0.00 -0.6
-0.4
-0.2
0.0
-0.4 -0.2 0.0
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Przykłady ruchu 3 ciał
Przykłady ruchu 3 ciał
-0.10 -0.05
0.00 0.05
0.10 -0.10
-0.05
0.00
0.05
0.10
-0.10
-0.05 0.00
0.05 0.10
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Układy więcej niż 3 ciał
1 układy planetarne i protoplanetarne
2 pierścienie, pasy asteroidów
3 gromady kuliste i otwarte gwiazd
4 galaktyki
Jak obliczyć ruch setek tysięcy ciał równocześnie
Moc obliczeniowa (GFLOP - miliard operacji zmiennoprzecinkowych na sekundę
1 wymagający małej mocy procesor (laptopy i superkomputery typu BlueGene) – kilka GFLOPS [1-kilka rdzeni]
2 CoreQuad – 30 GFLOPS [2x2 rdzenie]
3 karta graficzna GF8800GTX – 500 GFLOPS [128 shaderów]
4 Intel Polaris – 2000 GFLOPS [80 rdzeni]
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Jak obliczyć ruch setek tysięcy ciał równocześnie
Moc obliczeniowa (GFLOP - miliard operacji zmiennoprzecinkowych na sekundę
1 wymagający małej mocy procesor (laptopy i superkomputery typu BlueGene) – kilka GFLOPS [1-kilka rdzeni]
2 CoreQuad – 30 GFLOPS [2x2 rdzenie]
3 karta graficzna GF8800GTX – 500 GFLOPS [128 shaderów]
4 Intel Polaris – 2000 GFLOPS [80 rdzeni]
Programowanie kary graficznej
Cechy karty GF8800GTX
1 128 procesorów zmiennoprzecinkowych operujących w tzw.
pojedynczej precyzji (obliczenia z dokładnością około 8 cyfr znaczących float ; dla porównania double typowo daje 16 cyfr znaczących, bardzo rzadko spotykane są procesory pracujące w tzw. poczwórnej precyzji)
2 typowy zegar 1350 MHz
3 dedykowana bardzo szybka pamięć 768 MB
4 dokładność niektórych funkcji matematycznych np: √ x obniżona na rzecz szybkości działania
5 środowisko programistyczne NVIDIA CUDA wraz ze sterownikami, przykładami oraz bibliotekami gotowymi do użycia w C i Fortranie
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Programowanie kary graficznej: trudności
Różnice w stosunku do „normalnego” programowania
1 konieczność „ręcznego” przesyłania danych do i z pamięci karty
2 wszelkie problemy zrównoleglenia algorytmów: nie zawsze jest to możliwe, a przyspieszenie zwykle jest mniejsze niż
wynikałoby to z ilości użytych procesorów
3 brak kompilatorów standardowych języków jak C
4 konieczność „ręcznego” optymalizowania zwłaszcza transferów pomiędzy pamięciami
5 przyspieszenie wyraźnie odczywalne tylko dla problemów w dużej skali (tablice o wymiarach minimum 1000x1000, 10000
Ciekawe przykłady z CUDA SDK
Co mozna policzyć na karcie graficznej?
algebra liniowa: operacje na macierzach transformata Fouriera
sortowanie fraktale
generatory liczb losowych symulacje cząsteczkowe
redukcja szumów (w obrazach i dźwięku)
Imponujące przykłady z CUDA SDK
ruch płynu nieściśliwego (np. woda, miód) [fluidsGL]
eksploracja zbioru Mandelbrota [Mandelbrot]
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
CUNBODY-1
Jak w najprostszy sposób zacząć?
Ponieważ opanowanie programowania karty graficznej to długotrwały i wymagający wysiłku proces, warto rozpocząć od gotowych bibliotek i programów wykorzystujących jej moc obliczeniową:
1 plug-ins do obróbki zdjęć
2 dekodery H.264
3 biblioteka CUNBODY-1 wyliczająca siły grawitacyjne lub elektrostatyczne działające pomiędzy maks. 217= 131072
Autor: Tsuyoshi Hamada, http://progrape.jp/cs
Polecam animacje autorstwa T. hamady na YouTube oraz
Symulacje N-ciał
Sprzętowe wspomaganie obliczania siły
Najwięcej czasu w symulacjach N-ciał zajmuje wyliczenie sił działających na cząstki wg. schematu każdy-z-każdym.
są dwa podejścia: (1) bardziej efektywny algorytm, np.
grupowanie odległych ciał (2) sprzętowe liczenie siły za pomocą dedykowanej karty
wraz z pojawieniem się częściowo programowalnych kart graficznych koszt rozwiązania sprzętowego znacznie spadł i jest to w chwili obecnej najefektywniejsze z punktu widzenia kosztów rozwiązanie
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Układy 4-10 dużych ciał: gwiazdy wielokrotne i systemy
(proto)planetarne
Układy 4-10 dużych ciał: gwiazdy wielokrotne i systemy
(proto)planetarne
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Pierścienie planet (Saturn)
Pierścienie planet (Saturn)
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Pierścienie planet (Saturn)
Pierścienie planet (Saturn)
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Układy 10,000-1000,000 ciał: gromady kuliste
Układy 10,000-1000,000 ciał: gromady kuliste
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Układy 10,000-1000,000 ciał: gromady kuliste
Układy 10,000-1000,000 ciał: gromady kuliste
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Układy 10,000-1000,000 ciał: gromady kuliste
Układy 1000,000-1000,000,000,000 ciał: galaktyki
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Układy 1000,000-1000,000,000,000 ciał: galaktyki
Układy 1000,000-1000,000,000,000 ciał: galaktyki
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Układy 1000,000-1000,000,000,000 ciał: galaktyki
Układy 1000,000-1000,000,000,000 ciał: galaktyki
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Układ powyżej 1000,000,000,000 ciał: lokalny wszechświat
Układ powyżej 1000,000,000,000 ciał: lokalny wszechświat
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC
Układ powyżej 1000,000,000,000 ciał: lokalny wszechświat
Dlaczego warto zawracać sobie głowę programowaniem karty graficznej??
aczkolwiek programowanie jednoprocesorowe (szeregowe, jednowątkowe) prawdopodobnie nadal będzie dominowało nie należy spodziewać się znacznego wzrostu wydajności
dominującą tendencją jest zwiększanie mocy obliczeniowe poprzez zwielokrotnienie procesorów: (1) procesory
wielordzeniowe (2) klastry komputerów PC (3) karty graficzne w przeciwieństwie do umiejętności programowania
„szeregowego” programowanie „równoległe” to umiejętność bardzo rzadko spotykana
nie można wykluczyć już w najblizszej przyszłości połączenia zadań procesora i karty graficznej w jednym
kilkudziesięciu-rdzeniowym CPU, typu Intel Polaris
Programowanie równoległe ma przyszłość, a GPU to poligon doświadczalny. Warto zająć się tym tematem już teraz.
A. Odrzywołek Symulacje oddziaływania grawitacyjnego wielu ciał na komputerze PC