|
|
Fakultät für Informatik der Technischen Universität München Informatik X: Rechnertechnik und Rechnerorganisation / Parallelrechnerarchitektur Prof. Dr. Arndt Bode , Prof. Dr. Hans Michael Gerndt |
|
| Home | Adressen | Personen | Forschung | Lehrveranstaltungen | ||
|
Moderne Rechnerarchitekturen stellen hohe Anforderungen an Compiler und Programmierer, um das Potential der Rechner vollständig auszunutzen. Ohne Optimierungen, die die Besonderheiten der jeweiligen Architektur berücksichtigen, reizen Programme oft nur einen kleinen Anteil der Leistung der Maschinen aus. In diesem Seminar werden daher, ausgehend von Standardoptimierungstechniken, neue Methoden für Compiler und Programmierer behandelt, die dieses Problem angehen. Besonderes Augenmerk wird dabei auf RISC-Architekturen und Workstation-Cluster gelegt. Die Themengebiete reichen von Compileranalysetechniken und Cacheoptimierungen über High Performance Java zu Intels neuer EPIC-Architektur.
Es sollen aktuelle Rechnerarchitekturen und ihre Leistungsmerkmale vorgestellt werden. Außerdem soll auf die Probleme bei der Codegenerierung für diese Architekturen eingegangen werden.
Der Aufbau eines Übersetzers, seine internen Datenstrukturen und Standardoptimierungstechniken wie z.B. Function Inlining, Common Subexpression Elimination und Copy Propagation sollen erläutert werden.
Die Ermittlung von Datenabhängigkeiten im Quellcode ist die Basis für die meisten der in diesem Seminar besprochenen Optimierungstechniken und wird von allen optimierenden Compilern durch aufwendige Datenflußverfahren durchgeführt. Ziel dieses Vortrages ist es, in diese Verfahren einzuführen und einige grundlegende Algorithmen und deren Datenstrukturen zu erläutern.
Da ein großer Teil der Rechenzeit von Programmen in Schleifen verbracht wird, sind komplexe Schleifentransformationen der Schlüssel für die Generierung von effizienten Programmen. Im Vortrag sollen einige Transformationen an Beispielen erläutert werden.
Ein typischer Ansatz, um den Engpaß Hauptspeicher in heutigen RISC-Architekturen zu entschärfen, ist die Verwendung von Cache- oder Speicherhierachien. Im Vortrag sollen Optimierungstechniken für diese Architekturen vorgestellt werden, die teilweise erhebliche Geschwindigkeitssteigerungen ermöglichen.
Um in Systemen mit verteiltem Speicher eine höchstmögliche Performance zu erreichen, sollten Daten auf die Rechenknoten so verteilt werden, daß benötigte Daten immer lokal bereitstehen. Dieser Vortrag soll deshalb mögliche Verteilungsverfahren und Techniken zur Optimierung der Datenlokalität vorstellen und bewerten.
Bei gemeinsamer Datenhaltung, sei es in Form von gemeinsamem Speicher oder mittels globaler Objekträume, steht man grundsätzlich vor dem Problem der Konsistenzerhaltung. Es gibt dazu in der Literatur verschiedene Modelle und Techniken, um dies transparent oder aber auch anwendungsspezifisch zu gewährleisten. Die wichtigsten sollen hier vorgestellt und diskutiert werden.
Laufzeitsysteme verwalten beispielsweise Threads, Thread-Kommunikation und Synchronisation in verteilten Systemen. Die wichtigsten Aufgaben, Schnittstellen (z.B. zum Übersetzer) und Realisierungstechniken sollen hier besprochen werden.
Im Gegensatz zu heute üblichen superskalaren Architekturen benötigen VLIW- (Very Long Instruction Word) Architekturen explizite Unterstützung durch Compiler, um Parallelarbeit im Prozessor zu ermöglichen. Der zukünftige "Top-Prozessor" von Intel und HP, der "Merced", weist mit seinem "EPIC" (Explicitly Parallel Instruction Code) VLIW-artige Strukturen auf.
Trotz aufwendiger Analysetechniken in modernen Compilern und trotz adaptiver Laufzeitverfahren ist es in heutigen System (noch?) nicht möglich, alle Informationen zur Code-Optimierung zu gewinnen. In diesem Vortrag sollen diese Grenzen dargestellt und mögliche Alternativen in Form von Programmannotationen aufgezeigt werden.
Es gibt gute Gründe (z.B. Portabilität), Java im wissenschaftlichen Hochleistungsrechnen zu verwenden. Dem gegenüber steht die im Vergleich mit C oder Fortran immer (noch?) geringere Leistungsfähigkeit von Java-Programmen. Optimierungen der Ausführungsumgebung, z.B. Just-In-Time Compiler, sollen diesen Nachteil ausgleichen.
Das Projekt SUIF ist eine Infrastruktur für optimierende und parallelisierende Compiler und soll im Vortrag vorgestellt werden. Außerdem sollen die in den vorherigen Vorträgen vorgestellten Techniken der Code-Optimierung an Beispielen angewendet und die Resultate der Optimierungen präsentiert werden.
|
Back: Hauptseminar: Existenzgründung -- WS 98/99 |
Up |
Next: Prof. Dr. A. Bode: Proseminar SS 1998 |