TU Darmstadt / ULB / TUprints

Automatic Empirical Performance Modeling of Parallel Programs

Calotoiu, Alexandru (2018)
Automatic Empirical Performance Modeling of Parallel Programs.
Technische Universität
Ph.D. Thesis, Primary publication

[img]
Preview
Text
dissertation.pdf - Submitted Version
Copyright Information: CC BY-NC-ND 4.0 International - Creative Commons, Attribution NonCommercial, NoDerivs.

Download (1MB) | Preview
Item Type: Ph.D. Thesis
Type of entry: Primary publication
Title: Automatic Empirical Performance Modeling of Parallel Programs
Language: English
Referees: Wolf, Prof. Dr. Felix ; Hoefler, Prof. Dr. Torsten
Date: 2018
Place of Publication: Darmstadt
Date of oral examination: 6 October 2017
Abstract:

Many parallel applications suffer from latent performance limitations that may prevent them from scaling to larger machine sizes or solving larger problems. Often, such performance bugs manifest themselves only when the code is put into production, a point where remediation can be difficult. Manually creating analytical performance models provides insights into optimization opportunities but is extremely costly if done for applications of realistic size. The effort limits application developers to only attempt it at most for a few selected kernels, running the risk of missing harmful bottlenecks. Furthermore, tuning large applications requires a clever exploration of the design and configuration space. Especially on supercomputers, this space is so large that its exhaustive traversal via performance experiments becomes too expensive, if not impossible. If we have to consider multiple performance-relevant parameters and their possible interactions at the same time, a common requirement in many situations, this task becomes even more complex.

The initial contribution of this thesis is a method to substantially improve both coverage and speed of performance modeling and analysis. Generating an empirical performance model automatically for each part of a parallel program with respect to the variation of a relevant parameter such as process count or problem size, it becomes possible to easily identify those parts that will reduce performance at larger core counts or when solving a bigger problem.

In the next step, we extended the approach with a method capable of modeling any combination of multiple execution parameters simultaneously, provided sufficient performance measurements are available. Multi-parameter modeling has so far been outside the reach of automatic methods due to the exponential growth of the model search space. Specialized heuristics developed as part of this work traverse the search space rapidly and generate insightful performance models that enable a wide range of uses from performance predictions for balanced machine design to performance tuning.

Finally we present a method that employs automated performance modeling to quickly predict application requirements for varying scales and problem sizes. Following this approach, it is possible to determine future requirements of major scientific applications, derive an optimization strategy, and illustrate system design tradeoffs in the light of their requirements. This supports the co-design process by informing hardware acquisition decisions with the actual needs of the software.

The methods described in this work are implemented in the performance analysis tool Extra-P. Extra-P has been released as open source and has been successfully used to gain insight into the performance of numerous scientific applications from a large range of fields. Since its release, Extra-P has an impact on the HPC community. Developers at both universities and research centers have used Extra-P to better understand the performance of their research codes.

Tutorials on the use of Extra-P have been offered at international conferences such as EuroMPI and Supercomputing further demonstrating the effectiveness of this approach in making performance modeling available to developers without requiring expert knowledge of the topic.

This work simplifies and streamlines the performance modeling process, offering insights into application behavior quickly and automatically and allowing the developer to focus on transforming these insights into tangible performance improvements.

Alternative Abstract:
Alternative AbstractLanguage

Viele parallele Anwendungen leiden unter latenten Leistungsbeschränkungen, die sie daran hindern können, auf größere Maschinen zu skalieren oder größere Probleme zu lösen. Oft manifestieren sich solche Leistungsfehler nur, wenn der Code in Produktion verwendet wird, ein Punkt, wo die Korrektur schwierig sein kann. Manuelles Erstellen von analytischen Leistungsmodellen bietet Einblicke in Optimierungsmöglichkeiten, ist aber äußerst kostspielig, wenn es für Anwendungen realistischer Größe angewandt wird. Die Bemühungen beschränken Anwendungsentwickler es nur für ein paar ausgewählte Programmteile zu versuchen, wobei das Risiko besteht, schädliche Engpässe zu übersehen. Darüber hinaus erfordert das Tuning großer Anwendungen eine geschickte Erforschung des Design- und Konfigurationsraums. Vor allem auf Supercomputern ist dieser Raum so groß, dass seine umfangreiche Durchquerung über Performance-Experimente zu teuer wird, wenn nicht unmöglich. Wenn wir in vielen Situatio- nen mehrere leistungsrelevante Parameter und deren mögliche Wechselwirkungen gleichzeitig berücksichtigen müssen, wird diese Aufgabe noch komplexer. Der erste Beitrag dieser Arbeit ist eine Methode, um sowohl die Abdeckung als auch die Geschwindigkeit der Leistungsmodellierung und -analyse wesentlich zu verbessern. Durch die Generierung eines empirischen Leistungsmodells für jeden Teil eines parallelen Programms in Bezug auf die Variation eines relevanten Parameters wie Prozesszählung oder Problemgröße wird es möglich, die Teile leicht zu identifizieren, die die Leistung bei größeren Kernzahlen oder bei der Lösung von größeren Problemen beschränken. Im nächsten Schritt haben wir den Ansatz mit einer Methode erweitert, die in der Lage ist, jede Kombination mehrerer Ausführungsparameter gleichzeitig zu modellieren sofern genügend Leistungsmessungen vorliegen. Die Multi-Parameter-Modellierung ist bisher aufgrund des exponentiellen Wachstums des Modellsuchraums außerhalb der Reichweite von automatischen Methoden. Spezielle Heuristiken, die als Teil dieser Arbeit entwickelt wurden, durchqueren den Suchraum schnell und erzeugen aufschlussreiche Leistungsmodelle, die eine breite Palette von Einsatzmöglichkeiten von Leistungsvorhersagen für ausgewogenes Maschinendesign bis hin zur Performance-Optimierung ermöglichen. Schließlich stellen wir eine Methode vor, die eine automatisierte Leistungsmodellierung einsetzt, um die Anwendungsanforderungen für unterschiedliche Skalen und Problem- größen schnell vorherzusagen. Nach diesem Ansatz ist es möglich, zukünftige Anforderun- gen von großen wissenschaftlichen Anwendungen zu ermitteln, eine Optimierungsstrate- gie abzuleiten und Systemdesign-Kompromisse im Lichte ihrer Anforderungen zu veranschaulichen. Dies unterstützt den Co-Design-Prozess durch das Informieren von Hardware-Akquisitionsentscheidungen mit den tatsächlichen Bedürfnissen der Software. Die in dieser Arbeit beschriebenen Methoden wurden im Leistungsanalyse-Tool Extra-P implementiert. Extra-P wurde als Open Source freigegeben und wurde erfolgreich eingesetzt, um Einblicke in die Leistungsfähigkeit zahlreicher wissenschaftlicher Anwendungen aus einer Vielzahl von Bereichen zu gewinnen. Seit seiner Veröffentlichung hat Extra-P einen Einfluss auf die HPC-Community. Entwickler an sowohl Universitäten und Forschungszentren haben Extra-P verwendet, um die Leistung ihrer Forschungscodes besser zu verstehen. Tutorials über die Verwendung von Extra-P wurden auf internationalen Konferenzen wie EuroMPI und Supercomputing angeboten, die die Wirksamkeit dieses Ansatzes für Entwickler auch ohne Annahme von Fachwissen weiter demonstrieren.

Diese Arbeit vereinfacht und optimiert den Performance-Modellierungsprozess und bietet schnell und automatisch Einblicke in das Anwendungsverhalten und ermöglicht es dem Entwickler, sich auf die Umwandlung dieser Erkenntnisse in greifbare Leistungsverbesserungen zu konzentrieren.

German
URN: urn:nbn:de:tuda-tuprints-72349
Classification DDC: 000 Generalities, computers, information > 004 Computer science
Divisions: 20 Department of Computer Science > Parallel Programming
Date Deposited: 06 Feb 2018 08:18
Last Modified: 09 Jul 2020 02:01
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/7234
PPN: 425468461
Export:
Actions (login required)
View Item View Item