Jak radzić sobie ze zbyt dużą ilością danych?


14

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

  1. robić filmy o nieruchomościach,
  2. wykonać analizę Fouriera,
  3. 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?


To może wydawać się szerokim pytaniem. Jeśli tak się czujesz, proszę o sugestie, w jaki sposób mogę być bardziej szczegółowy.
Yann,

1
Zobacz także, jak niektóre grupy eksperymentalne radzą sobie z tym problemem. Fizyka wysokoenergetyczna (al CERN) i astrofizyka mogą mieć jeszcze większe skale danych, które muszą być przechowywane (lub nawet filtrowane przed przechowywaniem, ponieważ dane przychodzą szybciej niż można je zapisać w dowolnym magazynie), dystrybuowane i analizowane.
Brian Diggs,

Odpowiedzi:


10

Myślę, że być może będziesz musiał podzielić produkcję, aby dopasować swoje cele:

  1. w przypadku filmów nieruchomości prawdopodobnie nie potrzebujesz pełnej rozdzielczości przestrzennej i wszystkich zmiennych. Ostrożnie wybierz, co chcesz pokazać, i pomyśl o ostatecznej rozdzielczości filmu, który chcesz wyświetlić, prawdopodobnie nie będzie miał 8 miliardów pikseli.
  2. W przypadku analiz Fouriera (lub takich jak POD), jeśli są one czasowe, prawdopodobnie możesz po prostu pobrać kilkaset punktów mądrze wybranych w swojej dziedzinie. Jeśli są przestrzenne, prawdopodobnie potrzebujesz tylko kilku migawek, a nie 1500. I znowu, nie ze wszystkich właściwości.
  3. Aby uśrednić czas, możesz po prostu dodawać do tego samego pola i nie musisz się martwić o wymiar czasu, prawda? Uśrednianie przestrzenne jest jednak bolesne, szczególnie jeśli chcesz spojrzeć na jego ewolucję w czasie. Ale więcej przetwarzania online przed zrzuceniem danych może zmniejszyć ich rozmiar ...

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).


Dlaczego uśrednianie przestrzenne jest bolesne? Po prostu zrób to w locie i napisz wynik, który powinien być niewielki.
David Ketcheson,

@DavidKetcheson Uśrednianie przestrzenne jest bolesne, ponieważ wymaga dużej komunikacji i może mieć wpływ na topologię domeny. Nie? Jasne, jeśli masz czystą prostopadłą siatkę wyrównaną z ramką odniesienia, nie jest to takie złe, ale nadal musisz wykonać inteligentną kombinację obliczeń i MPI_REDUCE, ponieważ przy siatce tego rozmiaru nie można po prostu wykonać ALL_REDUCE na 1 Myślę, że procesor ...
FrenchKheldar,

1
Okej, teraz rozumiem twój komentarz. Ale komunikacja zwykle nie jest taka zła, ponieważ można uśrednić lokalnie każdy proces, a następnie zmniejszyć tylko jedną liczbę zmiennoprzecinkową na proces. Z mojego doświadczenia (na rdzeniu BlueGene / P 65K) koszt tego jest trywialny, szczególnie w porównaniu z kosztami I / O. W rzeczywistości wykonujemy ALL_REDUCE na wszystkich 65 000 rdzeniach na każdym kroku i jest to bardzo szybkie.
David Ketcheson,

@DavidKetcheson Właściwie teraz myślę, że też źle zrozumiałem twój punkt, a także przeceniałem koszty redukcji danych. To, co miałem na myśli, było czymś w rodzaju uśrednienia przedziałowego / azymutalnego, w którym musiałbyś przechowywać / wyprowadzać pełne dane 2D, które mogą, ale nie muszą znajdować się na tej samej siatce, co siatka obliczeniowa. Ale masz rację, faktyczny koszt MPI_ALL_REDUCE sam w sobie nie stanowi problemu.
FrenchKheldar,

8

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ół”.


3

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.


3

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.