Analyzing Efficiency of High Performance Applications

Aus SDQ-Wiki
Ausschreibung (Liste aller Ausschreibungen)
Typ Bachelorarbeit
Aushang
Betreuer Wenden Sie sich bei Interesse oder Fragen bitte an:

Larissa Schmid (E-Mail: larissa.schmid@kit.edu, Telefon: +49-721-608-45981)

Motivation

Die meisten High-Performance Computing (HPC) Anwendungen folgen dem Bulk Synchronous Parallel (BSP) Modell, das die Berechnung in mehrere Iterationen aufteilt. Typischerweise führen in jeder Iteration alle Prozesse denselben Code auf unterschiedlichen Daten aus und senden sich ggf. Nachrichten über Teilergebnisse der Berechnung. Die Iteration endet mit einer Synchronisation mittels einer Barriere für alle Prozesse. Dies kann zu Wartezeiten auf manchen Prozessen führen, wenn sie ihre lokale Berechnung schneller als andere abgeschlossen haben.

Weiterhin unterstützen Supercomputer typischerweise nur statische Allokationen von Ressourcen für Jobs. Da sich die Ressourcenanforderungen von Anwendungen jedoch je nach Rechenschritt verändern können, kann dies zu schlechter Auslastung der Hardware führen, z.B. wenn nur zu Anfang viel Speicher benötigt wird.

Aufgabenstellung

Ziel der Arbeit ist es, verschiedene, existierende HPC Anwendungen hinsichtlich ihrer Effizienz in der Ressourcenauslastung beurteilen zu können. Hierzu sollen die Anwendungen mittels existierender Messinfrastruktur (Profiling mit Score-P) ausgemessen werden. Anschließend soll mittels der Messergebnisse analysiert werden, ob es zu Ungleichverteilung der Arbeit zwischen Prozessen und/oder zu sich ändernden Anforderungen an die Ressourcen kommt. Grundlegende Kenntnisse in C/C++ sowie Make/CMake sind zur Bearbeitung der Abschlussarbeit hilfreich.



Motivation

Most high-performance computing (HPC) applications follow the Bulk Synchronous Parallel (BSP) model, which divides computation into multiple iterations. Typically, in each iteration, all processes execute the same code on different data and, if necessary, send messages to each other about partial results of the computation. The iteration ends with synchronization using a barrier for all processes. This can lead to waiting times on some processes if they complete their local computation faster than others.

Furthermore, supercomputers typically support only static allocations of resources to jobs. However, since the resource requirements of applications can change depending on the computational step, this can lead to poor utilization of the hardware, e.g., if a lot of memory is only required initially.


Task

The goal of the work is to be able to judge different, existing HPC applications regarding their efficiency in the resource utilization. For this, the applications are to be profiled using existing measurement infrastructure (profiling with Score-P). Subsequently, it should be analyzed if the measuring results show that there is unequal distribution of the work between processes and/or to changing resource demands. Basic knowledge in C/C++ as well as Make/CMake are helpful for working on this thesis.