Amdahlsches-Gesetz-Rechner
Eingaben
| Paralleler Anteil | 95 % |
|---|---|
| Prozessoren | 16 |
Amdahlsches-Gesetz-Rechner
Schätzt die maximale Beschleunigung eines Programms durch Parallelisierung nach dem Amdahlschen Gesetz, ausgehend vom parallelisierbaren Anteil der Arbeit und der Anzahl der Prozessoren.
Eingaben
Arbeitslast
Ergebnisse
Geben Sie einen Wert ein, um die Ergebnisse zu sehen.
Beschleunigung
Effizienz
Amdahlsches Gesetz
Das Amdahlsche Gesetz sagt voraus, um wie viel schneller eine feste Aufgabe laufen kann, wenn ein Teil davon parallel über mehrere Prozessoren ausgeführt wird. Es beantwortet eine Frage, die jeder Entwickler beim Skalieren von Software auf mehr Kerne stellt: Wenn nur ein Teil der Arbeit parallelisierbar ist, wie hoch ist die realistische Beschleunigung, und ab wann hilft zusätzliche Hardware nicht mehr? Der Rechner nimmt den parallelisierbaren Anteil der Arbeit und eine Prozessorzahl entgegen und liefert die resultierende Beschleunigung, die theoretische Obergrenze und die parallele Effizienz.
Der serielle Engpass
Die meisten Programme bestehen aus gemischter Arbeit. Manche Teile — unabhängige Schleifeniterationen, das Rendern einzelner Bildkacheln, das Verarbeiten unterschiedlicher Datensätze — können gleichzeitig laufen. Andere Teile — das Lesen einer Konfigurationsdatei, der Aufbau einer Datenstruktur, von der alles Übrige abhängt, ein abschließender Reduktionsschritt — müssen sequenziell ablaufen. Die seriellen Teile lassen sich durch zusätzliche Prozessoren nicht beschleunigen und setzen damit eine untere Schranke für die Gesamtlaufzeit.
Das Amdahlsche Gesetz macht dies präzise. Sei der Anteil der ursprünglichen Laufzeit, der parallelisierbar ist, und der serielle Anteil. Mit Prozessoren ist der parallele Teil nach der ursprünglichen Zeit fertig, während der serielle Teil weiterhin benötigt. Die Gesamtbeschleunigung ist die ursprüngliche Zeit geteilt durch die neue Zeit:
Die Obergrenze
Wenn wächst, schrumpft der Term gegen null, doch der serielle Term bleibt bestehen. Der Grenzwert ergibt die maximale Beschleunigung, die das Programm jemals erreichen kann:
Ein Programm, das zu 95 % parallel ist, kann eine 20-fache Beschleunigung niemals überschreiten, gleich wie viele Prozessoren eingesetzt werden. Ein Programm, das zu 50 % parallel ist, endet beim Doppelten. Deshalb ist die Verringerung des seriellen Anteils — nicht nur der Kauf weiterer Kerne — oft die wirkungsvollere Optimierung.
Rechenbeispiel
Angenommen, 95 % einer Aufgabe sind parallelisierbar und sie läuft auf 16 Prozessoren. Die Beschleunigung beträgt:
S=(1−0.95)+160.951=0.05+0.0593751=0.1093751≈9.1416 Prozessoren liefern also etwa eine 9,1-fache Beschleunigung — deutlich unter dem perfekten Faktor 16. Die theoretische Obergrenze liegt hier bei , und die parallele Effizienz beträgt , das heißt, fast die Hälfte der zusätzlichen Rechenkapazität geht durch den seriellen Engpass verloren.
Warum Effizienz zählt
Die parallele Effizienz, , erfasst, wie gut die zusätzlichen Prozessoren genutzt werden. Eine Effizienz nahe 100 % bedeutet nahezu lineare Skalierung; eine Effizienz, die mit steigendem rasch fällt, signalisiert, dass der serielle Anteil dominiert und weitere Hardware ein schlechtes Geschäft ist. Das Amdahlsche Gesetz beschreibt die starke Skalierung — eine feste Arbeitslast auf mehr Prozessoren. Wenn die Arbeitslast selbst mit der Hardware wächst, gilt stattdessen das optimistischere Gustafsons-Gesetz-Rechner.
Behandeln Sie den parallelen Anteil als Schätzwert: Er wird in der Regel durch Profiling ermittelt und verschiebt sich oft mit Problemgröße und Hardware, sodass die vorhergesagte Beschleunigung eher ein Anhaltspunkt für das erwartete Verhalten als eine Garantie ist.
Häufig gestellte Fragen (FAQ)
Was ist das Amdahlsche Gesetz?
Das Amdahlsche Gesetz, 1967 von Gene Amdahl formuliert, gibt die theoretische Beschleunigung einer festen Aufgabe an, wenn ein Teil davon parallelisiert wird. Kann ein Anteil p der Arbeit parallel über N Prozessoren laufen und muss der verbleibende Anteil 1 − p seriell ausgeführt werden, so beträgt die Gesamtbeschleunigung S = 1 / ((1 − p) + p / N).
Der serielle Anteil setzt eine harte Obergrenze: Egal wie viele Prozessoren hinzukommen, das Programm kann nie schneller als das 1 / (1 − p)-Fache der ursprünglichen Laufzeit werden.
Warum bringen weitere Prozessoren abnehmenden Nutzen?
Mit steigender Prozessorzahl schrumpft der parallele Teil der Arbeit gegen null, während der serielle Teil konstant bleibt. Sobald der parallele Teil klein im Verhältnis zum seriellen ist, ändert jeder weitere Prozessor die Gesamtlaufzeit kaum noch.
Bei 90 % parallelisierbarer Arbeit ergibt der Übergang von 1 auf 16 Prozessoren etwa eine 6,4-fache Beschleunigung, der Übergang von 16 auf 1.024 Prozessoren erreicht jedoch nur etwa das 9,9-Fache — und bleibt damit unter der Obergrenze von 10.
Wie unterscheidet sich das Amdahlsche Gesetz von Gustafsons Gesetz?
Das Amdahlsche Gesetz geht von einer festen Problemgröße aus und fragt, um wie viel schneller sie mit mehr Prozessoren läuft — es betont die durch serielle Arbeit gesetzte Grenze.
Gustafsons Gesetz geht davon aus, dass die Problemgröße mit den verfügbaren Prozessoren wächst (festes Zeitbudget, größere Arbeitslast) und sagt eine günstiger skalierende Beschleunigung voraus. Beide sind korrekt; sie beantworten verschiedene Fragen zu starker und schwacher Skalierung.
Wie schätze ich den parallelen Anteil meines Programms?
Der parallele Anteil sollte gemessen statt geschätzt werden. Profilieren Sie das Programm, um zu ermitteln, wie viel Echtzeit auf Code entfällt, der nebenläufig laufen kann, gegenüber Code, der sequenziell ablaufen muss (E/A-Initialisierung, Abhängigkeitsketten, Synchronisation).
Sie können ihn auch aus zwei gemessenen Laufzeiten bei unterschiedlichen Prozessorzahlen ableiten, indem Sie die Beschleunigungsformel umstellen. Behandeln Sie jeden Einzelwert als Näherung, da sich der parallele Anteil oft mit Problemgröße und Hardware ändert.
Weitere Empfehlungen
Gustafsons-Gesetz-Rechner
Schätzt die skalierte Beschleunigung einer parallelen Arbeitslast nach Gustafsons Gesetz, bei dem die Problemgröße mit der Anzahl der Prozessoren wächst, statt fest zu bleiben.