| Inhaltsverzeichnis | 5 |
---|
| 1 Einleitung | 15 |
---|
| 1.1 Für wen ist dieses Buch? | 15 |
| 1.2 Ziele des Buchs | 16 |
| 1.3 Parallel Computing: Warum? | 17 |
| 1.3.1 CPU: Umkehrung der Entwicklung | 18 |
| 1.3.2 Multi-core-Prozessoren | 21 |
| 1.3.3 Nutzung von Multi-core-Prozessoren | 21 |
| 1.4 Grundlagen | 23 |
| 1.4.1 Definition: Parallel Computing | 25 |
| 1.4.2 Rechnerarchitekturen | 26 |
| 1.4.3 Multithreading vs. Parallel Computing | 31 |
| 1.4.4 Asynchrone Programmierung vs. Parallel Computing | 32 |
| 1.4.5 Arbeitsweise | 33 |
| 1.4.6 Parallele Programmiermodelle | 33 |
| 1.4.7 Einteilung nach Flynn | 37 |
| 1.5 Performanceindikatoren und Gesetzmäßigkeiten | 38 |
| 1.5.1 Speedup | 39 |
| 1.5.2 Effizienz | 41 |
| 1.5.3 Amdahlsches Gesetz | 42 |
| 1.5.4 Gustafson-Gesetz | 45 |
| 1.5.5 Mehraufwand (Parallel Overhead) | 45 |
| 1.5.6 Kritische Bereiche (Load Imbalance) | 47 |
| 1.5.7 Slowdown-Effekt | 48 |
| 1.5.8 Weitere wichtige Begriffe | 48 |
| 1.6 Granularität | 50 |
| 1.6.1 Fine-grain Parallelism | 51 |
| 1.6.2 Coarse-grain Parallelism | 51 |
| 2 Allgemeine Konzepte | 53 |
---|
| 2.1 Regeln für erfolgreiches Parallel Computing | 53 |
| 2.1.1 Arbeitsverteilung | 55 |
| 2.1.2 Zustandsverwaltung (Shared State) | 60 |
| 2.1.3 Selbstblockade (Deadlock) | 64 |
| 2.1.4 Starvation | 69 |
| 2.1.5 Fehlerbehandlung | 69 |
| 2.2 Projektmanagement und Planung | 71 |
| 2.2.1 Grad der Parallelisierung | 71 |
| 2.2.2 Kostenkalkulation | 73 |
| 2.2.3 Anforderungsdefinition | 73 |
| 2.3 Modellierungsmöglichkeiten | 74 |
| 2.3.1 (Passive) Klassen und aktive Klassen | 75 |
| 2.3.2 Kommunikation | 77 |
|