Application of Optimisation Strategies to Shallow Water Flow Simulation
Creators: name: Amann, Finn
Publisher: name: Zenodo
Year: 2021
Subjects: Shallow Water Equations
High Performance Computing
Model Development
Finite Volume Method

description: Abstract (EN): Numerical surface water flow models are often used by decision makers to design flood protection measures, because they offer crucial information about the flow field and temporal characteristics of potential inundations. Large scale simulations, taking multiple days to complete, may offer detailed insights, whereas a smaller scale may be necessary to create quick forecastings. This is why the computational performance and an efficient use of given resources by the numerical model must not be neglected.<br> Steffen et al. (2020) introduced a new open-source C++ framework for explicit FVM solvers called hms++. The framework includes a performance-oriented rewrite of a robust Godunov-type solver for the depth-averaged shallow water equations, originally implemented in the Java framework Hydroinformatics Modeling Systems. In this thesis, the solver is verified, a number of new traversal strategies for the edge-based flux calculation are introduced and investigated for parallel performance and scalability on shared-memory systems. Since some of the introduced patterns are based on the principle of cache blocking, a preliminary study concerning the tile size is carried out as well. The test platform was a compute node containing two sockets, each equipped with an Intel Xeon Platinum 9242, totaling 96 physical cores and 192 hardware threads.<br> The preliminary study reveals load balancing issues in the seamless block-wise traversal patterns, leading to a redesign of the approaches. Increasing the block size slightly improved the performance of the flux calculation on a large mesh set, although in total, the speed-up is somewhat diminished when summing up all computational steps involved. The study also finds that an increase of the block size does not result in any performance benefits for smaller meshes, probably due to the large amount of cache memory that is available on the test platform. In the future, more elaborate tests, involving a wider range of mesh sizes and varying numbers of utilised threads, should be carried out.<br> The parallel performance investigation shows that the introduced traversal patterns scale well, obtaining maximum speed-ups ranging between 57.52× and 67.41× for a large mesh without the use of simultaneous multithreading (SMT). On a small mesh, higher speed-ups are obtained, ranging between 77.52× and 84.09×, except for row-wise traversal patterns. These patterns exhibit signs of increasing communication overhead when increasing the core count. Enabling SMT further speeds up all patterns for up to 32 cores. SMT mitigates performance for some patterns when more cores were utilised. Overall, the fastest or next to fastest computation times were obtained with the seamless block-wise traversal pattern. The pattern also showed good scalability on all meshes, regardless of SMT.<br> Lastly, a comparative study between hms++ and the Java version is carried out. The study includes a surface runoff simulation for a rainfall event in the Alps in Austria. Results show that hms++ is up to 1.26× faster the Java version. Nevertheless, the Java version performs better than expected, which suggests that a more encapsulated approach for the computational steps may further improve the performance of hms++. Abstract (DE): Numerische Strömungsmodelle können aufschlussreiche Informationen über den räumlichen und zeitlichen Verlauf von möglichen Überflutungen bieten, weshalb sie häufig im Bereich des Hochwasserschutzes eingesetzt werden. Dabei kann die Größenordnung und Rechenzeit solcher Modelle stark variieren. Modelle von großem Ausmaß können detaillierte Erkenntnisse liefern, was jedoch oftmals mit einem Rechenaufwand von mehreren Tagen oder Wochen verbunden ist. Kleinere Größendimensionen werden beispielsweise genutzt, um schnelle Voraussagen zu fundieren. Dies sind Gründe, weshalb die Rechenzeit und effiziente Nutzung der gegebenen Ressourcen wichtige Aspekte sind, die im Entwurf eines numerischen Modells berücksichtigt werden müssen.<br> In Steffen et al. (2020) wird ein neues Open-Source Framework vorgestellt, in welchem explizite Löser für die Finite-Volumen Methode implementiert werden können. Das Framework trägt den Namen hms++ und beinhaltet u. a. eine Performance-orientierte Neuaufsetzung eines Godunov-Lösers für die tiefengemittelten Flachwassergleichungen, der ursprünglich im Java Framework Hydroinformatics Modeling Systems implementiert wurde. In dieser Arbeit wird der Löser validiert und es werden eine Reihe von Traversierungsverfahren für die kantenbasierte Flussberechnung vorgestellt und auf ihre parallele Rechenleistung und Skalierbarkeit getestet. Da manche der vorgestellten Traversierungsverfahren das Cache-Blocking Prinzip nutzen, wird eine vorläufige Parameterstudie zur Blockgröße durchgeführt. Alle Studien nutzen eine Maschine mit zwei Prozessorfassungen, die jeweils mit einem Intel Xeon Platinum 9242 ausgestattet sind, sodass insgesamt 96 Rechenkerne und 192 Hardware Threads zur Verfügung stehen.<br> Die vorläufige Studie zur Blockgröße deckt die schlechte Lastenverteilung der ursprünglich entworfenen Strategien auf, was zu einem Neuentwurf der Verfahren geführt hat. Die Blockgröße betreffend hat die Studie gezeigt, dass eine Vergrößerung die Flussberechnung auf einem großen Testgitter beschleunigt, jedoch wird die gewonnene Zeit durch das Aufsummieren mit den anderen Rechenschritten ausgeglichen. Auf einem kleineren Rechengitter konnte die Rechenleistung durch eine Blockvergrößerung nicht verbessert werden, was möglicherweise auf die große Menge des verfügbaren Cache-Speichers der Testmaschine zurückzuführen ist. Die Ergebnisse zeigen, dass weitere Untersuchungen auf einer größeren Anzahl von Gittern und genutzten Threads durchgeführt werden sollten. In der Untersuchung zur parallelen Rechenleistung zeigen die Traversierungsverfahren eine gute Skalierbarkeit und erzielen Beschleunigungsfaktoren von 57.52× bis 67.41× auf dem großen Testgitter, ohne den Einsatz von simultanem Multithreading (SMT). Für das kleine Gitter können alle Verfahren, bis auf die Row-wise-Traversierungsverfahren, sogar Faktoren zwischen 77.52× und 84.09× erzielen. Für höhere Kernanzahlen zeigen die Rowwise-Verfahren jedoch Anzeichen für einen erhöhten Kommunikations-Overhead, weshalb geringere Beschleunigungsfaktoren erzielt werden. SMT erzielt weitere Verbesserungen der Rechenleistung, solange weniger als 32 Rechenkerne genutzt werden. Wenn mehr Kerne genutzt werden, verringert SMT die Rechenleistung mancher Traversierungsverfahren. Ingesamt erzielt das Seamless Block-wise-Traversierungsverfahren die schnellsten bis zweitschnellsten Rechenzeiten und demonstriert durchweg gute Skalierbarkeit, unabhängig vom Einsatz von SMT.<br> Zuletzt wird eine Vergleichsstudie zwischen hms++ und der Java-Version durchgeführt. In der Studie wird ein Oberflächenabfluss simuliert, der auf einem realen Niederschlagsereignis basiert, das in den österreichischen Alpen im Jahr 2007 stattgefunden hat. Die Ergebnisse zeigen, dass hms++ bis zu 1.26× schneller als die Java-Version ist, sofern das Seamless Block-wise-Traversierungsverfahren genutzt wird.<br> In Zukunft sollte ein Berechnungsansatz für hms++ untersucht werden, in dem die einzelnen Berechnungsschritte stärker gekapselt sind. Als Ausgangspunkt dieser Anregung steht die Rechenleistung der Java-Version, welche höher als erwartet ist.