Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Speed-up und das Amdahlsche Gesetz

Nach dieser Lektion: Ich kann den Speed-up berechnen, den mehr Recheneinheiten bei einem Auftrag bringen.

Lektion, 55 Min.1 BefehlParallelverarbeitung-Lab: wie eine GPU denkt, ohne GPU, in JupyterLab

Mehr Recheneinheiten machen nicht alles schneller

Paralleles Rechnen heißt, eine Aufgabe in Teile zu zerlegen, die gleichzeitig laufen. Der Speed-up sagt, wievielmal schneller die Aufgabe damit fertig ist.

Ein Stadtwerk rechnet jeden Monat 100.000 Rechnungen ab. Acht Recheneinheiten klingen nach achtfacher Geschwindigkeit, doch das stimmt fast nie. Hier lernen Sie, den echten Speed-up vorher auszurechnen.

Am Ende dieser Lektion

Notiz

Ich kann den Speed-up berechnen, den mehr Recheneinheiten bei einem Auftrag bringen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Parallelmehrere Teile eines Auftrags laufen gleichzeitig
Recheneinheitein Prozess oder Thread, der einen Teil der Arbeit macht
Serieller Anteilder Teil, der nur nacheinander laufen kann
Speed-upwievielmal schneller der Auftrag ist als mit einer Einheit2,5
Obergrenzeder höchste Speed-up, den es gibt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Im Lab gibt es keine GPU

Wichtig

Eine GPU (Grafikprozessor) ist ein Chip mit tausenden kleinen Recheneinheiten. Das Lab hat keinen. Es zeigt Ihnen mit Python das Modell, auf dem eine GPU beruht. Die Skripte geben englische Wörter aus, die Zahlen sind überall gleich.

Jeder Auftrag hat seriellen und parallelen Teil

Ein Teil der Arbeit lässt sich aufteilen: Jede Rechnung kann für sich berechnet werden. Das ist der parallele Teil.

Ein anderer Teil geht nur nacheinander: Die Kundendatei muss erst einmal geladen sein. Das ist der serielle Anteil. Mehr Recheneinheiten verkürzen nur den parallelen Teil.

Ein Auftrag mit 100 Schritten, davon 20 seriell

RecheneinheitenSerieller TeilParalleler TeilSchritte insgesamtSpeed-up
120801001,0
22040601,67
42020402,5
82010303,33
16205254,0
80201214,76

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Speed-up ist alte Dauer geteilt durch neue

Die neue Dauer ist der serielle Anteil plus der parallele Teil, geteilt durch die Zahl der Einheiten. Der Speed-up ist die Dauer mit einer Einheit, geteilt durch diese neue Dauer.

Diese Regel heißt Amdahlsches Gesetz. Der Code rechnet die Tabelle nach.

Die Tabelle in Python

Code: python
# Ein Auftrag: 100 Schritte, davon 20 nur nacheinander.
gesamt = 100
seriell = 20
parallel = gesamt - seriell

for einheiten in [1, 2, 4, 8, 16]:
    dauer = seriell + parallel / einheiten
    speedup = gesamt / dauer
    print(einheiten, "Einheiten:", dauer, "Schritte, Speed-up", round(speedup, 2))
# Setzen Sie seriell auf 50 und starten Sie erneut.

Das Lab rechnet dieselbe Regel für drei Anteile

Das Skript amdahl.py im Lab rechnet den Speed-up für 10, 25 und 50 Prozent serielle Arbeit und für 1, 2, 4 und 8 Einheiten. Es misst keine Zeit, es setzt Zahlen in die Regel ein.

Die Kopfzeile und die Wörter „percent“ und „workers“ sind englisch. Die Zahlen lesen Sie wie in der Tabelle oben.

Die Speed-up-Tabelle des Labs

Befehl
docker exec jupyter python3 steps/amdahl.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Der serielle Anteil setzt eine Obergrenze

Selbst mit unendlich vielen Einheiten bleibt der serielle Anteil. Die Obergrenze ist deshalb 1 geteilt durch diesen Anteil.

Bei 20 Prozent seriell ist sie 5. Bei 10 Prozent ist sie 10. Der Auftrag aus der Tabelle erreicht mit 80 Einheiten erst 4,76 von höchstens 5.

Ein häufiger Fehler

Warnung

Viele denken, acht Einheiten machten einen Auftrag achtmal schneller. Das gilt nur, wenn nichts seriell ist. Sobald ein Teil nacheinander laufen muss, bleibt der Speed-up darunter. Fragen Sie zuerst: Wie groß ist der serielle Anteil?

Weiterführend

Ein Auftrag hat 40 Prozent seriellen Anteil. Wie hoch ist die Obergrenze? Und wie viele Einheiten braucht er, um die Hälfte davon zu erreichen?

Rechnen Sie es in der Tabelle von Hand durch und prüfen Sie es mit dem Code oben.

Über dieses Lab und seinen Quellcode: Parallelverarbeitung-Lab: wie eine GPU denkt, ohne GPU, in JupyterLab

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.