Motivation
Nutzer moderner Hochleistungsrechnersysteme stehen vor zwei Herausforderungen. Zum einen ist inzwischen jeder einzelne Rechen-Knoten eines solchen Systems derart komplex, dass verschiedene Arten von Datenspeichern und verschiedene Ebenen der Parallelität im Verbund gezielt berücksichtigt werden müssen, um die vorhandene Rechenleistung optimal zu nutzen. Erschwerend kommt hinzu, dass derzeit viele Hardware-Hersteller Systemkonzepte anbieten, die sich sowohl im Hardware-Design deutlich voneinander unterscheiden als auch komplett unterschiedliche Modelle für die Programmierung der Anwendungs-Software erfordern. Zum anderen bestehen moderne Hochleistungsrechner aus immer mehr homogenen oder heterogenen Rechen-Knoten, deren Zusammenarbeit entscheidend dafür ist, sehr große Probleme effizient lösen zu können. Auch hierfür gibt es sehr unterschiedliche Konzepte, die je nach Anwendung und System als optimal gelten. Selbst für größere Teams von Entwicklern moderner Software ist es deshalb quasi unmöglich, ihre Anwendungen auf all diesen unterschiedlichen Systemen anzubieten, geschweige denn sie hierfür zu optimieren.
Ziele und Vorgehen
Mephisto greift genau hier an. Es wird die Möglichkeit bieten, Daten und Programme so zu schreiben, dass sie auf nahezu allen im Hochleistungsrechnen gängigen Hardwarearchitekturen ausführbar, dabei aber für jede Architektur ohne Veränderung des Quelltextes der Anwendung optimierbar sind. Anwendern wird dadurch die Anpassung an eine bestimme Hardware und der Wechsel zwischen Hardware-spezifischen Programmiermodellen abgenommen, d. h. sie müssen ihren Quellcode nur ein einziges Mal schreiben. Darüber hinaus übernimmt Mephisto die Verteilung der Daten über den gesamten Hochleistungsrechner. Um diese Ziel zu erreichen, plant Mephisto ein Metaprogrammiermodell für heterogene, hoch-skalierbare Architekturen. Dafür nutzt es Programmier- und Datenstruktur-Abstraktionen für unterschiedliche Parallelisierungskonzepte und die damit verbundene Kommunikation. Durch die Verbindung von zwei bereits existenten, sich ergänzenden Bibliotheken und die Angleichung der Implementierungskonzepte soll eine Lösung entstehen, die es erlaubt, alle architekturspezifischen Aspekte aus dem Quellcode paralleler Anwendungen herauszuhalten.
Innovationen und Perspektiven
Mephisto lehnt sich im Design bewusst an die C++-Standards für Datencontainer und Algorithmen an, um auch Anwendern ohne spezielle Kenntnisse der Parallelprogrammierung zu ermöglichen, ihre Anwendungen so zu schreiben, dass sie das Leistungspotential jedes modernen Hochleistungsrechners ausschöpfen können. Mephisto ist dabei so aufgebaut, dass es auch an zukünftige Hardware- und Programmiermodell-Entwicklungen angepasst werden kann, ohne dass die Anwendungscodes geändert werden müssten.