Parallele Programmierung

Eine Einführung

Thomas Bräunl

     

Vieweg-Verlag, Braunschweig Wiesbaden, 1993, pp. (XIV, 277)


Inhaltsverzeichnis

Teil I  Grundlagen
1.      Einleitung
2.      Klassifikationen
        2.1     Rechnerklassifikation
        2.2     Parallelitätsebenen
        2.3     Parallele Operationen
3.      Petri-Netze
        3.1     Einfache Petri-Netze
        3.2     Erweiterte Petri-Netze
        3.3     Petri-Netz-Beispiele
4.      Konzepte der Parallelverarbeitung
        4.1     Coroutinen
        4.2     Fork und Join
        4.3     ParBegin und ParEnd
        4.4     Prozesse
        4.5     Remote-Procedure-Call
        4.6     Implizite Parallelität
        4.7     Explizite versus implizite Parallelität
5.      Verbindungsstrukturen
        5.1     Bus-Netzwerke
        5.2     Netzwerke mit Schaltern
        5.3     Punkt-zu-Punkt - Verbindungsstrukturen
        5.4     Vergleich von Netzwerken
Übungsaufgaben I

Teil II Asynchrone Parallelität
6.      Aufbau eines MIMD-Rechners
        6.1     MIMD-Rechnersysteme
        6.2     Proze&szlet;zustände
7.      Synchronisation und Kommunikation in MIMD-Systemen
        7.1     Softwarelösung
        7.2     Hardwarelösung
        7.3     Semaphore
        7.4     Monitore
        7.5     Nachrichten und Remote-Procedure-Call
8.      Probleme bei asynchroner Parallelität
        8.1     Inkonsistente Daten
        8.2     Verklemmungen
        8.3     Lastbalancierung
9.      MIMD-Programmiersprachen
        9.1     Concurrent Pascal
        9.2     Communicating Sequential Processes  CSP
        9.3     occam
        9.4     Ada
        9.5     Sequent-C
        9.6     Linda
        9.7     Modula-P
10.     Grobkörnig parallele Algorithmen
        10.1    Bounded-Buffer mit Semaphoren
        10.2    Bounded-Buffer mit einem Monitor
        10.3    Auftragsverteilung über einen Monitor
        10.4    Asynchrone Simulation
Übungsaufgaben II

Teil III        Synchrone Parallelität
11.     Aufbau eines SIMD-Rechners
        11.1    SIMD-Rechnersysteme
        11.2    Daten-Parallelität
        11.3    Virtuelle Prozessoren
12.     Kommunikation in SIMD-Systemen
        12.1    SIMD-Datenaustausch
        12.2    Verbindungsstrukturen von SIMD-Systemen
        12.3    Vektorreduktion
13.     Probleme bei synchroner Parallelität
        13.1    Indizierte Vektoroperationen
        13.2    Abbildung virtueller Prozessoren auf physische Prozessoren
        13.3    Flaschenhals bei der Anbindung von Peripheriegeräten
        13.4    Netzwerk-Bandbreiten
        13.5    Mehrbenutzerbetrieb und Fehlertoleranz
14.     SIMD-Programmiersprachen
        14.1    Fortran 90
        14.2    C*
        14.3    MasPar Programming Language  MPL
        14.4    Parallaxis
15.     Massiv parallele Algorithmen
        15.1    Numerische Integration
        15.2    Zelluläre Automaten
        15.3    Primzahlengenerierung
        15.4    Sortieren
        15.5    Systolische Matrixmultiplikation
        15.6    Erzeugung von Fraktalen
        15.7    Stereobild-Analyse
Übungsaufgaben III

Teil IV Weitere Modelle der Parallelität
16.     Automatische Parallelisierung und Vektorisierung
        16.1    Datenabhängigkeit
        16.2    Vektorisierung einer Schleife
        16.3    Parallelisierung einer Schleife
        16.4    Auflösung komplexer Datenabhängigkeiten
17.     Nicht-prozedurale parallele Programmiersprachen
        17.1    *Lisp
        17.2    FP
        17.3    Concurrent Prolog
        17.4    SQL
18.     Neuronale Netze
        18.1    Eigenschaften Neuronaler Netze
        18.2    Feed-forward - Netze
        18.3    Selbstorganisierende Netze
19.     Leistung von Parallelrechnern
        19.1    Speedup
        19.2    Scaleup
        19.3    MIMD versus SIMD
        19.4    Bewertung von Leistungsdaten
Übungsaufgaben IV

Literaturverzeichnis
Sachwortverzeichnis