Motivation
Der technische Aufbau von High Performance Computing (HPC) Systemen wird zunehmend komplexer. Dieser Trend wird vor allem durch die Entwicklung in drei Bereichen getragen. Erstens steigt die Zahl der Komponenten (Rechenknoten und -kerne) stetig an (Skalierbarkeit), zweitens werden zunehmend eine Vielzahl verschiedenartiger Bausteine innerhalb eines Systems eingesetzt (Heterogenität), und drittens werden die Leistungseigenschaften der Komponenten zunehmend dynamisch veränderlich und schwer vorhersehbar (Variabilität). Insbesondere diesem letzten Aspekt, der immer größer werdenden dynamischen Variabilität, widmet sich das Projekt Chameleon. Die heute verbreiteten Programmieransätze sind oft nur schlecht für hochvariable Systeme geeignet und können in Zukunft möglicherweise nur einen Teil der wahren Leistungsfähigkeit moderner Systeme nutzen, wodurch hohe Investitionen in Rechensysteme brachliegen würden.
Ziele und Vorgehen
Chameleon entwickelt hierfür eine taskbasierte Programmierumgebung. Tasks sind kleine Arbeitsschritte, in die eine größere Aufgabe unterteilt wird. Um eine globale Abstimmung (Synchronisation) über alle Teile eines Rechners hinweg und daraus resultierende Wartezeiten zu vermeiden, werden bei Tasks einzelne Eingabe–Ausgabe Abhängigkeiten spezifiziert. Ein solches taskbasiertes Programmiermodell ist somit wesentlich besser auf Systeme mit dynamischer Variabilität vorbereitet und kann deren Leistungsfähigkeit besser nutzen. Eine Vielzahl existierender Anwendungen wurden unter Verwendung der weit verbreiteten Industriestandards MPI (Message Passing Interface) und OpenMP (Open Specification for Multiprocessing) entwickelt. Vor diesem Hintergrund geht es in Chameleon nicht um eine völlige Neuentwicklung. Die genannten Programmiermodelle sollen um eine taskbasierte Ausführung erweitert und angepasst werden. Die dynamischen Leistungsdaten, die zur effizienten Ausführung von Tasks nötig sind, werden bei Chameleon von einer Überwachungs- bzw. Introspektionskomponente bereitgestellt.
Innovationen und Perspektiven
Die Fähigkeit von Chameleon auf dynamische Variabilität reagieren zu können, soll anhand von zwei Anwendungen an der TU München erprobt werden. SeisSol simuliert komplexe Erdbebenszenarien und die daraus folgende Ausbreitung seismischer Wellen. Die knotenlokale Parallelisierung basiert hier auf einer eigens implementierten sogenannten Taskqueue, die Vorrangrelationen zwischen den Tasks berücksichtigt. Die zweite Anwendung sam(oa)² nutzt weitverbreitete numerische Lösungsmethoden im Bereich wissenschaftlich technischer Aufgabenstellungen und implementiert Lastbalancierung mit Hilfe raumfüllender Kurven. sam(oa)² kann unter anderem für die Simulation von Tsunami- Ereignissen verwendet werden. Insgesamt liefert Chameleon damit einen Beitrag zur Stärkung der Methodenkompetenz für HPC-Software in Deutschland.