-
Notifications
You must be signed in to change notification settings - Fork 0
LIttleAncientForestKami/DualSPHysicsRecon
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Co to jest SPHysics? Informatyka w służbie fizyki, czyli komputer jako maszyna obliczeniowa. Tu SPH jest skrótem od Smoothed Particle Hydrodynamics, czyli Hydrodynamiki Wygładzonych Cząsteczek. Całość ma służyć do dobrego modelowania płynów, inną niż dotychczasowe (trójkąty, poligony, itp.) metodą. Po teoretyczne podstawy i bardziej szczegółowe informacje odsyłam do bibliografii. SPHysics był pisany w Fortranie. Końcowy wynik SPHysics to dane, jakie można zwizualizować np. narzędziem ParaView. Ograniczenia SPHysics. Problemem było to, że przy symulacjach płynno-stałych (dotyczących cieczy i ciał stałych) interakcje cząsteczek były nie do przeliczenia na pojedynczej maszynie. Przy problemach 3D ilość cząsteczek sięgała wielu (10^6 - 10^9) milionów. W ten sposób rewelacyjne algorytmy i teorie (z punktu widzenia fizyki) leżące u podstaw SPH nie mogły zostać zamodelowane bez użycia cud-maszyn. Rozwiązania były dwa. Parallel SPHysics, wykorzystujący klastry maszyn (przez MPICH lub OpenMPI), oraz Dual SPHysics. Co to jest Dual SPHysics? Najnowsza (z końca maja 2011) wersja oprogramowania SPHysics, pomyślana na wieloprocesorowe maszyny. Ma na celu zrobienie użytku z nowoczesnych architektur celem zrównoleglenia i przyspieszenia obliczeń. Napisana jest w C++ z użyciem CUDA (dla GPU). Działa w trybach: CPU i GPU. Zawiera też narzędzia odpowiedzialne za poszczególne etapy obliczeń. Końcowy wynik Dual SPHysics to dane, jakie można zwizualizować np. narzędziem ParaView. CPU a GPU: Tryb GPU jest lepszy, nie ma co ukrywać. Jak bardzo - odsyłam do dokumentacji Dual SPHysics (sekcja 9: Test Cases, strona 31) dotyczącej odpalania przykładów i czasów jakie się uzyskało na każdym w różnych trybach. Różnice są wielokrotne (kilkudziesięciokrotne - sic!). Tryb GPU jest też niestety jedynie dla posiadaczy szczęśliwych nVidii. Za dokumentacją: To run DualSPHysics on GPU, there is no need to install compilers or new software, only an NVIDIA CUDA-enabled GPU card is needed and the last version of the driver must be installed. Dla chętnych lub upartych polecam emulator GPU na CPU: MCUDA. Czym jest CUDA? Za stroną oficjalną: http://www.nvidia.pl/object/cuda_home_new_pl.html i Wikipedią: http://en.wikipedia.org/wiki/CUDA CUDA to równoległa architektura rozwijana przez NVIDIA. Jest wspierana przez niektóre ich karty, odsyłam po więcej szczegółów do podlinkowanych stron oraz załączonych PDFów. Wspierane karty (wg Wikipedii): http://en.wikipedia.org/wiki/CUDA#Supported_GPUs Czym jest MCUDA? Wersją CUDA dla wielordzeniowych procesorów (ang.: "CUDA for Multicore CPUs"), napisaną przez Johna Strattona. Po więcej odsyłam do bibliografii. Etapy obliczeń: Wszystkie przykłady mają skrypty, które wystarczy wywołać, by przejść całość obliczeń za jednym zamachem. Tworząc własną symulację nie będzie już tak prosto. Etapy są następujące (nazwy od używanych narzędzi): 1) GenCase - generacja parametrów przypadku, efekt końcowy to plik XML. Cholernie ważny, ma osobną dokumentację, załączoną. 2) DualSphysics - właściwa część obliczeń, sedno biblioteki 3) BoundaryVTK - tworzy pliki wykorzystywane przy wizualizacji kształtów i geometrii granic 4) PartVTK - tworzy pliki używane przy wizualizacji cząsteczek 5) MeasureTool - z plików binarnych wyplutych przez DualSphysics przelicza metryki i porównuje efekty wyliczone z (np.) tymi już posiadanymi, z prawdziwego eksperymentu. Etapy dzielimy z grubsza na "pre-", "post-" i "processing". Każdy z nich jest opisany szczegółowo w swojej sekcji dokumentacji (sekcja 5: Processing, 6: Pre-processing, i 7: Post-processing). Struktura katalogów Dual SPHysics: - Sekcja 8: Running Dual SPHysics (strona 29 w dokumentacji DualSPHysics_v1.2) doskonale opisuje strukturę katalogów jaką dostaniemy po rozpakowaniu. Pięć minut lektury i wiadome jest wszystko. Dołączam zrzut ekranu z dokumentacji. Dodatkowo, w każdym katalogu jest plik txt z opisem zawartości. Szczerze polecam! readme.txt z katalogu HELP - nieodzownego przy tworzeniu własnej symulacji: CaseTemplate.xml will help users to create their own testcases This XML file contains all the options to create all the objects, define movements and describe parameters of execution HELP_GenCase.out includes the HELP about the execution parameters of the GenCase code HELP_DualSPHysics.out includes the HELP about the execution parameters of the DualSPHysics code HELP_BoundaryVTK.out includes the HELP about the execution parameters of the BoundaryVTK code HELP_PartVTK.out includes the HELP about the execution parameters of the PartVTK code HELP_MeasureTool.out includes the HELP about the execution parameters of the MeasureTool code The folder XML_examples includes some XML examples of animations that can be seen at www.vimeo.com/dualsphysics: - CaseFlap_Def.xml shows an example of sinusoidal rotation - CaseTurbine_Def.xml shows an example of accelerated rotation and how to draw a cylinder - CaseInitialVelocity_Def.xml shows how to impose initial velocities to volumes of fluid - CaseSloshing_Def.xml shows how to describe a sloshing tank Sprzęt i system: cat /proc/cpuinfo | grep [...] 4-rdzeniowy procesor Intel i5, dane modelu: M480, 2,67 GHz arch x86_64 uname -a 2.6.32-34-generic #77-Ubuntu SMP Tue Sep 13 19:39:17 UTC 2011 x86_64 GNU/Linux cat /proc/meminfo | grep Total MemTotal: 3917908 kB SwapTotal: 1956856 kB Karta graficzna: lshw -C video WARNING: you should run this program as super-user. *-display description: VGA compatible controller product: M92 [Mobility Radeon HD 4500 Series] vendor: ATI Technologies Inc physical id: 0 bus info: pci@0000:01:00.0 version: 00 width: 32 bits clock: 33MHz capabilities: bus_master cap_list rom configuration: driver=radeon latency=0 resources: irq:34 memory:c0000000-dfffffff(prefetchable) ioport:2000(size=256) memory:f0300000-f030ffff memory:f0320000-f033ffff(prefetchable) Przykłady: Wedle dokumentacji Dual SPHysics (sekcja 9: Test Cases, strona 31) generacja przykładów mierzona w minutach różni się między wersjami biblioteki, architekturą użytej maszyny oraz przy i bez wspomagania procesora graficznego. Polecam lekturę zawartych w tej sekcji tabel - pozwala to na uniknięcie niemiłej niespodzianki jaka była moim udziałem. Przykład z pompą liczył się na mojej maszynie KILKANAŚCIE DNI non-stop (i tak o wiele lepiej niż mógł - w dokumentacji podają czas dłuższy niż - sic! - MIESIĄC). Jeśli nie posiadacie dostępu do maszyny o lepszych osiągach niż moja mogącej długo działać bez przerwy (zatem nie lab, gdzie każdy może ją Wam wyłączyć), odradzam zlekceważenie dokumentacji i odpalanie na zasadzie "zobaczmy jak to działa". Chyba, że na przykładach 2D - są najszybsze: na Intelach i5 powinny zająć poniżej godziny obliczeń (na jeden). Niedowiarków odsyłam do plików poniżej. Zebrane czasy symulacji uzyskane na mojej maszynie - załącznik "Pump_Run.out" opisuje cały przebieg obliczeń dla przykładu z pompą - załącznik "DamBreak2D_Run.out" jest analogiczny dla dwuwymiarowej symulacji przerwania tamy Wstępna konfiguracja danych: Załączniki: CasePump_Def.xml CaseDamBreak2D_Def.xml exemplary.xml + komentarze Uruchamianie: CasePump_linux64_GPU.bat - tylko karty graficzne nVidia CasePump_linux64_CPU.bat - kilkanaście dni obliczeń - oba pliki uruchamia się bez parametrów z katalogu z przykładem Użyte programy: Załączam (na płytce) zipy odpowiednich wersji. Osoby zamierzające pracować na innym systemie / architekturze odsyłam do stron w bibliografii. - DualSPHysics_v1.2_linux_64bit.zip - esencja, biblioteka w C++ z przykładami i dokumentacją - ParaView-3.10.1-Linux-x86_64.tar.gz - narzędzie wizualizacyjne z mnóstwem opcji, filtrów, widoków itp. - mcuda1.0.1.tgz - emulator GPU (nie, że szczególnie był przydatny) Dokumentacja: - DualSPHysics_v1.2.000_GUIDE - w oparciu o ten dokument powstało to opracowanie. - GenCase_XML_GUIDE - niezbędnik dla przejścia przez pierwszą fazę symulacji (pre-processing). - ParaView User's Guide v3.10 - ma to 400 stron, zatem należy łowić to, czego się potrzebuje (np. co to jest VTK i jak działa); szczęśliwie podręcznik użytkownika ParaView to mała część tej książki. - ParallelSPHysics_v2.0_GUIDE - dokumentacja dla wersji równoległej - MCUDA_Update_(11-4-2009).pdf - PDF dokumentujący MCUDA Wszystko w PDF, załączone na płytce. Po więcej odsyłam do bibliografii. Bibliografia i źródła do dalszej lektury: - SPHysics Wiki: http://wiki.manchester.ac.uk/sphysics/index.php/SPHYSICS_Home_Page - Dual SPHysics page: http://ephyslab.uvigo.es/index.php/eng/dual_sphysics/ - Dual SPHysics Guide [PDF]: http://dual.sphysics.org/frs/download.php/77/DualSPHysics_v1.2_GUIDE.pdf - List of all publications, articles, books...: http://wiki.manchester.ac.uk/sphysics/index.php/SPHYSICS_Publications - MCUDA: http://impact.crhc.illinois.edu/mcuda.php - MCUDA's author's email: stratton@illinois.edu - GPU Computing on MCUDA: http://www.gpucomputing.net/?q=node/138 - Paraview main page: http://www.paraview.org/paraview/resources/software.html - płytki DVD z danymi, u pana Aldy
About
Reconnaissance of Dual SPHysics library
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published