Zu vergeben

Das Fachgebiet verwendet derzeit in der Forschung die APGAS-Bibliothek, welche Java um parallele und verteilte Programmierung erweitert. Dazu teilt APGAS den globalen Adressraum und die Prozessoren eines Rechnerclusters auf und bietet die Möglichkeit Tasks (parallel ausführbare Teilaufgaben) dynamisch zu erzeugen. Die Tasks werden in einem Taskpool verwaltet und zur Bearbeitung an freie Prozesse oder Threads zugewiesen. In der aktuellen APGAS-Version kann diese Zuweisung systemweit erfolgen, was eine globale Lastenbalancierung gewährleistet.

Das taskbasierte Programmiermodell von APGAS eröffnet neue Möglichkeiten für die Behandlung von Hardwarefehlern: Es genügt, lediglich die betroffenen Tasks nochmals auszuführen, vorausgesetzt dass ihre Eingaben aus gesicherten Informationen rekonstruiert werden können.

Das Fachgebiet entwickelt derzeit APGAS und die Fehlerbehandlung in verschiedene Richtungen weiter. Im Umfeld dieser Thematik sind folgende Abschlussarbeiten zu vergeben:

1. Implementierung von Taskpool-Benchmarks (mehrere Bachelor-/Masterarbeiten)

Zur Bewertung von fehlertoleranten Taskpool-Algorithmen werden weitere Benchmarks benötigt. Darunter verstehen wir Programme, die parallele Algorithmen effizient mit Hilfe von Taskpools umsetzen. Beispiele sind Graphalgorithmen oder Spielbaumsuche. Die Auswahl erfolgt in Rücksprache mit den Interessenten. Die Benchmarks müssen mit Java in Kombination mit APGAS implementiert und umfassend getestet werden.

2. Vergleich zwischen HClib und APGAS (Bachelorarbeit)

Die Habanero C/C++ (HClib) Bibliothek weist einige Ähnlichkeiten zur APGAS-Bibliothek auf. So unterstützen beide Bibliotheken die Entwicklung verteilter Programme auf Basis von Tasks. In dieser Bachelorarbeit sollen die beiden Bibliotheken sowohl konzeptuell als auch experimentell miteinander verglichen werden. Als Basis für den Vergleich soll ein vorhandener Benchmark von HClib nach APGAS portiert werden. Der Vergleich soll einerseits die Benutzbarkeit, also die eigenen Erfahrungen bei der Einarbeitung, Installation und Programmierung, und andererseits die Performance der Programme berücksichtigen. Die Messungen sollen über ssh auf dem Hochleistungsrechner der Uni Kassel durchgeführt werden.

3. Vergleich zwischen Charm4py und APGAS (Bachelorarbeit)

Das Charm4py-Framework realisiert ein paralleles Programmiermodell für Python. Das Framework basiert auf Charm++ (einer C++-Erweiterung), bietet aber eine deutlich einfachere API. So verbindet es den Python-Vorteil einer hohen Produktivität bei der Programmierung mit dem C++-Vorteil performanter Applikationen. Charm4py weist einige Ähnlichkeiten zur APGAS-Bibliothek für Java auf. So unterstützen beide Bibliotheken die Entwicklung verteilter Programme: APGAS mittels asynchroner Tasks; und Charm4py mittels kooperierender nachrichtengesteuerter Objekte. In dieser Bachelorarbeit sollen die beiden Bibliotheken sowohl konzeptuell als auch experimentell miteinander verglichen werden. Als Basis für den Vergleich soll ein vorhandener Benchmark von Charm4py nach APGAS portiert werden. Der Vergleich soll einerseits die Benutzbarkeit, also die eigenen Erfahrungen bei der Einarbeitung, Installation und Programmierung, und andererseits die Performance der Programme berücksichtigen. Die Messungen sollen über ssh auf dem Hochleistungsrechner der Uni Kassel durchgeführt werden.

Das Thema kann alternativ in einer Masterarbeit bearbeitet werden, wenn zusätzlich ein bestehender APGAS Benchmark nach Charm4py portiert und eine Analyse der verschiedenen Lastenbalancierungsverfahren durchgeführt wird.

4. Vergleich zwischen COMPSs und APGAS (Bachelorarbeit)

COMPSs steht für Component Superscalar und ist ein Programmiermodell sowie ein Framework. Es hat zum Ziel die Entwicklung von Applikationen für verteilte Systeme wie Cluster, Grids und Clouds einfacher zu machen. COMPSs ist in Java geschrieben, bietet aber auch Support für C/C++ und Python. Ähnlich wie bei APGAS wird die Parallelisierung einer Applikation durch die Anwendung von asynchronen parallelen Tasks ermöglicht. Allerdings müssen bei COMPSs dafür Annotationen verwendet werden und bei APGAS Funktionen. In dieser Bachelorarbeit sollen APGAS und COMPSs für Java sowohl konzeptuell als auch experimentell miteinander verglichen werden. Als Basis für den Vergleich soll ein vorhandener Benchmark von COMPSs nach APGAS portiert werden. Der Vergleich soll einerseits die Benutzbarkeit, also die eigenen Erfahrungen bei der Einarbeitung, Installation und Programmierung, und andererseits die Performance der Programme berücksichtigen. Die Messungen sollen über ssh auf dem Hochleistungsrechner der Uni Kassel durchgeführt werden.

5. Evaluation der Benutzbarkeit und Performance des parallelen Programmiersystems Legion (Bachelorarbeit)

Legion ist ein taskbasiertes paralleles Programmiersystem für Hochleistungsrechner, das derzeit an der Stanford University entwickelt wird. Es stellt somit eine Alternative zum herkömmlichen MPI dar. Eine Besonderheit ist das Konzept der Logical Regions, mit dem die Verteilung der Daten im Cluster in abstrakter Form beschrieben werden kann. In der Bachelorarbeit sollen mehrere einfache Benchmarks (z.B. Pi-Berechnung, k-Means, Stencil-Berechnung) mit Legion und MPI implementiert und die Programme verglichen werden. Der Vergleich soll einerseits die Benutzbarkeit, also die eigenen Erfahrungen bei der Einarbeitung, Installation und Programmierung, und andererseits die Performance der Programme berücksichtigen.

6. Evaluation der Benutzbarkeit und Performance von Fibers in Java (Bachelorarbeit)

Das Projekt Loom hat zum Ziel das Konzept von sogenannten Fibers nach Java zu bringen. Fibers sind leichtgewichtige Threads, die von der Java Virtual Machine (und nicht dem Betriebssystem) verwaltet werden. Bisher ist diese Funktionalität nur in einer Early Access Version einer OpenJDK verfügbar. In der Bachelorarbeit sollen einfache Benchmarks (z.B UTS, NQueens) mit Hilfe von Fibers und dem traditionellen Fork/Join-Pool Konzept implementiert werden. Nach der Implementierung soll die Performance der beiden Varianten verglichen und diskutiert werden. Die Messungen sollen über ssh auf dem Hochleistungsrechner der Uni Kassel durchgeführt werden.

7. Evaluation der Benutzbarkeit und Performance von GraalVM für APGAS (Bachelorarbeit)

GraalVM ist eine neue universelle Java Virtual Machine, die Applikationen in JavaScript, Python, R und Java, aber auch in C/C++ ausführen kann. Die gemeinsame Laufzeitumgebung ermöglicht die Interoperabilität der Programmiersprachen. Außerdem können mit GraalVM Java Applikationen zu eigenständigen ausführbaren Dateien kompiliert werden. In dieser Bachelorarbeit sollen die performancekritischen Abschnitte vorhandener APGAS Benchmarks nach C portiert und dann der Code mit Hilfe von GraalVM aufgerufen werden. Nach der Implementierung soll die Performance der neuen Variante mit der der bisherigen reinen Java-Implementierung bei Ausführung mit GraalVM bzw. Oracle JDK verglichen und Unterschiede diskutiert werden. Die Messungen sollen über ssh auf dem Hochleistungsrechner der Uni Kassel durchgeführt werden.

8. Performance Analyse von Task Pool Benchmarks (Projekt-/Teamarbeit)

Likwid ist eine einfach zu bedienende und dennoch leistungsstarke Sammlung von Kommandozeilen-Werkzeugen zur Unterstützung performanceorientierter Programmierung. Unter anderem können über ein Webinterface live Performance Graphen einer laufenden Applikation dargestellt werden. Innerhalb dieser Arbeit soll Likwid über ssh auf dem Hochleistungsrechner der Uni Kassel installiert werden. Danach soll die Performance mehrerer bereits vorhandener Java Task Pool Benchmarks mit Likwid analysiert werden. Ziel der Analyse ist es mögliche Flaschenhälse zu erkennen und diese gegebenfalls im Quelltext zu beheben.

9. Checkpoint/Restart auf Applikationsebene für Task Pools (Masterarbeit)

Im Fachgebiet wurden mehrere Varianten fehlertoleranter Taskpools entwickelt und in APGAS implementiert. Allen Varianten ist gemeinsam, dass sie die Task-Deskriptoren und bisherige Resultate jedes Workers im Arbeitsspeicher eines anderen Workers sichern. Bei einem Worker-Ausfall, werden die Daten zur Laufzeit von einem anderen Worker wiederhergestellt. In dieser Masterarbeit soll ein bereits vorhandenen Schema so modifiziert werden, es sich stärker an der bekannten Technik des anwendungsbasierten Checkpoint/Restart orientiert. Dazu müssen insbesondere die relevanten Daten auf ein verteiltes Dateisystem (statt in den Arbeitsspeicher) geschrieben werden. Dies muss möglichst effizient gestaltet werden, und die Backups sind immer aktuell und konsistent zu halten. Mit Hilfe dieser Backups soll die Applikation dann fortgesetzt werden: a) im Fehlerfall automatisch, oder b) zu einem späteren Zeitpunkt, zum Beispiel wenn die Dauer der Berechnung das maximale Zeitlimit des Clusters übersteigt. Für den Neustart muss innerhalb von APGAS eine neue Startroutine implementiert werden. Nach der Implementierung sollen Performance und Korrektheit analysiert werden. Die Messungen sollen über ssh auf dem Hochleistungsrechner der Uni Kassel durchgeführt werden.

10. Fehlertoleranz für Taskpools mit randomisiertem Workstealing (Masterarbeit)

Die im Fachgebiet entwickelten Fehlertoleranzschemen wurden bisher ausschließlich für Taskpools getestet, welche Workstealing mit Hilfe des sogenannten Lifeline-Schemas implementieren. Obwohl es sich hierbei um eine ausgefeilte Methode zur Lastenbalancierung handelt, sind Taskpools auf Basis eines einfacheren randomisierten Workstealing-Schemas verbreiteter. In der Masterarbeit sollen ein bis drei der Fehlertoleranzschemen für verteilte Taskpools mit randomisiertem Workstealing re-implementiert werden. Dabei können Anpassungen der Algorithmen erforderlich werden. Die Implementierung kann, nach Rücksprache mit den Betreuern, mit Hilfe von MPI oder der APGAS-Bibliothek erfolgen. Im Anschluss sollen die Laufzeit-Overheads für die Fehlertoleranz gemessen und mit früheren Ergebnissen bezüglich des Lifeline-Schemas verglichen werden. Die Messungen sollen über ssh auf dem Hochleistungsrechner der Uni Kassel durchgeführt werden.

11. Implementierung einer alternativen Netzwerkschicht für APGAS (Masterarbeit)

Die APGAS-Bibliothek hat eine explizite Netzwerkschicht um die Kommunikation zwischen Java Virtual Machines zu realisieren. Momentan basiert diese Netzwerkschicht auf der Hazelcast-Bibliothek. In dieser Masterarbeit soll eine alternative Netzwerkschicht ohne Hazelcast implementiert werden, beispielsweise unter Verwendung der Infinispan-Bibliothek. Nach der Implementierung soll die Performance der beiden Varianten verglichen werden. Die Messungen sollen über ssh auf dem Hochleistungsrechner der Uni Kassel durchgeführt werden.

12. Weitere Themen

Eventuell sind nach Rücksprache weitere Themen möglich, beispielsweise zur Programmentwicklung und/oder Parallelisierung von C++-Programmen des Center for Environmental System Research der Uni Kassel. Diese beschäftigen sich mit der Simulation von Auswirkungen des Klimawandels, unter anderem auf die Landnutzung und den Wasserhaushalt.

Eigene Themenvorschläge können eingebracht werden, müssen jedoch engen Bezug zur Forschung des Fachgebiets, insbesondere zur parallelen Programmierung haben.

Falls Sie Ihre Abschlussarbeit in Latex erstellen möchten, kann die Latexvorlage hilfreich sein.

Bei Interesse sprechen Sie uns bitte an, schreiben eine E-Mail an Frau Prof. Dr. Claudia Fohry oder kommen Dienstags zwischen 14 und 15 Uhr in die Sprechstunde.