Seit jeher ist die Wissenschaft bemüht, komplexe, oft mathematische Probleme, denen Hypothesen und theoretische Beweise zu Grunde liegen, rechnerisch zu überprüfen, oder aus vorhandenen Datenbeständen neue Erkenntnisse abzuleiten. Die Erfindung von Computern brachte einen gewaltigen Sprung in der Entwicklung, derartige Berechnungen, die zuvor manuell ausgeführt wurden, durchführen zu können. Damit stieg allerdings auch die Kreativität und die Neugier in der Erforschung noch schwierigerer, aufwändigerer Probleme mit erhöhten Datenmengen und dahinter stehenden, komplexeren Algorithmen, die damit rasch an die Grenzen klassischer Computer mit sequentiellem Ausführungsverhalten stießen.
Es wurden verschiedene Konzepte zur parallelen Bearbeitung entwickelt, die auch schnell ihre Anwendung fanden, und es enstand der Überbegriff „Parallel Computing“ für die gleichzeitige Bearbeitung von Daten und/oder Aufgaben. Die Parallelität wird sowohl im Bereich der Hardware als auch der Software gleichermaßen verwirklicht, wobei es hierfür jeweils unterschiedliche Ansätze und Kombinationsmöglichkeiten gibt, worüber der Leser
einen gesamtheitlichen Überblick erhält.
Die häufigsten Begriffe in diesem Zusammenhang sind Cluster und Supercomputer, aber auch Grids, ein Verbund heterogener, vernetzter Systeme, denen die Wissenschaft seit einigen Jahren erhöhte Aufmerksamkeit schenkt. Es wird ein Überblick über diese Architekturen vor einem theoretischen Hintergrund gegeben.
Aus dem Bereich der Software werden Methoden zur parallelen Programmierung in Form einiger weit verbreiteter Modelle, wie MPI und Pthreads dargestellt sowie verschiedene einfache Anwendungsbeispiele gebracht.
Inhaltsverzeichnis
1. Einleitung
1.1. Motivation
1.2. Erkenntnisgegenstand
1.3. Problemstellung
1.4. Geschichte und Ziele von Parallel Computing
2. Klassifizierung
2.1. Flynnsche Klassifikation
2.1.1. SISD – Single Instruction, Single Data
2.1.2. MISD – Multiple Instruction, Single Data
2.1.3. SIMD – Single Instruction, Multiple Data
2.1.4. MIMD – Multiple Instruction, Multiple Data
2.1.5. Weitere Klassen
2.2. Speicherverwaltung
2.2.1. Shared Memory
2.2.2. Distributed Memory
2.2.3. Hybrid Distributed-Shared Memory
3. Cluster und Grids
3.1. Cluster
3.1.1. Architektur und interne Strukturen
3.1.2. Kategorisierung nach Anwendungszweck
3.1.3. Clustersoftware
3.2. Grids
3.2.1. Architektur und Arbeitsweise
3.2.2. Kategorisierung
4. Supercomputer
4.1. Entwicklung
4.2. Aufbau
4.3. Einsatzbereiche
4.4. TOP500
5. Programmiermodelle
5.1. Shared Memory
5.1.1. Locks
5.1.2. Semaphore
5.2. Threads und gemeinsame Variablen
5.2.1. POSIX Threads
5.2.2. OpenMP
5.3. Message Passing
5.3.1. MPI
5.3.2. MPI-2
5.3.3. PVM
6. Zusammenfassung
A. Parallelisierter Sortieralgorithmus
Zielsetzung & Themen
Die Diplomarbeit hat zum Ziel, einen umfassenden Überblick über die Systemarchitekturen und Programmiermethoden im Bereich des "Parallel Computing" zu geben, um die Komplexität und die verschiedenen Möglichkeiten der parallelen Datenverarbeitung für Einsteiger und Interessierte systematisch darzustellen.
- Klassifizierung von Parallelrechnern anhand der Flynnschen Taxonomie und Speicherverwaltung.
- Detaillierte Analyse von Cluster-Systemen und Grid-Computing-Architekturen.
- Untersuchung von Supercomputer-Systemen, deren Entwicklung und Leistungsmessung (TOP500).
- Darstellung gängiger Programmiermodelle wie Shared Memory, Message Passing (MPI), POSIX Threads und OpenMP.
- Praktische Veranschaulichung durch einen parallelisierten Sortieralgorithmus in C.
Auszug aus dem Buch
1.3. Problemstellung
Welche Lösungen von Parallel Computing bei der Datenanlyse zum Einsatz kommen, hängt meist von der genauen Art der Anwendung und den damit verbundenen Anforderungen ab. Entscheidende Unterschiede ergeben sich hierbei beispielsweise im Bedarf an CPU-Rechenzeit, Hauptspeicher oder Festplattenspeicher.
Häufig befinden sich die zu verarbeiteten Daten auch nicht auf einem System, sondern sind an sich bereits auf unterschiedliche Orte verteilt: mehrere Rechner an einer Position oder überhaupt verschiedene Standorte. In diesem Fall ergeben sich weitere zu beachtende Komponenten durch den Bedarf an Übertragungsgeschwindigkeit, Verfügbarkeit und Auslastung des Netzwerks.
Darüber hinaus erfordert jedes Computersystem ganz eigene Methoden der Programmierung. Dies trifft somit auch auf parallele Architekturen zu.
Daraus ergeben sich folgende Fragestellungen:
• Welche Parallel Computing Architekturen gibt es? Wie kann man diese über die Unterscheidung nach Soft- und Hardwarelösung hinaus kategorisieren?
• Welche Konzepte stehen dahinter und wie funktionieren sie? Wo liegen die Unterschiede, wo ergeben sich Überschneidungen und Gemeinsamkeiten?
• Wie sind parallele Architekturen in der Softwareentwicklung zu berücksichtigen? Welche Möglichkeiten der Programmierung paralleler Systeme gibt es?
Zusammenfassung der Kapitel
1. Einleitung: Beschreibt die Motivation hinter der Arbeit, die Definition von Parallel Computing und die grundlegende Problemstellung bei der effizienten Datenverarbeitung.
2. Klassifizierung: Erläutert die Flynnsche Klassifikation von Rechnerarchitekturen und die Unterscheidung nach Speicherverwaltungsmodellen wie Shared und Distributed Memory.
3. Cluster und Grids: Untersucht den strukturellen Aufbau und die Kategorisierung von Cluster-Systemen sowie die Vision und die Layer-Modelle von Grid-Computing.
4. Supercomputer: Bietet einen Einblick in die historische Entwicklung, den Aufbau, die Einsatzbereiche und die Top500-Statistiken der weltweit leistungsstärksten Rechnersysteme.
5. Programmiermodelle: Stellt verschiedene Ansätze zur parallelen Programmierung vor, darunter Locks, Semaphore, POSIX Threads, OpenMP, MPI und PVM.
6. Zusammenfassung: Fasst die wesentlichen Erkenntnisse über parallele Architekturen und die zugehörigen Programmierkonzepte abschließend zusammen.
A. Parallelisierter Sortieralgorithmus: Zeigt ein praktisches C-Programmbeispiel, das den Einsatz von PThreads zur parallelen Sortierung einer Liste veranschaulicht.
Schlüsselwörter
Parallel Computing, Systemarchitekturen, Cluster, Grid Computing, Supercomputer, TOP500, MPI, Pthreads, OpenMP, Speicherverwaltung, Shared Memory, Distributed Memory, Programmierung, Thread-Modelle, Hochleistungsrechnen.
Häufig gestellte Fragen
Worum geht es in dieser Arbeit grundsätzlich?
Die Arbeit behandelt die Grundlagen und Konzepte des Parallel Computing, inklusive verschiedener Systemarchitekturen und gängiger Programmiermodelle.
Was sind die zentralen Themenfelder?
Die Schwerpunkte liegen auf der Klassifizierung von Parallelrechnern, dem Aufbau von Clustern und Grids, der Analyse von Supercomputern sowie verschiedenen Methoden der Softwareentwicklung für parallele Systeme.
Was ist das primäre Ziel der Arbeit?
Das Ziel ist es, einen strukturierten Gesamtüberblick über die vielfältigen Möglichkeiten der parallelen Datenverarbeitung zu bieten, da hierzu oft nur fragmentierte Informationen existieren.
Welche wissenschaftliche Methode wird verwendet?
Es handelt sich um eine theoretische Arbeit, die auf Literaturrecherche und der Analyse bestehender Konzepte sowie einem praktischen Programmierbeispiel basiert.
Was wird im Hauptteil behandelt?
Der Hauptteil umfasst detaillierte Kapitel zur Klassifizierung von Architekturen, den Unterschieden zwischen Cluster- und Grid-Systemen, der Entwicklung von Supercomputern sowie konkreten Programmiermodellen wie MPI und OpenMP.
Welche Schlüsselwörter charakterisieren die Arbeit?
Wichtige Begriffe sind unter anderem Parallel Computing, Cluster, Grids, Supercomputer, Shared Memory, Message Passing, MPI, Pthreads und Hochleistungsrechnen.
Was ist der Unterschied zwischen Shared Memory und Distributed Memory Systemen?
Shared Memory Systeme teilen sich physikalisch einen globalen Speicher, während Distributed Memory Systeme jedem Prozessor einen eigenen lokalen Speicher zuordnen, was Auswirkungen auf die Skalierbarkeit und die Programmierung hat.
Wie illustriert der Autor die Parallelisierung praktisch?
Im Anhang wird ein parallelisierter "Bubblesort"-Algorithmus in der Sprache C vorgestellt, der PThreads nutzt, um eine Liste von Zahlen auf mehreren Threads gleichzeitig zu sortieren.
- Citation du texte
- Sigrid Körbler (Auteur), 2007, Parallel Computing - Systemarchitekturen und Methoden der Programmierung, Munich, GRIN Verlag, https://www.grin.com/document/112252