Inhalt Parallelverarbeitung (Winter 2009/2010)
3+1 SWS
1. Einführung
2. Grundlagen
2.1 Begriffe
2.2 Hardware-Klassifikation
2.3 Parallelitätsebenen
2.4 Konzepte für parallele Verarbeitung
3. Parallelrechner-Architektur
3.1 Mikroprozessorentwicklung
3.2 Speicherkonzepte - Adressraumorganisation
3.3 Verbindungsnetzwerke
3.3.1 Bewertungskriterien
3.3.2 Statische Verbindungsnetzwerke
3.3.3 Einbettungen
3.3.4 Dynamische Verbindungsnetzwerke
3.4 Routing und Switching
3.4.1 Routingalgorithmen
3.4.2 Switching-Strategien
3.5 Cache-Kohärenz und Speicherkonsistenz
3.6 Spezielle Architekturprinzipien
3.6.1 Datenflussrechner
3.6.2 Systolische Felder
3.7 Parallelsysteme - Beispiele
3.7.1 SIMD-Rechner
3.7.2 SMP-Systeme
3.7.3 Systeme mit verteiltem Adressraum
3.7.4 Systeme mit gemeinsamem Adressraum
4. Parallele Programmierung
4.1 Modelle paralleler Systeme
4.1.1 PRAM-Modell
4.1.2 BSP-Modell
4.1.3 LogP-Modell
4.2 Leistungsbewertung
4.3 Kommunikationsoperationen
4.3.1 Broadcast-Operationen
4.3.2 Scatter und Gather
4.3.3 Total Exchange
4.3.4 Circular Shift
4.4 Message Passing mit MPI
4.4.1 Einführung
4.4.2 "Hello world!"
4.4.3 Message Passing - Senden und Empfangen
4.4.4 Globale Kommunikation
4.4.5 Nichtblockierende Kommunikation
4.4.6 Übertragungsmodi, Zeitmessung
4.4.7 Prozessgruppen und Kommunikatoren
4.4.8 Virtuelle Topologien
5. Parallele Algorithmen
5.1 Sortieren
5.1.1 Odd-Even Transposition Sort
5.1.2 Shellsort
5.2 Lineare Gleichungssysteme
5.2.1 Einfacher paralleler Algorithmus
5.2.2 Streifenpartitionierung
5.2.3 Schachbrett-Partitionierung
5.3 Matrix-Multiplikation
5.4 Asynchrone Algorithmen
5.5 Bildverarbeitung
5.5.1 Component Labelling
5.5.2 Konvexe Huelle
6. Gemeinsame Variable - Shared Memory, Multicore
6.1 Parallele Threads
6.2 PThreads-Bibliothek
6.3 OpenMP
6.4 Java-Threads
6.4.1 Parallelisierung eines Single-Threaded Programms
6.4.2 Weitere Techniken
6.4.3 Spezielle Untersuchungsergebnisse
6.5 CORBA
6.5.1 Einführung
6.5.2 Server und Client
6.5.3 Beispiel mit Java: "Hello World"
6.6 Weiteres