Amdahlsches Gesetz
Ein Programm mit 95 % parallelem Anteil läuft auf 8 Prozessoren etwa 5,93-mal schneller, nicht 8-mal, und kommt nie über das 20-Fache hinaus, egal wie viele Sie ergänzen. So dimensionieren Sie einen Cluster oder entkräften ein naives N-fach-Versprechen vor dem Hardwarekauf. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Paralleler Anteil
- 0,95
- Prozessoren
- 8
- Serieller Anteil
- 0,05
- Beschleunigung
- 5,9259259259
- Wirkungsgrad
- 0,7407407407
- Serielle Grenze
- 20
Das Amdahlsche Gesetz benennt die Decke, die restliche serielle Arbeit der parallelen Beschleunigung setzt. Kann ein Anteil P eines Programms nebenläufig laufen und muss der Rest sequenziell bleiben, multipliziert das Hinzufügen von Prozessoren die Laufzeit niemals mit N. Die theoretische Beschleunigung ist eins durch eins minus P plus P durch N: der serielle Rest bleibt im Nenner, wie groß N auch wird. Dieser Rechner zum Amdahlschen Gesetz nimmt den parallelisierbaren Anteil und die Prozessorzahl entgegen und liefert dann den Beschleunigungsfaktor, den seriellen Anteil, die parallele Effizienz und die asymptotische serielle Grenze eins durch eins minus P, sobald serielle Arbeit übrig bleibt. Die Arithmetik ist eine geschlossene Identität, vollständig deterministisch, ohne Simulation und ohne Sprachmodell. Nutzen Sie ihn, um ein Cluster zu dimensionieren, eine naive N-mal-Behauptung zu widerlegen oder eine Lehrbuchkurve der Beschleunigung zu prüfen, bevor Sie Hardware kaufen.
Was das Amdahlsche Gesetz misst und wie der Beschleunigungsfaktor entsteht
Das Amdahlsche Gesetz ist Gene Amdahls Beobachtung von 1967: restliche serielle Arbeit begrenzt, wie viel schneller ein ganzes Programm laufen kann, unabhängig davon, wie viele Prozessoren Sie auf den parallelen Teil ansetzen. Schreiben Sie P für den Anteil der Einzelprozessor-Laufzeit, der nebenläufig laufen kann, und N für die Prozessorzahl. Der sequenzielle Anteil ist eins minus P.
Nachdem Sie die parallele Arbeit N-fach teilen, wird die relative Laufzeit eins minus P plus P durch N, sodass die theoretische Beschleunigung S von N der Kehrwert dieser Summe ist: eins geteilt durch eins minus P plus P durch N. Wenn P eins ist, parallelisiert sich jeder Takt und die Beschleunigung gleicht N. Wenn P null ist, ist die Arbeit rein seriell und die Beschleunigung bleibt eins für jedes N.
Zwischen diesen Extremen wächst die Beschleunigung mit N, flacht aber gegen die serielle Grenze eins durch eins minus P ab. Diese Decke ist der Kern des Gesetzes: ein Programm, das nur fünf Prozent seriell ist, kann niemals eine zwanzigfache Beschleunigung überschreiten, selbst auf einer Million Kerne, weil die seriellen fünf Prozent bleiben, nachdem der parallele Ozean unendlich dünn geschnitten wurde. Die parallele Effizienz ist die Beschleunigung geteilt durch N; sie fällt, wenn N wächst, es sei denn, P ist genau eins.
Dieser Rechner wertet jene Identitäten unmittelbar aus. Er ist kein Profiler, kein ereignisdiskreter Simulator und nicht Gustafsons Modell der skalierten Beschleunigung, das eine andere Frage stellt, indem es das Problem mit der Maschine wachsen lässt. Kennen Sie P aus Messung oder aus einer Überschlagsrechnung, die heiße Schleifen von der Vorbereitung trennt, liefert Amdahls Formel die theoretische Beschleunigung, die Sie erwarten sollten, bevor Cache-Effekte, Lock-Kontention oder NUMA-Verkehr die reale Kurve verschlechtern.
Wo ein Rechner zum Amdahlschen Gesetz seinen Nutzen verdient
Nutzen Sie das Browser-Werkzeug, wenn Sie ein Cluster dimensionieren, eine Leistungsbehauptung prüfen, dass die Beschleunigung der Kernzahl folgt, oder einer Klasse erklären, warum fünfundneunzig Prozent parallel dennoch bei zwanzigfach endet. Erhöhen Sie N, bis die Beschleunigung die serielle Grenze erreicht, und kaufen Sie dann keine Kerne mehr, die Sie nicht ernten können.
Stellen Sie das Ergebnis dem Gustafsonschen Gesetz gegenüber, wenn die Last mit der Maschine wächst; Amdahl hält die Problemgröße fest, was die konservative Schranke für Stapeljobs, Compiler und wissenschaftliche Kerne ist, die nicht magisch wachsen, wenn Sie Sockel hinzufügen. Ergebnisse sind vollständig deterministisch: dieselben P und N liefern stets denselben Beschleunigungsvektor, sodass Sie Beispiele in Tests und Unterrichtsmaterial festnageln können. Es gibt kein Sprachmodell, keinen externen Profiling-Dienst und keine Zufälligkeit.
Anwendungsfälle
Cluster- und Kernzahl-Dimensionierung
Setzen Sie den gemessenen parallelisierbaren Anteil ein und durchlaufen Sie Prozessorzahlen, bis die theoretische Beschleunigung die serielle Grenze erreicht; kaufen Sie dann keine Kerne mehr, die Sie nicht ernten können.
Realitätsprüfungen in Leistungsreviews
Ersetzen Sie eine naive N-mal-Beschleunigungsbehauptung durch Amdahls Schranke, damit Architekturreviews den seriellen Rest zeigen statt einer unbegrenzten linearen Kurve.
Häufige Fragen
Was geschieht, wenn der parallelisierbare Anteil außerhalb von 0 bis 1 liegt?
P ist ein Anteil der Einzelprozessorzeit, daher werden Werte unter 0 oder über 1 abgelehnt und nicht berechnet. Senden Sie 0.95 für 95 Prozent, nicht 95.
Worin unterscheidet sich das vom Gustafsonschen Gesetz?
Amdahl hält die Problemgröße fest und fragt, wie viel schneller dieselbe Arbeit auf N Prozessoren läuft. Gustafson lässt das Problem mit der Maschine wachsen.
Wie lautet die Formel des Amdahlschen Gesetzes?
Der Speedup ist eins geteilt durch den seriellen Anteil plus den auf die Prozessoren verteilten parallelen Anteil. Bei 0,95 parallel und 8 Prozessoren ergibt das eins durch 0,05 plus 0,95 geteilt durch 8, also etwa 5,93.
Was sagt die parallele Effizienz aus?
Sie ist der Speedup geteilt durch die Prozessorzahl. Bei 5,93-fach auf 8 Prozessoren liegt sie bei etwa 0,74: Jeder Prozessor leistet rund drei Viertel seines Idealanteils, und dieser Anteil sinkt mit jedem weiteren.
Erreicht mein echtes Programm diesen Speedup?
Meist nicht. Das Ergebnis ist eine theoretische Obergrenze für eine feste Arbeitslast. Cache-Effekte, Sperrkonflikte und Speicherverkehr verschlechtern reale Kurven, nehmen Sie es also als besten Fall für den Vergleich mit Ihren Messungen.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/amdahls-law \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"parallel_fraction":0.95,"processors":8}'const res = await fetch("https://api.kit.forhosting.com/dev/amdahls-law", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"parallel_fraction": 0.95,
"processors": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/amdahls-law",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"parallel_fraction": 0.95,
"processors": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/amdahls-law", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"parallel_fraction":0.95,"processors":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"parallel_fraction":0.95,"processors":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/amdahls-law", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"parallel_fraction": 0.95,
"processors": 8
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.amdahls_law",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_processors | 1000000000000 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Eingabevertrag, Antwortform und Fehlerverhalten
Nach der Prüfung berechnet die Engine den seriellen Anteil als eins minus P, den Amdahl-Nenner als diesen seriellen Rest plus P durch N, die Beschleunigung als eins durch den Nenner und die Effizienz als Beschleunigung durch N. Wenn P eins ist, ist die serielle Grenze unbeschränkt, sodass dieser Schlüssel weggelassen wird statt als null ausgegeben zu werden. Beispiel: P gleich 0.95 und N gleich acht ergibt eine Beschleunigung von etwa 5.93, eine Effizienz von etwa 0.74 und eine serielle Grenze von zwanzig. Das ist ein Orakel theoretischer Beschleunigung unter Amdahls Modell fester Last, keine Messung Ihrer Binärdatei und kein Rechner für Gustafsons skalierte Beschleunigung. Senden Sie per POST einen JSON-Körper mit zwei Pflichtfeldern. parallel_fraction ist der parallelisierbare Anteil P, eine endliche Zahl von null bis eins einschließlich; senden Sie 0.95 für fünfundneunzig Prozent, niemals fünfundneunzig. Alias p, parallelizable_fraction und f werden akzeptiert. processors ist die Prozessorzahl N, eine ganze Zahl von eins bis einer Billion. Alias n, cores und n_processors werden akzeptiert. Fehlende Felder, nicht endliche Werte, nicht ganzzahlige Prozessorzahlen, N unter eins, N über dem veröffentlichten Maximum und ein parallelisierbarer Anteil außerhalb von null bis eins scheitern mit invalid_input unter Nennung des Felds und werden nicht berechnet. Der JSON-Körper wiederholt parallel_fraction und processors und liefert dann serial_fraction, speedup, efficiency und eine formula-Zeichenkette, die S von N gleich eins durch eins minus P plus P durch N neu formuliert. Wenn P streng kleiner als eins ist, liefert er außerdem serial_limit, die asymptotische Schranke eins durch eins minus P.
Wo ein Rechner zum Amdahlschen Gesetz seinen Nutzen verdient
Nutzen Sie die API, wenn ein Skript, eine Interview-Sandbox, ein Architekturnotizbuch oder eine Prüfung der kontinuierlichen Integration stabiles JSON für viele Paare (P, N) unter einem Vertrag braucht. Jede erfolgreiche Anfrage ist ein abrechenbares Element zu $0.002; eine fehlgeschlagene Prüfung wird nicht berechnet. Der veröffentlichte Prozessorbereich hält die geschlossene Auswertung in gewöhnlichen IEEE-754-Doubles und deckt jede praktische Maschine ab, die Sie von Hand dimensionieren würden. Verdrahten Sie den Endpoint in Tutorien zum Parallelrechnen, Kapazitätsplaner, Architekturprüfungen oder Orakel für Programmierinterviews, in denen Sie die exakte Amdahl-Identität anekdotischen Beschleunigungstabellen vorziehen, die den seriellen Rest verbergen.
Integrationsbeispiele
Lehre des Parallelrechnens
Geben Sie Studierenden ein deterministisches Orakel für S(N)=1/((1-P)+P/N), einschließlich der Fälle P=0, P=1 und der seriellen Grenze, ohne einen Profiler aufzusetzen.
Technische Fragen
Wie lautet die Formel des Amdahlschen Gesetzes für die Beschleunigung?
Senden Sie parallel_fraction P in [0, 1] und processors N als ganze Zahl ≥ 1. Die API liefert S(N)=1/((1-P)+P/N), plus seriellen Anteil 1-P und Effizienz S/N.
Was ist die serielle Grenze, die der Rechner zurückgibt?
serial_limit ist 1/(1-P), die maximale Beschleunigung, wenn N gegen unendlich geht. Sie entfällt bei P=1, weil ein vollständig paralleles Programm keine serielle Schranke hat.
Was kostet der Rechner zum Amdahlschen Gesetz?
Das Browser-Werkzeug ist kostenlos. API-Anfragen nutzen vorausbezahltes KIT-Guthaben zu $0.002 je erfolgreichem Aufruf; ungültige Eingabe wird nicht berechnet.