Nasze symulacje dynamiki plazmy często generują zbyt wiele informacji. Podczas symulacji rejestrujemy różne właściwości fizyczne na siatce (x, y, z, t), która jest tak duża jak (8192x1024x1024x1500), dla co najmniej 10 właściwości. Informacje te są przetwarzane po zakończeniu symulacji. Dzięki temu my
- robić filmy o nieruchomościach,
- wykonać analizę Fouriera,
- obliczyć średnie właściwości.
Ten prosty zrzut jak największej ilości informacji działał dobrze, gdy badaliśmy mniejsze systemy. To dało nam elastyczność w interakcji z wynikami i późniejszego decydowania, co chcemy z tym zrobić. Pozwoliło nam to również przeznaczyć nasze zasoby obliczeniowe (czas procesora) na proste uruchomienie symulacji.
Rozpoczęliśmy proces wykonywania analizy Fouriera w locie i filtrowania tylko dla wybranego zakresu skal długości. Z powodów numerycznych czasami musimy rozwiązać skale długości, które są mniejsze niż jesteśmy w rzeczywistości zainteresowani, więc w takich przypadkach ten filtr bardzo pomaga. Badamy również różne równoległe biblioteki we / wy , np. Opcje równoległych we / wy, w szczególności równoległe HDF5 .
Jakie strategie są dostępne, aby zmaksymalizować wydajność przetwarzania danych?
Czy jest jakaś korzyść z przeprowadzania wszystkich analiz (bez przetwarzania końcowego, np. Filmów i fabuł) na bieżąco?
Mogę sobie wyobrazić ten problem pojawiający się w innych obszarach badań. Na przykład możesz mieć symulację dynamiki molekularnej, która musi ewoluować przez długi czas, ale interesuje Cię krótki moment, w którym dzieje się coś interesującego. Lub w CFD, wczesny rozwój może być powolny, ale gdy pojawią się turbulencje, może być potrzebna wyższa rozdzielczość czasowa do monitorowania dynamiki.
Czy są dostępne bezpłatnie przykłady wyrafinowanego zbioru wyników z symulacji?
Odpowiedzi:
Myślę, że być może będziesz musiał podzielić produkcję, aby dopasować swoje cele:
Oznacza to sporo pracy, aby mieć dedykowane wyjścia zamiast dużych ogólnych, ale to powinno pomóc w obniżeniu kosztów i wielkości. Mam nadzieję że to pomoże !
Jeszcze jedną rzecz, którą chcę dodać, na ogół pełna rozdzielczość danych jest potrzebna tylko do ponownego uruchomienia plików, tj. Plików do ponownego uruchomienia symulacji. Nie potrzebujesz ich tak wielu dla danej symulacji (powiedzmy 100, więc jeśli coś się stanie między 2 restartami, stracisz najwyżej 1% swojego obliczenia), podczas gdy prawdopodobnie chcesz zwiększyć częstotliwość wyjściową dla twojego kino. Możesz to zrobić na przykład przy 1/64 rozdzielczości (1 co 4 punkty w każdym kierunku).
źródło
Myślę, że obecni mistrzowie tej sztuki to eksperymenty z fizyką dużych cząstek (najbardziej znam CDF i D0, ponieważ jestem stary i pracuję na Uniwersytecie w Chicago). Posiadają wyzwalacze sprzętowe, które odrzucają petabajty (lub więcej) rocznie. Jest to jednak cały temat kwantyzacji / dyskretyzacji, czyli „wyrzucania tylko tego, czego nie potrzebujesz”. Nie jestem pewien, czy możesz udzielić rozsądnej odpowiedzi w ogóle. Lepiej byłoby zawęzić problem do czegoś w rodzaju: „Mam dyskretną symulację PDE w następujący sposób i chciałbym skutecznie próbkować w dół”.
źródło
Peter LePage jest dość znany w kręgach QCD-kratowych, ponieważ sugeruje metodę, w której niewykonalne duże siatki kratowe można by zmniejszyć poprzez znalezienie i zastosowanie dobrych rozwiązań analitycznych krótkiego zasięgu.
Jest to w przybliżeniu równoznaczne z zauważeniem, że zestaw dobrze dobranych splajnów może umożliwić dokładną integrację z mniejszą liczbą węzłów niż metoda trapezowa (z wyjątkiem tego, że w twoim przypadku możesz skorzystać z niego ponad czterema wymiarami na raz).
Rezultat jest taki, że wymieniasz pierwotny rozmiar zestawu danych, aby uzyskać więcej obliczeń dla każdego węzła - krok, ale ostatecznie wyjdziesz na przód, ponieważ na wysoką wymiarowość twojego problemu.
Nie jestem tematem, który znam wystarczająco dobrze, aby dać jakieś przyzwoite wskazówki, ale w przeszłości działał w niektórych dziedzinach.
źródło
Pytanie jest nieco ogólne, więc udzielę odpowiednio niejasnej odpowiedzi, która sugeruje możliwe techniki w takich przypadkach.
1) Przetwarzanie w locie, nad którym już pracujesz. Jednym ze sposobów przetwarzania w locie, a jednak oddzielenia go od etapu generowania danych, jest wygenerowanie cyklicznego pliku wyjściowego, który zawsze zawiera ostatnie N kroków, i przeprowadzenie analizy w osobnym procesie. Oczywiście musisz je zsynchronizować, aby zapobiec wyścigowi.
2) Ostrożniejszy wybór przechowywanych danych. Niestety jest to ściśle zależne od sytuacji.
3) Kompresuj dane przed ich zapisaniem lub użyj biblioteki pamięci ze zintegrowanymi opcjami kompresji, takimi jak HDF5.
4) Przechowuj regularne punkty kontrolne zamiast pełnej wydajności. Jeśli przechowujesz pełny punkt kontrolny co N kroków, tj. Wystarczającą ilość danych do ponownego uruchomienia symulacji, możesz zrekonstruować brakujące dane w bardzo równoległy sposób, jeśli to konieczne. Należy zauważyć, że w przypadku metod Monte-Carlo punkt kontrolny musi obejmować stan generatorów liczb losowych. Można faktycznie uznać tę technikę kompresji za ściśle określoną dla aplikacji.
źródło