GPI – Global Adress Space Programming Interface

Programmiermodell für zukünftige Supercomputer

Der Bedarf an schnelleren, noch effektiveren und energiesparenden Computerclustern wächst in fast allen Branchen. Unser asynchrones Programmiermodell Global Adress Space Programming Interface (GPI) liefert einen entscheidenden Baustein, um die nächsten Supercomputer zu realisieren.

High Performance Computing ist eine der Schlüsseltechnologien für zahllose Anwendungen, die für uns mittlerweile selbstverständlich sind. Das reicht von der Google-Suche über die Wettervorhersage und Klimasimulation bis hin zur Bio-Informatik. Das Stichwort ist hier Big Data: durch die Menge an Daten wächst der Bedarf an noch schnelleren, noch effektiveren aber auch energiesparenden Computerclustern.

Die Anzahl der Prozessoren pro System ist mittlerweile im Millionenbereich angekommen und wächst weiter stark an. Weitgehend unverändert geblieben ist das bei Supercomputern verwendete Programmiermodell, das Message Passing Interface – MPI. Es sorgt dafür, dass die Mikroprozessoren in den verteilten Systemen kommunizieren können. Mittlerweile stößt es aber an seine Grenzen.

Paradigmenwechsel: asynchrone Kommunikation und universelle Programmierschnittstelle

Das Global Adress Space Programming Interface (GPI) beruht auf einem komplett neuen Denkansatz: auf einem asynchronen Kommunikationsmodell. Jeder Prozessor kann dabei wahlfrei auf alle Daten direkt zugreifen – egal auf welchem Speicher sie liegen und ohne andere parallel ablaufende Prozesse zu beeinflussen.

Wir haben das Global Adress Space Programming Interface nicht als parallele Programmiersprache entwickelt, sondern als parallele Programmierschnittstelle, die universell eingesetzt wird. Der Bedarf für eine solche hochskalierbare, flexible und fehlertolerante Schnittstelle ist groß und wächst im Arbeitsfeld »High Performance Computing«, allzumal auch die Anzahl der Prozessoren in den Superrechnern exponentiell ansteigt.

Vorteile von GPI auf einen Blick

  • Einseitige, asynchrone und parallele Kommunikation aller Threads
  • Trennung von Datensynchronisation und Datentransfer
  • Kommunikation mit voller Netzwerkgeschwindigkeit
  • optimale Überlappung von Kommunikation und Berechnung
  • Direkte Kommunikation ohne zusätzliche Kopien
  • fehlertolerant
  • energieeffizient
  • robust und industrieerprobt
  • keine neue Programmiersprache, GPI ist eine Schnittstelle und unterstützt C++, Fortran und C
  • arbeitet mit Pthreads, OpenMP oder mit eigenem Threadpaket über mehrere Recheneinheiten hinweg
  • unterstützt Hybridsysteme mit NVIDIA Grafikprozessoren
  • Verfügbar für Infiniband, Cray Gemini and Aries, Ethernet, Intel Omnipath Architektur (OPA)
  • einfach zu bedienen 
  • Open-Source-Implementierung des GASPI-Standards und für Anwendungsentwickler und Forscher frei verfügbar
    Mehr dazu unter www.gaspi.de 

Anwendungsbeispiele

High Performance Computing mit GPI hat sich zu einem universellen Werkzeug in Wissenschaft und Wirtschaft entwickelt und gilt als festes Element des Designprozesses etwa im Automobil- oder Flugzeugbau. Den Ursprung seiner Entwicklung hat das Programmiermodell in der Seismik.

Beispiel Aerodynamik: Einer der Simulationseckpfeiler im europäischen Aerospace-Umfeld, die Software TAU, wurde in einem Projekt mit dem Deutschen Zentrum für Luft- und Raumfahrt DLR auf die GPI-Plattform übertragen. Dadurch konnten wir die parallele Effizienz erheblich steigern.

GPI liefert exzellente Leistung und Skalierbarkeit
© Fraunhofer ITWM
GPI liefert exzellente Leistung und Skalierbarkeit für Applikationen auf Höchstleistungsrechnern der jetzigen und nächsten Generation. Die Grafik zeigt am Beispiel einer Finiten-Differenzen-Anwendung die starke Skalierbarkeit, die aufgrund von GPI auf dem SuperMUC-Cluster des Leibniz-Rechenzentrums (LRZ) erreicht werden kann.

Das GPI-Ökosystem

Um die Produktivität im Umgang mit unserem Global Adress Space Programming Interface zu steigern, bieten wir weitere Software Tools innerhalb des GPI Ökosystems an.

GaspiCxx ist eine einfach zu nutzende C++ Schnittstelle für GPI. Die Verwaltung von GPI-2-Kommunikations-Ressourcen innerhalb der Anwendung übernimmt hierbei ohne Einschränkung der zugrundeliegenden Leistungsfähigkeit komplett GaspiCxx. Die Anwendung muss sich nicht mehr darum kümmern. Damit fällt ein Großteil der normalerweise notwendigen Implementierungsarbeiten bei der Entwicklung von GPI-Applikationen weg. Die Entwicklung von GPI-Applikationen und das Ausnutzen der damit einhergehenden Vorteile – wie die gute Skalierbarkeit – ist somit so einfach wie noch nie. Darüber hinaus bietet GaspiCxx kollektive Operationen an, die über den normalen Umfang der GPI Implementierung hinausgehen.

Viele Simulationen im Ingenieurbereich basieren auf CFD- und FEM-Methoden, zum Beispiel die Bestimmung aerodynamischer Eigenschaften von Flugzeugen oder die Analyse der Gebäudestatik. Letztlich muss hierbei ein komplexes Gleichungs-System gelöst werden. Solche Simulationen profitieren nun direkt bei Nutzung von GaspiLS von dem GPI Programmiermodell.
GaspiLS ist eine skalierbare lineare Löser-Bibliothek. Es setzt die von uns entwickelten Methoden und Werkzeuge zur parallelen Programmierung konsequent ein und ist auf maximale Effizienz getrimmt. Die Komplexitäten, die typischerweise mit einer effizienten hybrid parallelen Implementierung verbunden sind, stecken in den von GaspiLS zur Verfügung gestellten Matrizen. Vektoren und Lösern und sind für den Anwender völlig transparent.

Video: Programmiermodell für zukünftige Supercomputer

Das Programmiermodell GPI wurde mit dem Fraunhofer-Forschungspreis ausgezeichnet. Dr. Carsten Lojewski, Dr. Christian Simmendinger, Dr. Rui Machado (v.l.n.r.) entwickelten ein Programmiermodell, das Hochleistungsrechner maximal effizient nutzt.

Beispielprojekte

Projekt INTERWinE

Exascale Modellierung und Implementierung

Das Projekt INTERWinE befasst sich mit dem Problem der Modellierung von Modelldesign und Implementierung für die Exascale. Die ersten Exascale-Computer werden sehr hochparallele Systeme sein, die aus einer Hierarchie der architektonischen Ebenen bestehen.

 

Wir bringen das Programmiermodell GASPI und deren Implementierung GPI in das Projekt ein und evaluiert die Interoperabilitätsanforderungen mit einer Reihe von Anwendungen wie dem Computational Fluid Dynamics Code TAU des DLR (Deutsche Luft- und Raumfahrt) zur aerodynamischen Simulation.

Projekt ExaNoDe

Exascale Computing

Gemeinsam mit 13 weiteren europäischen Partnern sind wir am Projekt ExaNoDe (European Exascale Processor Memory Node Design) beteiligt. Dieses Projekt prüft, entwickelt und steuert die Grundelemente für hocheffiziente, integrierte Mehrkanal-Hochleistungs-Computerteile, die auf Exascale Computing ausgerichtet sind.

 

Unsere Aufgabe ist es dabei die Fraunhofer GASPI/GPI Programmierschnittstelle zu entwickeln, die eine Open-Source Kommunikationsbibliothek zwischen Computerknoten darstellt. Die API wurde so ausgearbeitet, dass sie eine Vielzahl von möglichen Speichergrößen aufnehmen kann. GASPI /GPI stellt konfigurierbare Speichersegmente zur Verfügung, die die Hardwarekonfiguration abbilden und sie für Anwendungen bereitstellen.

BMBF-Projekt

HighPerMeshes

Die Lösung partieller Differentialgleichungen mit Computerhilfe wird in vielen Bereichen der Wissenschaft eingesetzt, um das Verhalten komplexer Systeme vorherzusagen Ein Beispiel ist die Vorhersage von Verschleißerscheinungen im menschlichen Kniegelenk, wo Knochen, Muskeln und Bänder miteinander interagieren. Beim Projekt HighPerMeshes, das vom Paderborn Center for Parallel Computing der Uni Paderborn geleitet wird, entwickeln wir gemeinsam Simulationsmethoden und die entsprechende Software, um solche Prozesse zu untersuchen. Wir bringen unsere Expertise in der Entwicklung und Anwendung neuer Softwaretools wie GPI-2 ein.