Au­to­ma­ti­sier­te An­wen­dungs­ana­ly­se für he­te­ro­ge­ne Rech­ner­kno­ten

Systementwurfs-Teamprojekt im SS 2018: L.079.09702 

Mo­ti­va­ti­on

Die Bedeutung heterogener Rechensysteme, typischerweise ausgestattet mit CPUs, GPUs und FPGAs, hat in den letzten Jahren deutlich zugenommen. Dies liegt an den zu Grunde liegenden, fundamental verschiedenen Rechenarchitekturen dieser Bausteine, die sich je nach Anwendung unterschiedlich gut für bestimmte Anwendungen eignen. So können Anwendungen mit hoher Datenparallelität häufig von der Ausführung auf GPUs profitieren, während FPGAs durch die Nutzung von anwendungsspezifischer Hardware oft zur Verarbeitung von Datenströmen besser geeignet sind. Das Ziel des heterogenen Rechnens ist es, Anwendungen mit möglichst hoher Performance und/oder möglichst niedrigem Energieverbrauch auszuführen. Um eine effiziente Ausführung zu ermöglichen, möchte man möglichst viel Information über die Anwendungen gewinnen, zum Beispiel wie ihre Laufzeit mit der Größe der Eingabedaten skaliert, auf welchen Rechnerarchitekturen sie am wenigsten Energie benötigen, etc. 

Ziel

Ziel des Projektes ist die Entwicklung von Methoden und eines Werkzeugs zu automatisierten Analyse und Charakterisierung von Anwendungen für heterogene CPU/GPU/FPGA Hochleistungsrechner. In einer ersten Phase werden dazu eine Reihe von Anwendungen aus dem Bereich der Signalverarbeitung, vorzugsweise der Bild- oder Videoverarbeitung, auf einer Server-CPU mit mehreren Kernen sowie auf einer GPU und einem FPGA-Beschleuniger implementiert. Dabei wird die Programmierung dieser Bausteine mit ihren unterschiedlichen Programmierparadigmen erlernt. 

In einem zweiten Teil des Projekts werden im Team Analyseverfahren zur Charakterisierung der Anwendungen erarbeitet. Dabei sollen verschiedene Szenarien betrachtet werden. Entweder man hat keinerlei Informationen über die Anwendung und muss sie als "Black box" betrachten. Dann kann man auf Basis von vielen Messungen der Laufzeit und Energie entsprechende Modelle entwicklen, mit denen man für neue Eingabedaten Vorhersagen über diese nicht-funktionalen Parameter machen kann. Es werden entsprechende Modelle und Verfahren untersucht, wie zum Beispiel die Regressionsanalyse oder statische Modellierung. Alternativ soll untersucht werden, welche Informationen ein Anwendungsentwickler seinen Programmen in Form von Metadaten hinzufügen könnte, um die Erzeugung von Laufzeit- und Energiemodellen zu vereinfachen. Im Rahmen dieses zweiten Teils soll ein prototypisches Werkzeug für die automatisierte Vermessung der Anwendungen und Erzeugung der Modelle ermöglicht.

Automatisierte Anwendungsanalyse auf CPU/GPU/FPGA Systemen

Betreuer: Achim Lösch