Amdahls Gesetz: Rechner für Speedup und Skalierungsgrenze
Amdahls Gesetz schätzt den größten theoretischen Speedup, wenn ein Teil eines Programms parallel ausgeführt werden kann und der Rest seriell bleiben muss.
Im Browser ausführen – kostenlos
Geben Sie den parallelisierbaren Anteil und die Prozessorzahl ein, um den erwarteten Speedup, die Prozessoreffizienz und den seriellen Anteil an der beschleunigten Laufzeit zu ermitteln. Der Rechner zeigt außerdem die vom seriellen Programmteil bestimmte asymptotische Grenze. So können Sie beurteilen, ob zusätzliche Prozessoren sinnvoll sind oder ob Sie zuerst den sequenziellen Code optimieren sollten.
Was Amdahls Gesetz misst
Amdahls Gesetz unterteilt die ursprüngliche Programmlaufzeit in einen parallelisierbaren und einen seriellen Anteil. Ist p parallelisierbar und verteilen N Prozessoren diese Arbeit vollkommen gleichmäßig, ergibt sich die normierte Laufzeit (1 − p) + p/N. Der maximale theoretische Speedup ist der Kehrwert dieser Laufzeit. Dieser Rechner wendet die Gleichung unmittelbar an und nimmt eine ideale Planung an: Die parallele Arbeit wird gleichmäßig verteilt, die Prozessoren verursachen keinen Kommunikationsaufwand und zusätzliche Einheiten beschleunigen den seriellen Anteil nicht. Das Ergebnis ist daher eine Obergrenze und keine Benchmark-Prognose. Eine reale Umsetzung kann wegen Synchronisation, Speicherkonflikten, Aufgabenstart, ungleicher Last und Datenübertragung langsamer sein. Die Obergrenze hilft dennoch zu prüfen, ob eine Messung plausibel ist und wie viel Verbesserungsspielraum besteht. Geben Sie den parallelen Anteil als Dezimalzahl ein; 95 Prozent entsprechen beispielsweise 0.95.
Engpass und Skalierungsgrenze richtig deuten
Der serielle Anteil ist eins minus dem parallelen Anteil und bestimmt die langfristige Obergrenze. Bei 95 Prozent paralleler Arbeit bleiben 5 Prozent seriell. Selbst unbegrenzt viele Prozessoren können deshalb keinen höheren Speedup als den Faktor 20 erreichen. Das Feld für den asymptotischen Speedup nennt diese Grenze, sofern ein serieller Anteil vorhanden ist. Der Anteil des seriellen Engpasses beantwortet eine andere Frage: Welcher Teil der verkürzten Laufzeit entfällt bei der gewählten Prozessorzahl weiterhin auf die serielle Ausführung? Dieser Anteil steigt beim Hinzufügen von Prozessoren häufig stark. Ein Abschnitt, der ursprünglich nur 5 Prozent benötigte, kann nach Aufteilung des parallelen Teils die Laufzeit dominieren. Die parallele Effizienz ist der berechnete Speedup geteilt durch die Prozessorzahl. Sinkt sie, trägt jeder zusätzliche Prozessor weniger bei. Zusammen machen diese Werte den abnehmenden Nutzen starker Skalierung sichtbar und unterscheiden fehlende Rechenkapazität von einer grundsätzlich seriellen Begrenzung.
Das Ergebnis für die Leistungsplanung verwenden
Beginnen Sie mit einem gemessenen Profil einer repräsentativen Arbeitslast statt mit einer optimistischen Schätzung. Ordnen Sie Laufzeit nur dann als parallelisierbar ein, wenn das Produktionsdesign sie tatsächlich gleichzeitig ausführen kann. Berechnen Sie anschließend mehrere Prozessorzahlen und vergleichen Sie den zusätzlichen Speedup mit den Infrastrukturkosten. Ändert eine Verdopplung der Prozessoren das Ergebnis kaum, weist der serielle Anteil den Weg: Optimieren Sie den sequenziellen Pfad, ändern Sie den Algorithmus, verringern Sie die Koordination oder erhöhen Sie die unabhängige Arbeit pro Lauf. Die Berechnung ist besonders vor einem Wechsel zu mehr Kernen, Workern, GPU oder verteilten Knoten nützlich, weil sie die Annahme linearer Skalierung verhindert. Sie eignet sich auch als Referenz für Regressionsberichte: Vergleichen Sie den gemessenen Speedup mit dem theoretischen Maximum und untersuchen Sie die Differenz. Amdahls Gesetz beschreibt feste Arbeitslasten; wächst die Last mit den Ressourcen, beantwortet Gustafsons Gesetz eine andere Planungsfrage.
Anwendungsfälle
Eine Mehrkernoptimierung planen
Schätzen Sie vor der Parallelisierung einer festen Arbeitslast den bestmöglichen Gewinn mit der vorgesehenen Prozessorzahl.
Abnehmenden Nutzen erklären
Zeigen Sie, warum zusätzliche Worker immer weniger bringen, wenn eine Abfrage, Koordination oder andere serielle Stufe unverändert bleibt.
Theorie und Benchmarks vergleichen
Nutzen Sie die theoretische Obergrenze als Bezug für Messwerte und untersuchen Sie Planungs-, Kommunikations- oder Konfliktaufwand.
Häufige Fragen
Was bedeutet der parallele Anteil?
Er bezeichnet den Teil der ursprünglichen Laufzeit, der auf Prozessoren verteilt werden kann. Geben Sie eine Dezimalzahl zwischen 0 und 1 ein.
Warum ist das Ergebnis ein theoretischer maximaler Speedup?
Die Gleichung setzt perfekte Aufteilung ohne Kommunikation, Synchronisation, Startaufwand, Konflikte oder Planungskosten voraus. Der reale Gewinn ist meist kleiner.
Was ist der asymptotische Speedup?
Er ist die Obergrenze, wenn die Prozessorzahl gegen unendlich geht. Bei einem seriellen Anteil s ungleich null beträgt sie 1/s.
Was zeigt der Anteil des seriellen Engpasses?
Er zeigt, welcher Anteil der beschleunigten Laufzeit bei der gewählten Prozessorzahl seriell bleibt und wann die sequenzielle Ausführung dominiert.
Ergibt ein Prozessor immer einen Speedup von eins?
Ja. Im idealen Modell nach Amdahl führt ein Prozessor beide Teile in der ursprünglichen normierten Zeit aus; Speedup und Effizienz sind daher eins.
Was kostet die Berechnung über die API?
Jede API-Anfrage kostet $0.002. Dieselbe deterministische Berechnung steht in der Browseroberfläche bereit.
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/amdahl \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"parallel_fraction":0.95,"processors":16}'const res = await fetch("https://api.kit.forhosting.com/dev/amdahl", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"parallel_fraction": 0.95,
"processors": 16
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/amdahl",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"parallel_fraction": 0.95,
"processors": 16
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/amdahl", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"parallel_fraction":0.95,"processors":16}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"parallel_fraction":0.95,"processors":16}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/amdahl", 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": 16
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.amdahl",
"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.
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. |