Das Amdahlsche Gesetz (englisch Amdahl's Law) beschreibt, wie viel ein paralleles System durch zusätzliche Prozessoren oder Kerne schneller wird. Es wurde 1967 von Gene Amdahl formuliert und gilt bis heute als das wichtigste Modell für den Nutzen von Parallelverarbeitung.
Die Formel
Ist P der parallelisierbare Anteil eines Programms (zwischen 0 und 1) und N die Anzahl der Kerne, gilt für den maximalen Speedup:
Speedup(N) = 1 / ((1 - P) + P / N)
Der Term (1 − P) ist der sequenzielle Anteil, der nicht parallel läuft. Er bleibt bei jeder Kernzahl gleich und begrenzt den gesamten Gewinn.
Die entscheidende Konsequenz
Mit unendlich vielen Kernen geht P/N gegen null — der Speedup nähert sich dann 1 / (1 − P) an. Beispiel: Sind 90 Prozent eines Programms parallelisierbar (P = 0,9), ist selbst mit beliebig vielen Kernen höchstens der zehnfache Speedup möglich. Der verbleibende serielle Anteil von zehn Prozent dominiert die Laufzeit.
Deshalb ist die Skalierung eines Multikern-Prozessors nie linear: Vier Kerne bedeuten bei P = 0,8 nur einen Speedup von etwa 2,5 statt 4. Programmoptimierung muss daher den sequenziellen Teil verkleinern, nicht nur Kerne hinzufügen.
Anwendungsbereiche
- CPU-Design: Wie viele Kerne lohnen sich für eine typische Arbeitslast?
- High Performance Computing: Große Cluster skalieren nur, wenn der parallele Anteil sehr hoch ist.
- GPU-Computing: Tausende Recheneinheiten helfen nur bei stark parallelisierbaren Aufgaben, etwa Matrixoperationen.
Kritik und Gegenposition
Das Gesetz setzt eine feste Problemgröße voraus. John Gustafson zeigte 1988: Wächst das Problem mit der Rechenleistung mit (was in der Praxis häufig passiert), kann der erreichbare Speedup deutlich größer sein als nach Amdahl erwartet — bekannt als Gustafsons Gesetz. Beide Modelle ergänzen sich: Amdahl beschreibt die Grenze bei fester Größe, Gustafson den Skalierungseffekt bei wachsenden Problemen.
Verwandte Grundlagen: Prozess, Thread, Superskalarität.