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
- Filme von Immobilien machen,
- eine Fourier-Analyse durchführen,
- 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?
Antworten:
Möglicherweise müssen Sie Ihre Ausgabe aufteilen, um Ihre Ziele zu erreichen:
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).
quelle
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.
quelle
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.
quelle
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.
quelle