Die Vorbereitung von Programmiermodellen für das Exascale-Computing
Man stelle sich 100 Millionen Prozesse vor, die auf einem einzigen Computer parallel ausgeführt werden oder 50 Millionen Laptops, die miteinander über ein superschnelles Netzwerk verbunden sind. Hierum geht es beim Exascale-Computing. Auch wenn Computer heute über Java oder Python programmiert werden können, ist eine spezielle Software erforderlich, die es ermöglicht, dass Daten zwischen all diesen Prozessen oder Laptops ausgetauscht werden. An dieser Stelle kommt das Message-Passing und PGAS ins Spiel. „Wir glauben, dass diese beiden Software-Programme von entscheidender Bedeutung sein werden, um diesen Austausch von Daten zu ermöglichen, da sie bereits sehr gut bei den größten Supercomputern von heute funktionieren“, sagt Stefano Markidis, EPIGRAM-Projektmanager und Assistenzprofessor im Bereich Hochleistungsrechnen an der KTH in Schweden. Die Ausführung dieser Programmiermodelle an Exascale-Computern ist allerdings eine andere Sache. Die Speichermenge, die für den Speichervorgang erforderlich ist, wäre immens, so immens, dass diese zu einem schwerwiegenden Problem werden könnte. Um gewährleisten zu können, dass diese Prozesse kollektiv oder synchron ausgeführt werden, wären Algorithmen erforderlich, die weitaus ausgefeilter sind, als die bestehenden. Gleichzeitig könnte ein einzelnes System, das die existierenden Programmiermodelle kombiniert, Stand heute nicht effizient ausgeführt werden. Forscher haben diese zentralen Herausforderungen – eine extreme parallele Näherung und Interoperabilität – im Rahmen eines Einzelprojekts mit dem Namen EPIGRAM (Exascale Programming Models) adressiert. Das Projekt war auf das Message-Passing und PGAS fokussiert und insbesondere auf eine Verbesserung der beiden damit verbundenen Programmiersysteme MPI und GPI ausgerichtet. „Wissenschaftliche Anwendungen weisen oftmals mehrere Synchronisierungspunkte auf, an denen der schnellste Laptop auf den langsamsten wartet. Das funktioniert bei wenigen Laptops, wenn es allerdings 50 Millionen davon zu berücksichtigen gilt, muss damit begonnen werden, eine Algorithmus-Synchronisierung in Erwägung zu ziehen. Dies haben wir im Rahmen von EPIGRAM getan. Wir haben die Leistung der Kommunikationsoperationen für eine sehr große Anzahl an Prozessen verbessert, indem wir den Speicherverbrauch senkten, die kollektiven Operationen verbesserten und neue Rechenmodelle einführten“, erklärt Markidis. Außerdem wurde die MPI- und GPI-Interoperabilität verbessert, indem diese in eine MPI-Implementierung mit der Bezeichnung EMPI4Re integriert wurde. Vom Weltraumwetter bis zur Fluiddynamik Im Anschluss an die Entwicklung war es erforderlich, die EPIGRAM-Konzepte in großskaligen Anwendungen mit Exascale-Potenzial zu testen. Das Konsortium entschied sich mit der Entwicklung von iPIC3D, einem Particle-in-Cell-Code für Weltraumphysik-Simulationen, sowie einem Kernel für Nek5000, ein CFD-Code (Computational Fluid Dynamics) für die Berechnung der Fluiddynamik, für die Anwendungsbereiche Wetter und Fluiddynamik. Beide Anwendungen sind auf bis zu 1 Millionen Kerne nach oben skalierbar und basieren jeweils auf C/C++ und Fortran – die beiden am häufigsten verwendeten Programmiersprachen im Bereich des Hochleistungsrechnens. „Wir sind mit unseren Pilot-Anwendungen äußerst zufrieden“, sagt Markidis. „iPIC3D verbesserte die Leistung im Vergleich zu vorhergehenden Implementierungen um den Faktor drei und wir konnten einen vereinfachten Nek5000-Kommunikations-Kernel entwickeln, der bei anderen Projekten verwendet werden kann.“ Zwei Hochleistungsrechen-Projekte unter Horizont 2020 greifen die Arbeit von EPIGRAM bereits auf: Das INTERTWINE-Projekt baut auf der EPIGRAM-Arbeit im Interoperabilitätsbereich auf und verwendet iPIC3D als Pilot-Anwendung, während das EXAFLOW-Projekt Nek5000 verwendet und den neuen Nek5000-Kommunikations-Kernel von EPIGRAM umsetzt. „Wir sind an einem direkten Folgeprojekt in naher Zukunft interessiert“, sagt Markidis. „In der Zwischenzeit können wir jedoch bereits sehen, wie sich unsere MPI-Arbeit auf Anwendungsentwickler im Bereich des Hochleistungsrechnens auswirkt. Wir haben unsere Konzepte Anwendungsentwicklern aus unterschiedlichen Bereichen vorgestellt und wir rechnen damit, dass manche unserer Konzepte wie beispielsweise ein isomorphes Kollektiv in naher Zukunft von der Community aufgegriffen und implementiert werden.“ Die Projektarbeit an der Standardisierung war für die Umsetzung neuer MPI- und GPI-Merkmale durch Menschen, die Anwendungscodes für Supercomputer entwickeln, von zentraler Bedeutung. „Anwendungsentwickler stellten sicher, dass die neuen Merkmale implementiert werden und deren Modifizierung unwahrscheinlich ist“, erklärt Markidis. EPIGRAM-Konzepte, die unter Verwendung eines Micro-Benchmarks getestet wurden, sorgen nicht nur für schnellere Ausführungszeiten verschiedener MPI- und GPI-Operationen, sondern verringern auch den für solche Operationen erforderlichen Speicherbedarf erheblich. Das Projekt verdeutlichte die Grenzen bestimmter Konzepte im MPI-Bereich und hatte dank der Entwicklung skalierbarer dynamischer Verbindungen großen Einfluss auf die Arbeit von GPI-2-Implementierern.
Schlüsselbegriffe
EPIGRAM, Exascale-Computing, MPI, GPI, Programmiermodell, Petascale, KTH, PGAS, Weltraumwetter, Fluiddynamik