Amdahlsches Gesetz und Skalierung
Kurz: Das Amdahlsche Gesetz sagt: Der nicht parallelisierbare Anteil eines Programms begrenzt den Gesamtgewinn durch mehr Prozessoren. Sind 10 % seriell, ist der Speedup höchstens 10-fach, egal wie viele Kerne du hast.
Genauer: Mit Parallelanteil p und n Prozessoren gilt Speedup = 1 / ((1 − p) + p/n). Für n → ∞ ergibt sich 1/(1 − p). Das Gesetz erklärt, warum 64 Kerne selten 64-fach schneller sind.
Im Detail
- Beispiel: p = 0,9, n = 8 → 1 / (0,1 + 0,1125) ≈ 4,7.
- Gustafson: Bei wachsender Problemgröße steigt der parallele Anteil, Skalierung bleibt sinnvoll.
- Overhead: Synchronisation, Kommunikation und Sperren verschlechtern die Skalierung zusätzlich.
- Engpass finden: Erst messen (Profiling), dann den größten seriellen Anteil verbessern.
- Skalierungsarten: Vertikal (stärkerer Rechner) und horizontal (mehr Rechner).
- Universal Scalability Law: Berücksichtigt zusätzlich Kohärenz-Kosten.
Siehe auch: Speicherhierarchie und Cache-Lines, Little’s Law und Kapazitätsplanung