Untersuchungen zu PGAS-Systemen: Programmierbarkeit, Synchronisation, Taskpools und Fehlertoleranz
Einleitung
Die Verbreitung und zunehmende Größe von Parallelrechnern stellt die parallele Programmierung vor neue Herausforderungen, zu denen neben Geschwindigkeit und Skalierbarkeit auch die Steigerung der Produktivität der Programmierung sowie die Reaktion auf Hardwarefehler gehören. Innovative parallele Programmiersysteme setzen unter anderem auf das Konzept des Partitioned Global Address Space, bei dem alle Daten in einem gemeinsamen Adressraum untergebracht sind und der Programmierer dennoch zwischen schnellen lokalen und zeitaufwändigeren entfernten Zugriffen unterscheiden kann. In diesem Kontext wurden mehrere Arbeiten durchgeführt und folgende Ergebnisse erzielt:
Ergebnisse
- Konzeption des Partitioned Single Assignment Memory (PSAM) Modells: Im Mittelpunkt steht ein Synchronisationskonzept, das auf der Weitergabe von Datenpaketen nach Abschluss ihrer Berechnung basiert. Das Modell wurde prototypisch implementiert und an Beispielprogrammen getestet.
- Bewertung und Vergleich der PGAS-Sprachen Chapel und X10 anhand von Erfahrungen bei der Implementierung von Taskpools und dem Unbalanced Tree Search (UTS) Benchmark: Im Vordergrund stand die Untersuchung von Taskparallelität und des Zusammenspiels zwischen Objektorientierung und Parallelität/ Verteilung. So wurden Varianten der Realisierung von Objekten, die intern verteilte Arrays enthalten, betrachtet und der Einsatz von Records mit dem von Objekten verglichen. Außerdem wurden Verbesserungsvorschläge für einzelne Sprachkonstrukte erarbeitet (z. B. Reduktion, knoten- und aktivitätsintern verwaltete Daten). Die entwickelten Programme wurden getestet und Laufzeitmessungen mit mehreren Knoten durchgeführt.
- Entwicklung eines fehlertoleranten Frameworks für globale Lastenbalancierung: In dieser Arbeit wurde das Global Load Balancing (GLB) Framework der Sprache X10 um Fehlertoleranz erweitert. GLB ergänzt die knotenintern verwalteten Aktivitäten der Sprache um global verschiebbare Tasks, die aufwändiger zu spezifizieren sind. Ausgangspunkt unserer Arbeit war die relativ neue Sprachausprägung Resilient X10, bei der im Falle eines permanenten Knotenausfalls eine Ausnahme ausgelöst wird, die vom Programm abgefangen werden kann. GLB verwendet für seinen Taskpool ein kooperatives Workstealing-Schema, bei dem arbeitslose Aktivitäten zunächst zufällige Stehlversuche unternehmen und später vordefinierte Partner kontaktieren, welche ein geeignetes Netzwerk bilden. Fehlertoleranz wird durch regelmäßig erstellte Sicherungskopien erreicht, die auch während eines Stehlvorgangs konsistent gehalten werden müssen. Dazu wurde ein konservatives Protokoll entwickelt und seine Korrektheit nachgewiesen. Tests und Laufzeitmessungen wurden mit UTS und dem Betweenness Centrality (BC) Benchmark durchgeführt.
Ausblick
Für die Zukunft sind Arbeiten zur Erhöhung der Effizienz, Robustheit und Flexibilität des fehlertoleranten GLB-Frameworks geplant, außerdem zu RessourcenElastizität, also dem durch Elastic X10 unterstützten Hinzufügen von Knoten während der Laufzeit, sowie zur Implementierung eines GLB-ähnlichen Frameworks in Chapel.