SFB 382
Teilprojekt C6
 

Verfahren zur Parallelisierung physikalischer Prozesse mit objektorientierten Methoden

Leiter:
Prof. W. Rosenstiel
Prof. H. Ruder
Prof. H. Yserentant

Mitarbeiter:
Dipl.-inform. Marcus Ritt
Dipl.-phys. Michael Hipp
Dipl.-phys. Sven Ganzenmüller
Dipl.-phys. Simon Pinkenburg
Dipl.-phys. Steffen Holtwick
 

Projektübersicht

TPO++

sph2000

Veröffentlichungen

Proseminar SS 3

Seminar WS 3/4

Seminar SS 04

Studien- und Diplomarbeiten

Ältere Lehrveranstaltungen
 

 

 

Projektbeschreibung

Aufgabengebiete

Das Teilprojekt C6 beschäftigt sich mit den informatischen und methodischen Problemen der Parallelisierung von Anwendungen im wissenschaftlichen Rechnen. Besonderer Schwerpunkt sind die in anderen Teilprojekten des SFB 382 eingesetzten bzw. entwickelten physikalischen Simulationen. Diese basieren überwiegend auf Teilchenmethoden mit kurzreichweitigen Wechselwirkungen, wie Smoothed Particle Hydrodynamics (SPH), die im SFB 382 entwickelte Methode der finiten Massen (FMM) oder Particle-in-Cell-Codes (PiC).

Ansatz

Die Parallelisierung von Anwendungscodes wird hauptsächlich durch die Komplexität der Programmierung im Vergleich zur sequentiellen Programmierung und mangelnde Portabilität bzw. Effizienz der Programmmierschnittstelle erschwert. Ein verbreiteter Effekt davon ist, dass nur leicht verschiedene Simulationscodes mehrfach gleichzeitig weiterentwickelt und gewartet und oft auch regelmässig neu entwickelt werden.

Bei der Parallelisierung sind üblicherweise erhebliche Umstellungen des sequentiellen Codes oder eine Neuimplementierung notwendig, da sich die Algorithmen und Datenstrukturen zur parallelen Ausführung enorm unterscheiden. Die resultierenden Programme sind durch die Vermischung von Anwendungslogik (physikalische Simulation) und Parallelisierungscode meist schwer zu lesen und zu verstehen und dementsprechend schwer wartbar.

Bei der Wahl der Umsetzung der Parallelisierung müssen in fast allen Fällen die gegenläufigen Ziele Effizienz und Portabilität berücksichtigt werden. Für eine optimale Leistung stehen auf fast allen parallelen Rechnerarchitekturen hochoptimierte, native Parallelisierungs-APIs zur Verfügung, wie beispielsweise die SHMEM-Schnittstelle auf der Cray T3E. Eine Portierung dieser Codes ist durch die spezialisierten APIs aber meist annäherend so aufwändig wie eine Neuentwicklung. Viele portable Programmierschnittstellen unterstützen dagegen nur eine Untermenge der parallelen Rechnerarchitekturen oder bedingen erhebliche Effizienzverluste. Zur Programmierung der im SFB interessanten Rechnerarchitektur mit verteiltem Speicher hat sich Message-Passing in Form des Standards MPI (Message-Passing Interface) etabliert. MPI bietet einen guten Kompromiss zwischen Portabilität und Effizienz. Das API ist dafür allerdings auf sehr niedriger Ebene angesiedelt und erfordert vom Benutzer noch einen hohen Programmieraufwand.

Als Ziel der Arbeiten von C6 lässt sich damit die Vereinfachung der Parallelisierung von wissenschaftlichen Anwendungen durch Entwicklung von portablen, effizienten und abstrakten Programmierschnittstellen und Bibliotheken formulieren. Zu den einzelnen Aufgabengebieten dieses Teilprojekts gehören:

  • Die Analyse der Anwendungen anderer Teilprojekte
  • Die Evaluation bestehender und Entwicklung neuer Algorithmen und Datenstrukturen zur Parallelisierung
  • Die Dokumentation und Bereitstellung von Methoden zur Parallelisierung
  • Vereinfachung bzw. Verallgemeinerung bestehender Parallelisierungs-APIs wie z.B. Message-Passing oder Threads
  • Die Erstellung von Bibliotheken mit allgemeinen verwendbaren modularen Bausteinen zur Trennung von Anwendungslogik und Parallelisierung
  • Die exemplarische Parallelisierung von Anwendungen anderer Teilprojekte
  • Messung und Leistungsbewertung paralleler Anwendungen

Prozedurale Lösung

Gegenstand der ersten und zweiten Bewilligungsphase war eine Lösung für die prozeduralen Programmiersprachen C und FORTRAN. Das Distributed Threads Systems (DTS) erweitert die von Architekturen mit gemeinsamem Speicher bekannte Parallelisierung mit Threads auf portable und effiziente Weise auf beliebige Rechnerarchitekturen. Das von Threads bekannte Daten- und Kommunikationsmodell des gemeinsamem Speichers muss dabei durch ein funktionales Thread-Modell ersetzt werden. Mit diesem Modell kann eine weite Klasse von parallelen Algorithen nach dem Master-Worker- und Divide-and-Conquer-Modell parallelisiert werden. Für andere Problemstellungen wurde DTS um portables (logisches) gemeinsames Speichermodell ergänzt (Distributed Shared Memory). DTS befreit den Anwender durch Präprozessoren von der expliziten Formulierung der Kommunikation, führt eine automatische Lastbalanzierung durch. Das System ist fehlertolerant und kann bei Verlust eines Rechenknotens die verlorenen Threads automatisch auf die verbleibenden Rechenknoten verteilen. Details zum DTS-API und zur Implementierung können in der Dissertation von Till Bubeck [Bubeck 1998, Untersuchungen zur Parallelisierung und Ausführung von Programmen in verschiedenen parallelen Speicherarchitekturen, Technische Informatik, Universität Tübingen] nachgelesen werden.

Objektorientierte Lösung

In der zweiten und aktuellen Bewilligungsphase konzentrieren sich die Arbeiten von C6 auf die Entwicklung einer durchgehenden objektorientierten Lösung zur Parallelisierung wissenschaftlicher Anwendungen. Dabei sollen die bekannten Vorteile der objektorientierten Programmiermethodik die Entwicklung und Wartbarkeit paralleler Codes verbessern.

Um den Leistungsbedarf physikalischer Anwendungen zu decken wurde als Programmiersprache wurde C++ gewählt. Aktuelle Fortschritte in der Entwicklung von Compilern (KAI C++) und Bibliotheken (Expression Templates) machen C++ zum Einsatz im wissenschaflichen Rechnen hervorragend geeignet. Die Leistung objektorientierter Codes in C++ ist anderen, beispielsweise in Fortran 77 entwickelten Codes, ebenbürtig.

Atoll

Marcus Ritt ,