JOSTLE: 
Dynamische Lastverteilung für Strömungscodes

Sabina Rips

JOSTLE ist ein Lastverteilungs-Tool für Gitter, wie sie in dynamischen Strömungscodes verwendet werden. Es zeichnet sich u.a. dadurch aus, daß während der Laufzeit des Programms parallel auf jedem Knoten eines Parallelrechners die Last neu berechnet wird. Dies führt zur Minimierung des Lastverteilungs-Overheads bei hoher Güte der neu berechneten Partitionen.

Arbeitsschwerpunkt vieler Institute ist die Entwicklung paralleler Strömungscodes für unterschiedliche Anwendungsgebiete. Waren dabei in den letzten Jahren hauptsächlich stationäre Simulationen das Ziel, so wird heutzutage immer mehr auch durch die wachsenden Möglichkeiten im Hardware-Bereich transienten Simulationen Beachtung geschenkt. Der Einsatz dieser Technik wirft jedoch bei paralleler Verabeitung neue Probleme auf. Insbesondere kann sich die Last eines Prozessors durch neu hinzugefügte oder gelöschte Gitterzellen in einem anderen Zeitschritt stark verändern. Das so entstandene Lastungleichgewicht kann dabei zu erheblichen Effizienzverlusten führen.

Zur Vermeidung dieser Verluste sollte ein Lastverteiler eingesetzt werden, der mit möglichst geringem Aufwand ein Lastgleichgewicht wiederherstellt.

Am RUS wird dazu seit einigen Monaten das Tool JOSTLE, das von der Universität Greenwich für den Einsatz bei unstrukturierten Gittern entwickelt wurde, getestet.

Mit Hilfe dieses Tools kann sowohl ein gutes Lastgleichgewicht erreicht, als auch die dafür notwendigen Zusatzkosten minimiert werden.

Was JOSTLE gegenüber anderen Tools auszeichnet, ist, daß es verteilt arbeitet, d.h. der Overhead der Lastverteilung wird auf die einzelnen Prozessoren verteilt. Das macht den Vorgang sehr schnell, fällt doch auch das Einsammeln der Daten auf einem zentralen Prozessor, wie bei zentralen Verfahren notwendig, weg.

JOSTLE wird durch den Aufruf einer Bibliotheksfunktion im (C- oder Fortran77-) Anwenderprogramm aktiviert. Der Benutzer kann also selber entscheiden, wann Lastverteilung stattfinden soll. Ist beispielsweise nach einigen Zeitschritten das Lastungleichgewicht so hoch, daß eine Umverteilung angezeigt ist, dann kann simultan auf jedem Prozessor ein JOSTLE-Aufruf getätigt werden. JOSTLE berechnet daraufhin die zu verschiebende Last, wobei auch versucht wird, die Ränder des Gitters an den Prozessorgrenzen so zu gestalten, daß möglichst wenig Interprozessorkommunikation, die durch den Datenaustausch zwischen den Zellen entsteht, nötig ist.

Ein weiterer Aspekt bei der Bestimmung zu verschiebender / migrierender Zellen ist, neben dem Ziel der Zellgleichverteilung, Zellen nur zwischen benachbarten Prozessoren zu migrieren, also den Prozessorgrad relativ gering zu halten. Dadurch wird er-reicht, daß bei Zellmigrationen nur zwischen wenigen Prozessoren kommuniziert werden muß.

Wurde auf jedem Prozessor mit JOSTLE bestimmt, welche Zellen wohin migriert werden müssen, um ein Lastgleichgewicht mit möglichst optimalen Partitionen zu erreichen, muß als nächstes die eigentliche Zellmigration, also das Verschieben der Datenstrukturen, stattfinden. Um dieses möglichst optimal zu realisieren, können z.B. Tools wie DDD1 eingesetzt werden. DDD wurde am RUS entwickelt und vereinfacht die Handhabung der Daten des Gitters. Ein Aspekt ist z.B. das relativ einfache und optimierte Verschieben von Zellen von einem Prozessor zu einem anderen, unter Beibehaltung von Nachbarstrukturen.

Auf welche Art und Weise, d.h. mit welchem Tool, Zellmigrationen realisiert werden, bleibt natürlich dem Entwickler überlassen, JOSTLE dient lediglich als Entscheider.

Neben der beschriebenen parallelen JOSTLE-Version, die im allgemeinen auf ein bereits zerteiltes Gitter aufsetzt und MPI oder PVM voraussetzt, existiert seit kurzem auch die Möglichkeit, dieses Tool als initialen Partitionierer zu verwenden. Dabei wird das komplette Anfangsgitter, das sich auf einem der Prozessoren befindet, zunächst grob zerteilt und anschließend die erzeugte Zerlegung optimiert.

Das RUS hat vor wenigen Monaten einen Kooperationsvertrag mit der University of Greenwich abgeschlossen, der nicht nur die Nutzung von JOSTLE für alle Institute der Universität Stuttgart beinhaltet, sondern auch die Mitwirkung an seiner Weiterentwicklung. Ziele sind dabei die Erweiterung seines Einsatzbereichs und Anpassung an die Bedürfnisse von CFD-Entwicklern der Stuttgarter Universität.

JOSTLE ist derzeit auf der Cray T3E, NEC SX-4, IBM SP2, Hitachi SR2201,iIntel Paragon und einer SGI PowerChallenge verfügbar. Bei Bedarf kann es auf weiteren Plattformen installiert werden.

Nähere Informationen gibt es im WWW unter:

http://www.hlrs.de/structure/support/parallel_computing/tools/loadbalancer/

Sabina Rips, NA-5799
E-Mail: rips@hlrs.de
 

1: von Klaus Birken (siehe http://dom.ica3.uni-stuttgart.de/~birken/projects/ddd/)