Tuning Workflow

Entwicklung eines Tuning Workflows zur Qualitätssicherung der Optimierung Paralleler Codes

Hintergrund:

Eine effiziente Nutzung von Hochleistungsrechnern erfordert das Tuning von parallelen Codes für verschiedene Rechnerarchitekturen. Das hierzu notwendige Wissen bezüglich Compileroptionen, Laufzeitsystemen sowie Leistungsmessungs- und Leistungsoptimierungs-Werkzeugen für shared memory und distributed memory Programmierung ist allerdings nur bei wenigen Experten vorhanden, viele Nutzer sind damit zufrieden, wenn Ihr Code „läuft.“. Dies ist nicht verwunderlich, da in vielen Disziplinen „fremde“ parallele Codes zum Einsatz kommen, also die Nutzer nicht die Entwickler sind. Aufgrund zunehmender Bedeutung des Hochleistungsrechnens für die Wissenschaft und steigender Kosten für die Infrastruktur und den Betrieb der Rechner wird eine optimierte Nutzung von Hochleistungsrechnern in der Breite allerdings immer wichtiger. Hieraus ergibt sich die Notwendigkeit, Arbeitsprozesse zu definieren, welche im Hinblick auf die Leistungssteigerung paralleler Codes den zu erwartenden Leistungsgewinn im Hinblick auf die investierte Zeit optimieren, also eine Qualitätssicherung des Tuning-Prozesses sicherstellen. Damit lässt sich dann zum einen die Produktivität von Tuning-Experten steigern, zum anderen für Tuning-Anfänger den Einstieg in diese Thematik erleichtern.

Ansatz:

Aufgrund von Erfahrungen in parallelen Anwendungsprojekten wurde ein Entwurf eines Tuning Workflows artikuliert, der die folgenden Stufen umfasst (siehe auch Abbildung 1):

  1. Initiales Treffen:Dieses Treffen sollte die Erwartungen der Nutzer und die Definition der Ziele für den Tuning-Experten festlegen. Es wird ein Zeitrahmen für die Arbeiten, Freiheitsgrade beim Tuning, sowie Nutzungsmodalitäten vereinbart.
  2. Base Line: Die Base Line zeigt auf, wie das Programm arbeitet, und umfasst möglichst unverfälscht von Instrumentierung grundlegende Charakteristika des Programms wie Laufzeit, Speichernutzung, ein einfaches Laufzeit-Profil, grundlegende Hardware-Leitungsparameter, sowie Skalierungsläufe umfassen.
  3. Pathologie: In dieser Phase nutzt der Tuning-Experte die Information der Base Line, um potentielle Performanzprobleme des Codes zu identifizieren. Im Fokus steht hier weniger die Identifizierung eines bestimmten Problems, sondern eine Klassifizierung im Hinblick auf die üblichen Performanzprobleme. Ein Bericht über diese Probleme, ihren Einfluss auf die Performanz des Codes, sowie ein Vorschlag für das weitere Vorgehen ist dann die Basis für ein weiteres Gespräch mit dem Nutzer, wo aufgrund einer Risiko-Nutzen Analyse basierend auf der Erfahrung des Tuning-Experten ein Zeitrahmen für die Änderungen sowie ein gemeinsames Vorgehen zur Sicherstellung der Korrektheit des Codes vereinbart wird.
  4. Tuning Zyklus: Um ein bestimmtes Problem, z.B. Wartezeiten vor einer Barriere, oder Lastimbalancen, zu adressieren, sind je nach Problem unterschiedliche Werkzeuge angebracht, wobei iterativ verschiedene Punkte der Reihe ihrer Wichtigkeit nach behandelt werden. Abschließend werden mit einer neuen Base Line Veränderungen dokumentiert und in einem Modifikations-Bericht die Veränderungen sowie deren Ergebnis dokumentiert.
  5. Übergabe: In einem abschließenden Treffen werden anhand des Modifikations-Berichts die Veränderungen diskutiert, und ggf. Gründe des Nutzers für die Ablehnung bestimmter Modifikationen notiert. Des Weiteren wird die Sinnhaftigkeit weiterer Tuning Schritte entschieden und ggf. eine weitere Instanz des Tuning Zyklus initiiert.

Aktueller Stand:

Im Rahmen der vom Fachgebiet Scientific Computing der TU Darmstadt durchgeführten Forschung wurden erste konkrete Empfehlungen für Werkzeuge und für bestimme Anwendungs-Szenarien ausgearbeiteten Abläufe („Kochrezepte“) formulieret. Diese befinden sich in Zusammenarbeit mit der HPC-Gruppe des Hochschulrechenzentrums der TU Darmstadt in der Erprobung und werden in geeigneter Form nach Abschluss der Evaluierung veröffentlicht.

Weiterhin arbeiten die Kollegen von der HPC Gruppe und die Forscher des Fachgebiets zusammen, diese Dokumentation weiter zu entwickeln, sodass die Kompetenz zur Wartung und Weiterentwicklung von HPC Infrastruktur nachvollziehbar und nachhaltig ausgebaut und dokumentiert werden kann.

Veröffentlichungen und Referenzen zu diesem Thema:

  • Iwainsky, Christian; Altenfeld, Ralph; an Mey, Dieter; Bischof, Christian: Enhancing Brainware Productivity through a Performance Tuning Workflow. In: Euro-Par 2011: Parallel Processing Workshops. (2012)