Skocz do zawartości

Symulacja Grawitacji


Space Jockey

Rekomendowane odpowiedzi

jaki fajny temat :)

ale niestety pierwszy film jest niedostępny, bo oznaczony jako prywatny, mógłbyś mu zmienić status?

a patrząc na drugi, zaczyna się od tego, że jest jakiś pierwotny ruch obrotowy, a może próbowałeś rozpoczynać symulację od całkowitego "bezruchu"?

 

... W obu symulacjach powstają struktury znajome z symulacji Millenium Run. Niestety szybko zanikają, zapewne z powodu złego doboru parametrów, np. szybkości rozszerzania się wszechświata. Do tego brakuje termodynamiki która by podczas sprężania zamieniała energię kinetyczną na cieplną co zapobiegło by rozwalaniu się struktur. Po dodaniu termodynamiki już niedaleko do symulacji gwiazdy, co pewnie będzie moim następnym celem;)


a może brakuje ciemnej materii? :) bo na NG był kiedyś jakiś program o symulacji powstawania galaktyk, próby przeprowadzano na jakimś wypasionym superkomputerze, dopiero wprowadzenie materii niewidocznej, lecz oddziałującej grawitacyjnie, pozwoliło symulacji zbliżyć się do rzeczywistych obserwacji ewolucji galaktyk. Bez niej, galaktyka albo zapadała się w czarną dziurę, albo rozpraszała się nie formując "spiralki" i to podobno w ten sposób "odkryto" ciemną materię, a przynajmniej konieczność jej istnienia.

Odnośnik do komentarza
Udostępnij na innych stronach

jaki fajny temat :)

ale niestety pierwszy film jest niedostępny, bo oznaczony jako prywatny, mógłbyś mu zmienić status?

a patrząc na drugi, zaczyna się od tego, że jest jakiś pierwotny ruch obrotowy, a może próbowałeś rozpoczynać symulację od całkowitego "bezruchu"?

 

 

a może brakuje ciemnej materii? :) bo na NG był kiedyś jakiś program o symulacji powstawania galaktyk, próby przeprowadzano na jakimś wypasionym superkomputerze, dopiero wprowadzenie materii niewidocznej, lecz oddziałującej grawitacyjnie, pozwoliło symulacji zbliżyć się do rzeczywistych obserwacji ewolucji galaktyk. Bez niej, galaktyka albo zapadała się w czarną dziurę, albo rozpraszała się nie formując "spiralki" i to podobno w ten sposób "odkryto" ciemną materię, a przynajmniej konieczność jej istnienia.

 

Już powinien być dostępny. Ruch obrotowy to tylko ruch kamery - symulacja zaczyna się od bezruchu.

 

Tak na dobrą sprawę to bez termodynamiki jest to symulacja tylko ciemnej materii - cząstki oddziałują tylko grawitacyjnie. Na wielką skalę to właśnie możliwość zamiany energii kinetycznej na cieplną odróżnia materię od ciemnej materii ;)

  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

Wszystkie symulacje były obliczane na karcie gtx470, kod jest raczej niezbyt zoptymalizowany, da się jeszcze sporo przyśpieszyć. Karta też już ma swoje lata, na obecnych kartach działało by pewnie szybciej.

Masz mojego GTX560 na usługi ;)

Z kwestii technologicznych rozumiem że przesławne CUDA zostały wykorzystane? Edit: doczytałem w tytule już że openCL xD

A z kwestii algorytmicznych to jak to wygląda po spodem? Jaki algorytm?

Edytowane przez Kurak
Odnośnik do komentarza
Udostępnij na innych stronach

Masz mojego GTX560 na usługi ;)

Z kwestii technologicznych rozumiem że przesławne CUDA zostały wykorzystane? Edit: doczytałem w tytule już że openCL xD

A z kwestii algorytmicznych to jak to wygląda po spodem? Jaki algorytm?

 

obawiam się, że 560 nie poprawi znacząco sytuacji - jeśli w ogóle;) ale taki radeon 7970 albo gtx titan już pewnie tak;)

 

algorytm własny o złożoności O(N) wymyślony jakiś tydzień temu, idealnie pasujący do architektury kart graficznych;)

Odnośnik do komentarza
Udostępnij na innych stronach

hmm, no to już się coś nie zgadza, przynajmniej intuicyjnie, bo przy braku jakiejkolwiek rotacji i przy idealnie rozłożonej masie (/gęstości) nie powinno się nic stać, albo materia powinna zagęścić się idealnie równomiernie, pomijając warunki brzegowe (centrum i "krawędzie")

dopiero przy lokalnych fluktuacjach, termodynamika powinna zacząć oddziaływać, ale podkreślam - totalnie się na tym nie znam, po prostu tak mi się tylko wydaje

Odnośnik do komentarza
Udostępnij na innych stronach

obawiam się, że 560 nie poprawi znacząco sytuacji - jeśli w ogóle;) ale taki radeon 7970 albo gtx titan już pewnie tak;)

Znacząco zapewne nie, ale szczerze po cichu liczyłem na dostanie się do kodu źródłowego ;)

 

Ale czemu OpenCL? Z tego co mnie uczono, a było to 2-3 lat temu, CUDA była o wiele wygodniejszą i szybszą technologia od raczkującego dopiero OpenCL.

 

Z drugiej strony złożoność O(n)? I mowa o "małej" optymalizacji? To chyba już przesadna skromność :P Cóż jest pod spodem? Jakoweś listy sąsiadów, Verlety, czy jakieś inne komórki połączone :D

Odnośnik do komentarza
Udostępnij na innych stronach

hmm, no to już się coś nie zgadza, przynajmniej intuicyjnie, bo przy braku jakiejkolwiek rotacji i przy idealnie rozłożonej masie (/gęstości) nie powinno się nic stać, albo materia powinna zagęścić się idealnie równomiernie, pomijając warunki brzegowe (centrum i "krawędzie")

dopiero przy lokalnych fluktuacjach, termodynamika powinna zacząć oddziaływać, ale podkreślam - totalnie się na tym nie znam, po prostu tak mi się tylko wydaje

 

hehe, no tak jak i w zwykłym świecie nawet idealne rozłożenie materii nic nie da, bo atomy nie mogą być w bez ruchu z powodu nieoznaczoności, losowy ruch spowoduje nieregularność a dalej to już krótka droga do rosnących nieregularności;)

 

U mnie rozkład jest równomierny, ale losowy. Stąd bardzo powolny rozwój symulacji na początku.

Edytowane przez Space Jockey
Odnośnik do komentarza
Udostępnij na innych stronach

Znacząco zapewne nie, ale szczerze po cichu liczyłem na dostanie się do kodu źródłowego ;)

 

Ale czemu OpenCL? Z tego co mnie uczono, a było to 2-3 lat temu, CUDA była o wiele wygodniejszą i szybszą technologia od raczkującego dopiero OpenCL.

 

Z drugiej strony złożoność O(n)? I mowa o "małej" optymalizacji? To chyba już przesadna skromność :P Cóż jest pod spodem? Jakoweś listy sąsiadów, Verlety, czy jakieś inne komórki połączone :D

 

OpenCL, bo trochę mnie już wkurzało to, że nie mogłem testować na kartach Ati, no i od wprowadzenia 7970 ati zyskało u mnie zainteresowanie;)

 

złożoność algorytmu a optymalizacja kodu to dwie różne sprawy;) niestety nie mogę podać algorytmu, muszę jeszcze go trochę opracować od strony teoretycznej, no i zastanowić się co z nim dalej zrobić;)

Odnośnik do komentarza
Udostępnij na innych stronach

OpenCL, bo trochę mnie już wkurzało to, że nie mogłem testować na kartach Ati, no i od wprowadzenia 7970 ati zyskało u mnie zainteresowanie;)

 

złożoność algorytmu a optymalizacja kodu to dwie różne sprawy;) niestety nie mogę podać algorytmu, muszę jeszcze go trochę opracować od strony teoretycznej, no i zastanowić się co z nim dalej zrobić ;)

Nvidia i ati (a raczej już amd od pewnego czasu) idą łeb w łeb raz jedno w górę raz drugie, Nvidia z swoją tiochniką CUDA zostawiła konkurencje za plecami swego czasu, ale to było dobrych parę lat temu :)

 

Ulalala robi się poważna sprawa z tym algorytmem :D Bo tutaj zrobisz nam zaraz drugie http://hipacc.ucsc.edu/Bolshoi/ :D

Odnośnik do komentarza
Udostępnij na innych stronach

Pięknie, pięknie (i szybko!). I faktycznie, samą grawitacją tych najciekawszych efektów się nie uzyska, trzeba dodać jakieś SPH albo co. Ładnie wyrenderowana symulacja zapadania się obłoku molekularnego, powstanie gwiazd, zapłon, turbulentne wydmuchiwanie resztek (M42!)... polecam uwadze jako potencjalny cel na przyszłość.

 

Skoro O(n), to ani chybi obliczanie potencjału grawitacyjnego w globalnej siatce jednorodnej (przez FFT z równania Poissona?) poszło w ruch ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Pięknie, pięknie (i szybko!). I faktycznie, samą grawitacją tych najciekawszych efektów się nie uzyska, trzeba dodać jakieś SPH albo co. Ładnie wyrenderowana symulacja zapadania się obłoku molekularnego, powstanie gwiazd, zapłon, turbulentne wydmuchiwanie resztek (M42!)... polecam uwadze jako potencjalny cel na przyszłość.

 

Skoro O(n), to ani chybi obliczanie potencjału grawitacyjnego w globalnej siatce jednorodnej (przez FFT z równania Poissona?) poszło w ruch ;)

 

Obliczanie potencjału, ale nie FFT, FFT ma O(NLogN)

rozmiar siatki Ng^3 musi byc proporcjonalny do N, złożoność FFT to O(Ng ^ 3 * log(Ng) * 3) = O(Ng ^ 3 * log(Ng^3)) ~ O(NlogN). W moim przypadku jest to O(Ng^3) czyli ~O(N) ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Aa, to pewnie po prostu dla każdej cząstki dodajesz jej potencjał do całej siatki (powiedzmy, potencjał 1 cząstki jest już obliczony i trzymany w pomocniczej, większej siatce - wystarczy jeden oktant, w końcu taki potencjał jest sferycznie symetryczny; wystarczy je teraz dodać do siebie z odpowiednim przesunięciem), potem tylko przemieścić cząstki wg wypadkowego potencjału... :g: No tak, na GPU to moment.

 

A wszystkich pozostałych forumowiczów z zacięciem programistycznym też zachęcam do spróbowania sił w algorytmach do symulacji grawitacji, bardzo pouczająca i satysfakcjonująca sprawa (i jak widać – piękne obrazy!), na wszystkich poziomach trudności.

Odnośnik do komentarza
Udostępnij na innych stronach

Aa, to pewnie po prostu dla każdej cząstki dodajesz jej potencjał do całej siatki (powiedzmy, potencjał 1 cząstki jest już obliczony i trzymany w pomocniczej, większej siatce - wystarczy jeden oktant, w końcu taki potencjał jest sferycznie symetryczny; wystarczy je teraz dodać do siebie z odpowiednim przesunięciem), potem tylko przemieścić cząstki wg wypadkowego potencjału... :g: No tak, na GPU to moment.

 

A wszystkich pozostałych forumowiczów z zacięciem programistycznym też zachęcam do spróbowania sił w algorytmach do symulacji grawitacji, bardzo pouczająca i satysfakcjonująca sprawa (i jak widać – piękne obrazy!), na wszystkich poziomach trudności.

 

ee, to by było za łatwe;) i na pewno za mało dokładne, zwłaszcza przy bliskich interakcjach ;) Złożoność tego też będzie chyba sporo większa?

Odnośnik do komentarza
Udostępnij na innych stronach

Ano, dokładność byłaby taka sobie. Ale złożoność będzie O(N*g^3). O(N*g^3) na dodanie potencjału od każdej cząstki do całej siatki, potem O(N) na liczenie gradientu dla każdej cząstki i przesunięcie jej. To zdradź jeszcze tylko - zrobiłeś "okresowe warunki brzegowe", tzn. zawijanie się siatki? Czy tylko samą ekspansję dla zrównoważenia globalnego zapadania się (próbowałem kiedyś podobnie, ale zawsze mi się to rozpadało)?

Odnośnik do komentarza
Udostępnij na innych stronach

Ano, dokładność byłaby taka sobie. Ale złożoność będzie O(N*g^3). O(N*g^3) na dodanie potencjału od każdej cząstki do całej siatki, potem O(N) na liczenie gradientu dla każdej cząstki i przesunięcie jej. To zdradź jeszcze tylko - zrobiłeś "okresowe warunki brzegowe", tzn. zawijanie się siatki? Czy tylko samą ekspansję dla zrównoważenia globalnego zapadania się (próbowałem kiedyś podobnie, ale zawsze mi się to rozpadało)?

 

g^3 jest proporcjonalne do N - 8 razy więcej ciał by zachować dokładność musi dać 8 razy większą siatkę, więc O(N*g^3) = O(N^2).

 

Tak siatka się zawija, ale można to wyłączyć.

Odnośnik do komentarza
Udostępnij na innych stronach

może zrób też wersje filmu bez ruchu kamery bo ten obrót powoduje że ruch zagęszczeń i delikatne ich zmiany giną w ogólnym obrazie zatytułowanym "coś się kręci"

 

jak skończę optymalizacje to zrobię filmik z 15M cząstek, zrobię wersję z obracaniem i bez

Odnośnik do komentarza
Udostępnij na innych stronach

To już ostatnia symulacja na jakiś czas, zamiast wziąć się za pisanie siedzę i patrze na te symulacje.

 

10mln ciał, 17526 klatek symulacji obliczone w nieco ponad 3h z czego co szósta trafiła do filmu.

http://www.youtube.com/watch?v=JODV-0XbtCA

 

  • Lubię 4
Odnośnik do komentarza
Udostępnij na innych stronach

Bomba. Ta ostatnia fajnie pokazuje, co by się z nami stało, gdyby nie ciemna energia. Chętnie bym zobaczył nieco dłuższą wersję, złożoną z większej liczby klatek.

 

Jak dodam ciśnienie, temperaturę i jakieś proste tworzenie i świecenie gwiazd to zrobię dłuższą symulację, może nawet cały dzień ;) Na razie 2-3h to max ile mogę poświęcić na symulację. Nie da się używać kompa podczas symulacji.

 

Parę małych optymalizacji z dzisiejszego dnia pozwoliło na zwiększenie liczby ciał do 30mln. Teraz same położenie i prędkość zajmują 686MB - a całość danych na karcie dochodzi do 1GB, także więcej już raczej nie będzie. Poniżej filmik wyrenderowany w 2h. Przepisany rendering na OpenCL - widać teraz więcej detalu w dużych zagęszczeniach.

 

http://www.youtube.com/watch?v=qaob6qz_HnQ

  • Lubię 3
Odnośnik do komentarza
Udostępnij na innych stronach

Kolejna symulacja z 30M ciał. Tym razem bez rozszerzania przestrzeni i bez obracania kamery. Symulacja 7470 klatek wykonała się w 74 minuty - prawie 2x szybciej niż w poprzedniej symulacji. Do filmu trafiła co 10 klatka symulacji przez co akcja wygląda na bardziej dynamiczną ;)

 

http://www.youtube.com/watch?v=1FCFopgLJBs

 

  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 tygodnie później...

Jak się z czasem okazało, poprzednie filmiki przez kilka brzydkich błędów nie wiele miały wspólnego z prawdziwą grawitacją. Wiadomo, pierwsza wersja zawsze ma sporo błędów ;) Poniżej filmik z wieloma poprawkami oraz z dodatkową fizyką, teraz wszystko zachowuje się bardziej jak gaz. Pojawiają się nawet wirujące dyski przypominające galaktyki i w ogóle jest dużo więcej detalu i akcji ;)

 

 

i jeden starszy filmik, z jednym bugiem wciąż jeszcze nie poprawionym, choć już dużo lepsza fizyka niż na początku;)

http://www.youtube.com/watch?v=GkvY-zrWQx4

 

poniżej obrazek z niższej precyzji:

post-23192-0-40618100-1374338628_thumb.jpg

 

Następna wersja będzie już miała rozróżnienie gazu/gwiazd i ciemnej materii jak również dalsze poprawki w dokładności. Jeśli jeszcze was nie zanudziłem tymi filmikami, to wrzucę kolejny update;)

 

Pozdrawiam!

  • Lubię 9
Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.