Wie gehe ich mit zu vielen Daten um?

14

Unsere Plasmadynamiksimulationen liefern oft zu viele Informationen. Während der Simulationen zeichnen wir verschiedene physikalische Eigenschaften auf einem Gitter (x, y, z, t) mit einer Größe von (8192 x 1024 x 1024 x 1500) für mindestens 10 Eigenschaften auf. Diese Informationen werden nach Abschluss der Simulation verarbeitet. Damit wir

  1. Filme von Immobilien machen,
  2. eine Fourier-Analyse durchführen,
  3. Durchschnittswerte berechnen.

Dieses einfache Speichern so vieler Informationen wie möglich funktionierte einwandfrei, als wir kleinere Systeme untersuchten. Dies gab uns die Flexibilität, mit den Ergebnissen zu interagieren und später zu entscheiden, was wir damit machen wollten. Außerdem konnten wir unsere Rechenressourcen (CPU-Zeit) für die einfache Ausführung der Simulationen verwenden.

Wir haben damit begonnen, die Fourier-Analyse im laufenden Betrieb durchzuführen und nur nach einem ausgewählten Bereich von Längenskalen zu filtern. Aus numerischen Gründen müssen wir manchmal Längenskalen auflösen, die kleiner sind, als wir tatsächlich interessiert sind. In diesen Fällen hilft dieser Filter sehr. Wir untersuchen auch verschiedene parallele E / A- Bibliotheken, z. B. parallele E / A-Optionen, insbesondere paralleles HDF5 .

Welche Strategien stehen zur Verfügung, um die Effizienz der Datenverarbeitung zu maximieren?

Hat es einen Vorteil, alle Analysen (ohne Nachbearbeitung, z. B. Filme und Plots) im laufenden Betrieb durchzuführen?

Ich kann mir vorstellen, dass dieses Problem in anderen Bereichen der Forschung auftaucht. Zum Beispiel könnten Sie eine Molekulardynamiksimulation haben, die sich für eine lange Zeit entwickeln muss, aber Sie interessieren sich für den kurzen Moment, in dem etwas Interessantes passiert. Bei CFD ist die frühe Zeitentwicklung möglicherweise langsam, aber sobald Turbulenzen auftreten, ist möglicherweise eine höhere Zeitauflösung erforderlich, um die Dynamik zu überwachen.

Gibt es frei verfügbare Beispiele für eine ausgefeilte Ergebniserfassung aus Simulationen?

Yann
quelle
Dies scheint eine weit gefasste Frage zu sein. Wenn Sie so denken, machen Sie bitte Vorschläge, wie ich genauer sein kann.
Yann
1
Schauen Sie sich auch an, wie einige Versuchsgruppen mit diesem Problem umgehen. Hochenergiephysik (CERN) und Astrophysik können noch größere Datenmengen enthalten, die gespeichert (oder sogar vor dem Speichern gefiltert werden müssen, da Daten schneller eingehen, als sie in einen Speicher geschrieben werden können), verteilt und analysiert werden müssen.
Brian Diggs

Antworten:

10

Möglicherweise müssen Sie Ihre Ausgabe aufteilen, um Ihre Ziele zu erreichen:

  1. Für die Filme mit Eigenschaften benötigen Sie wahrscheinlich nicht die vollständige räumliche Auflösung und alle Variablen. Wählen Sie sorgfältig aus, was Sie anzeigen möchten, und überlegen Sie, wie hoch die endgültige Auflösung des Films sein soll, der wahrscheinlich keine 8 Milliarden Pixel haben wird.
  2. Bei den Fourier-Analysen (oder Dingen wie POD) können Sie, wenn sie zeitlich sind, wahrscheinlich nur ein paar hundert Punkte abtasten, die in Ihrem Bereich mit Bedacht ausgewählt wurden. Wenn sie räumlich sind, benötigen Sie wahrscheinlich nur ein paar Schnappschüsse und nicht 1500. Und auch hier nicht alle Eigenschaften.
  3. Für die Zeitmittelung können Sie einfach das gleiche Feld hinzufügen und müssen sich nicht um die Zeitdimension kümmern, oder? Die räumliche Mittelung ist jedoch schmerzhaft, insbesondere wenn Sie die zeitliche Entwicklung untersuchen möchten. Eine stärkere Online-Verarbeitung vor dem Speichern der Daten kann jedoch deren Größe verringern ...

Dies bedeutet ziemlich viel Arbeit, um dedizierte Ausgänge anstelle eines großen allgemeinen zu haben, aber dies sollte helfen, die Kosten und die Größe niedrig zu halten. Hoffe das hilft !

Nur noch eine Sache, die ich hinzufügen möchte: Im Allgemeinen wird die volle Auflösung der Daten nur für den Neustart von Dateien benötigt, dh Dateien, um Ihre Simulation neu zu starten. Sie brauchen nicht so viele davon für eine gegebene Simulation (sagen wir 100, wenn also zwischen zwei Neustarts etwas passiert, verlieren Sie höchstens 1% Ihrer Berechnung), während Sie wahrscheinlich die Ausgabefrequenz für Ihre Simulation erhöhen möchten Filme. Und das können Sie zum Beispiel bei nur 1/64 der Auflösung tun (1 alle 4 Punkte in jede Richtung).

FranzösischKheldar
quelle
Warum ist die räumliche Mittelung schmerzhaft? Mach es einfach on-the-fly und schreibe das Ergebnis auf, das winzig sein sollte.
David Ketcheson
@DavidKetcheson Die räumliche Mittelwertbildung ist schmerzhaft, weil sie viel Kommunikation erfordert und möglicherweise von der Topologie Ihrer Domain beeinflusst wird. Sicher, wenn Sie ein reines orthogonales Gitter haben, das mit Ihrem Referenzrahmen ausgerichtet ist, ist es nicht so schlimm, aber Sie müssen dennoch eine clevere Kombination aus Berechnung und MPI_REDUCE durchführen, da Sie mit einem Gitter dieser Größe nicht einfach ALL_REDUCE für 1 ausführen können Prozessor Ich würde denken ...
FrenchKheldar
1
Okay, jetzt verstehe ich deinen Kommentar. Die Kommunikation ist jedoch in der Regel nicht so schlecht, da Sie über jeden Prozess lokal einen Durchschnitt bilden und dann nur einen einzigen Gleitkommawert pro Prozess reduzieren können. Nach meiner Erfahrung (auf einem 65K-Core-BlueGene / P) sind die Kosten hierfür gering, insbesondere im Vergleich zu den E / A-Kosten. Tatsächlich führen wir bei jedem Zeitschritt eine ALL_REDUCE-Operation über die gesamten 65K-Kerne durch, und dies ist sehr schnell.
David Ketcheson
@DavidKetcheson Eigentlich glaube ich jetzt, dass ich Ihren Punkt auch missverstanden habe, und ich habe auch die Kosten der Datenreduktion überschätzt. Was ich vorhatte, war so etwas wie eine spanweise / azimutale Mittelung, bei der Sie die vollständigen 2D-Daten speichern / ausgeben müssten, die sich möglicherweise auf demselben Raster befinden wie das Rechenraster. Aber Sie haben Recht, die tatsächlichen Kosten für MPI_ALL_REDUCE sind an sich kein Problem.
FrenchKheldar
8

Ich denke, die gegenwärtigen Meister dieser Kunst sind die Experimente der großen Teilchenphysik (ich kenne CDF und D0 am besten, weil ich alt bin und an der Universität von Chicago arbeite). Sie haben Hardware-Trigger, die Petabyte (oder mehr) pro Jahr verwerfen. Dies ist jedoch das ganze Thema der Quantisierung / Diskretisierung oder "Wegwerfen nur, was Sie nicht brauchen". Ich bin mir nicht sicher, ob Sie überhaupt eine vernünftige Antwort geben können. Es ist besser, das Problem auf "Ich habe eine PDE-Simulation, die auf folgende Weise diskretisiert wurde, und möchte die Stichprobe effizient reduzieren" einzugrenzen.

Matt Knepley
quelle
3

Peter LePage ist in Gitter-QCD-Kreisen ziemlich bekannt dafür, dass er eine Methode vorschlägt, mit der unvorstellbar große Gitterraster durch Auffinden und Anwenden guter analytischer Nahbereichslösungen reduziert werden können.

Dies entspricht in etwa der Feststellung, dass eine Reihe gut ausgewählter Splines eine genaue Integration mit weniger Knoten als bei der Trapezmethode ermöglichen kann (mit der Ausnahme, dass Sie diese in vier Dimensionen gleichzeitig nutzen können).

Das Ergebnis ist, dass Sie die Rohgröße des Datensatzes gegen mehr Berechnung pro Knoten eintauschen - Schritt, aber am Ende aufgrund der hohen Dimensionalität Ihres Problems die Nase vorn haben .

Ich bin kein Thema, das ich gut genug kenne, um angemessene Hinweise zu geben, aber es hat in der Vergangenheit in einigen Bereichen funktioniert.

dmckee
quelle
3

Die Frage ist etwas weit gefasst, deshalb werde ich eine entsprechend vage Antwort geben, die mögliche Techniken in solchen Fällen vorschlägt.

1) On-the-fly-Verarbeitung, an der Sie bereits arbeiten. Eine Möglichkeit, die Verarbeitung im laufenden Betrieb durchzuführen und sie dennoch vom Datenerzeugungsschritt zu entkoppeln, besteht darin, eine zyklische Ausgabedatei zu erstellen, die immer die letzten N Schritte enthält und die Analyse in einem separaten Prozess ausführen zu lassen. Offensichtlich müssen Sie die beiden synchronisieren, um eine Rennbedingung zu verhindern.

2) Sorgfältigere Auswahl der gespeicherten Daten. Dies ist leider sehr situationsspezifisch.

3) Komprimieren Sie Ihre Daten, bevor Sie sie speichern, oder verwenden Sie eine Speicherbibliothek mit integrierten Komprimierungsoptionen wie HDF5.

4) Speichern Sie regelmäßige Kontrollpunkte anstelle der vollständigen Ausgabe. Wenn Sie alle N Schritte einen vollständigen Prüfpunkt speichern, dh genügend Daten, um die Simulation von dort aus neu zu starten, können Sie die fehlenden Daten bei Bedarf hochparallel rekonstruieren. Beachten Sie, dass bei Monte-Carlo-Methoden der Prüfpunkt den Status der Zufallszahlengeneratoren enthalten muss. Sie können dies als eine sehr anwendungsspezifische Komprimierungstechnik ansehen.

khinsen
quelle