Kurzbeschreibung
Hochleistungsrechner werden für Aufgaben eingesetzt, die besonderen Bedarf an Rechenleistung aufweisen. Die Berechnung technisch-wissenschaftlicher Anwendungen erfordert dabei ein Höchstmaß an Performanz, da sich dabei die Größe des zu lösenden Problems an der Leistungsfähigkeit der zur Verfügung stehenden Systeme orientiert. Die Rechenleistung ist damit eine beschränkte Ressource, die dementsprechend optimal eingesetzt werden muss. Deshalb steht in die diesem Werk die effiziente Nutzung von Hochleistungsrechnern im Mittelpunkt der Untersuchungen. Effiziente Programme können nur durch das Zusammenwirken verschiedener Methoden entstehen, die auf allen Ebenen von der Rechnerarchitektur bis zur Entwicklung von Algorithmen wirken. Deshalb werden an dieser Stelle Architekturen, beispielhafte Rechnersysteme, Optimierungsmethoden von Programmcodes und Benchmark-Programme zur Leistungsbewertung vorgestellt. Der Schwerpunkt der Arbeit ist durch die Definition des LDA-Modells für die leistungsorientierte Algorithmenentwicklung und die Entwicklung des SProf-Werkzeugs zur Leistungsanalyse beliebiger Anwenderprogramme gegeben. Die leistungsorientierte Nutzung erfordert eine detaillierte Kenntnis von den eingesetzten Rechnersystemen und deren Programmierumgebungen. Deshalb werden vertiefende Untersuchungen der Rechnerarchitekturen und der eingesetzten einzelnen Systemkomponenten durchgeführt und die leistungsbestimmenden Eigenschaften der Architekturen aufgezeigt. Die Spezifikationen der derzeitigen Rechnersysteme weisen bereits die Speicheranbindung der extrem schnellen Recheneinheiten als Engpässe der Hardware aus, wobei insbesondere die relativ hohen Latenzzeiten der großen Hauptspeicherbereiche die Ausführungszeiten dominieren können. Die Tendenz bei der Entwicklung der Rechnersysteme zeigt deutlich, dass eine weitere Verschlechterung des Verhältnisses zwischen der maximalen Geschwindigkeit der Recheneinheiten und der Speichersysteme zu erwarten ist. Die Leistungsfähigkeit der Systeme muss aber auch durch die verwendeten Programme freigesetzt werden. Dafür werden allgemein anwendbare Techniken zur Steigerung der Effizienz von Programmen vorgestellt, die neben den eigentlichen Recheneinheiten der Prozessoren insbesondere die Speicherhierarchien einbeziehen. Deshalb wird die Ausnutzung der Datenlokalität von Berechnungen in den Vordergrund der Untersuchungen gestellt. Aber auch Methoden zur Freisetzung der Parallelität von Berechnungen und die damit verbundene gleichzeitige Nutzung aller Recheneinheiten werden von der Prozessor- bis zur Systemebene betrachtet. Einige Optimierungsmethoden werden bereits durch Compiler automatisch durchgeführt, doch das größte Potenzial der Effizienzsteigerung liegt in der Entwicklung von systemangepassten Algorithmen. Dazu werden insbesondere für Multiprozessorsysteme und komplexe Speicherhierarchien Methoden der Leistungssteigerung vorgestellt. Die Entwicklung leistungsfähiger Programme erfordert Ausführungsmodelle, die eine Bewertung der effizienten Nutzung vorhandener Systemressourcen ermöglichen. Deshalb wurde in dieser Arbeit das latency of data access (LDA) Leistungsmodell entwickelt. Die wichtigsten Eigenschaften der Rechnersysteme werden durch das vorgestellte Modell abgebildet, wobei zur einfachen Anwendbarkeit nur die leistungsrelevanten Maschinenparameter berücksichtigt werden. Die Modellierung beschränkt sich dabei auf eine minimale Menge leistungsbestimmender Parameter. Die Werte der Maschinenparameter werden durch die Hardware-Spezifikation bestimmt oder mit Hilfe von speziellen Testprogrammen (Mikro-Benchmarks) durch Messungen auf einem realen System ermittelt. Die Modellierung des Algorithmusses wird unter anderem durch die Beobachtung (Monitoring) des Ablaufverhaltens des Programms realisiert, wodurch die exakten Ressourcenanforderungen beschrieben werden. Die Leistungsmodellierung verbindet dabei das Maschinenmodell mit dem Algorithmenmodell, so dass eine detaillierte Laufzeitanalyse durchführbar wird. Die Analysen, in Verbindung mit den bekannten Optimierungstechniken, verbessern die Effizienz der Algorithmen unter Ausführung moderner Hochleistungsrechner. Durch die Bedeutung der Latenzzeit von Speicherzugriffen für die Ausführungszeit von Programmen, ist speziell dieser Parameter für die Leistungsmodellierung von Bedeutung. Nur wenige Berechnungsmodelle gehen auf diesen Aspekt der Leistungsbestimmung ein. Die tiefen Speicherhierarchien führen insbesondere dazu, dass sich die Speicherzugriffe auf verschiedene Speicherebenen um Größenordnungen unterscheiden. In der Literatur wurden zwar bereits Modelle mit nicht-uniformen Kosten untersucht (z.B. HMM und UMH), diese betrachten aber entweder keine diskreten Speicherebenen oder bilden die Funktionalität der Caches zu detailliert nach. Das in diesem Werk beschriebene LDA-Modell stellt im Gegensatz zu den bisherigen Modellen nicht die Berechnung der Operationen in den Vordergrund, sondern primär die Datenbewegungen der einzelnen Speicheroperationen innerhalb der komplexen Speicherhierarchie der Rechnersysteme. Damit werden genau die leistungsrelevanten Eigenschaften der Systeme beschrieben, wodurch die exakten Ausführungszeiten modelliert werden. Für eine exakte Leistungsanalyse von Programmen wurde das SProf-Werkzeug entwickelt. Die Leistungsmessung von Standardrechnersystemen wird mit Profiling- und Monitor-Programmen durchgeführt, mit denen die Ausführung von sequentiellen Prozessen beobachtet und Ausführungszeiten und die Aufrufhäufigkeiten von bestimmten Programmteilen festgestellt werden können. Damit sind aber keine umfassenden Leistungsanalysen von Programmen möglich, da nur wenige leistungsbezogene Messdaten erfasst werden können. Deshalb wird hier eine neue Methode zur Bestimmung der leistungsrelevanten Ereignisse vorgestellt, wodurch die ausführenden Einheiten direkt beobachtet werden. Damit können sowohl einzelne Rechenoperationen als auch die mit unterschiedlichen Kosten behafteten Speicheroperationen analysiert werden. Das SProf-Werkzeug ist durch die gleichzeitige Beobachtung aller Funktionseinheiten auch für Multiprozessorsysteme geeignet. Für Parallelrechner mit verteiltem Speicher existieren zwar auch Leistungsmessungswerkzeuge (z.B. Paragraph und Vampir), die aber speziell nur einzelne Kommunikationen instrumentieren, wodurch ausschließlich Datenabhängigkeiten und Kommunikationsquanitäten bestimmt werden können. Diese Leistungsdaten beschreiben damit nur die unterste Ebene der komplexen Speicherhierarchien aktueller Rechnersysteme, nämlich ausschließlich das Kommunikationsnetzwerk bzw. den gemeinsamen Speicher. Das SProf-Werkzeug analysiert dagegen alle Speicherebenen, insbesondere die, die auch bei den Berechnungen intensiv verwendet werden. Das SProf-Werkzeug ergänzt damit die bekannten verteilten Leistungsmessungswerkzeuge um eine exakte Analyse der eingesetzten Rechenknoten.