Im Arbeitsgebiet "Analyse und Transformation paralleler Programme"
haben wir Verfahren zur automatischen Programmparallelisierung
untersucht. Solche Verfahren analysieren die regulären Programmanteile
eines sequentiellen Programms und transformieren sie so in parallele
Programmstücke, dass sie auf einer gegebenen parallelen Ziel-Hardware
möglichst effizient ausgeführt werden können. Dazu haben wir
unterschiedliche Ziel-Hardware (systolische Arrays,
SIMD-Parallelrechner, SCI-gekoppelte Workstations) und verschiedene
Optimierungskriterien wie z.B. Ausführungsgeschwindigkeint,
Cache-Performance und Kommunikationsminimierung durch Datenlokalität
betrachtet. Nähere Informationen finden sich auf diesen Seiten.
Als zweiten Schwerpunkt in diesem Teilgebiet untersuchen wir die
automatische Parallelisierung und Verteilung irregulärer Anwendungen.
Das übergeordnete Ziel ist es, mehrsträngig formulierte Java-Programme
auf mehrere parallel arbeitende virtuelle Maschinen automatisch zu
verteilen. Um effiziente Abbildung derartiger Java-Programme auf
verteilte virtuelle Java-Maschinen zu erreichen, benötigt man globales
Wissen über Aufrufhäufigkeiten und Beziehung zwischen einzelnen
Aktivitäten und Instanzen von Klassen des Programms. Das bedeutet, dass
statische und dynamische Analyseverfahren an dieser Stelle einzusetzen
sind.
Durch statische Analyseinformation können z.B. Vorhersagen über
Zugriffsverhalten der parallelen Ausführungsstränge auf Programmobjekte
gemacht und somit wesentliche Kriterien für eine lokalitätssteigernde
Objektverteilung geliefert werden. Im Gegensatz dazu sammelt die
dynamische Analyse Laufzeitinformation. Sie verfolgt den Vorgang der
Objekterzeugung, klassifiziert Objektzugriffe als lokal oder entfernt
und ermittelt die Zugriffshäufigkeit auf Objekte. Solche Daten bilden
wesentliche Grundlage für die Entscheidung über dynamische Umverteilung
von Aktivitäten und Objekten. Die Kombination von statischen Analysen
mit der dynamischen Analyse erweitert unsere Horizonte in der
Programmanalysewelt. Hierbei interessant ist vor allem die sog.
Just-In-Time-Lokalitätsoptimierung, d.h. eine Rückkopplung bei der
dynamischen Analyse zur statischen Analyse. Man kann dadurch während
des Programmlaufs beispielsweise auf das Einhalten von statischen
Aussagen prüfen, die statisch vorbereiteten Fragen dynamisch
beantworten.
Wir untersuchen momentan diese neuartigen Ansätze und wollen ein System entwickeln, das das automatische Verteilen von parallelen Java-Anwendungen auf einer verteilte Laufzeitumgebung mit effizienter Kommunikationstechnicken ermöglicht.
Impressum | Datenschutzerklärung | Webmaster | Letzte Änderungen am : 16.10.2013