Parallele und verteilte Datenverarbeitung – Amdahlsches Gesetz, GPUs und Pipelining

InformatikComputer und HardwareAlter 16–17

Wird geladen …

Mit meiner Klasse nutzen ✨ Mit KI anpassen Problem melden

Teilen Sie einen Auftrag mit dem parallelen Anteil p in Teilaufgaben auf und führen Sie ihn sequenziell auf einem Kern, parallel auf n Kernen oder verteilt auf vernetzten Rechnern aus, die zuerst ihre Daten empfangen müssen. Ein Gantt-Diagramm zeigt, was jeder Kern tut, das Speed-up-Diagramm folgt dem Amdahlschen Gesetz S = 1/((1 − p) + p/n) mit der Grenze 1/(1 − p), und eine Tabelle hält Ihre Läufe fest. Der Tab GPU lässt einen Bildfilter auf wenigen schnellen CPU-Kernen und vielen einfachen GPU-Kernen laufen; der Tab Pipelining zeigt überlappende Phasen Holen, Dekodieren und Ausführen mit einem Pipeline-Stillstand durch einen Datenkonflikt.

Lektion: Parallele und verteilte Datenverarbeitung: sequenzielle und parallele Teilaufgaben, Mehrkernprozessoren, Amdahlsches Gesetz, Speed-up und Effizienz, Kommunikationsaufwand, GPUs, Pipelining und Datenkonflikte

Was sie zeigt

Bei paralleler Datenverarbeitung laufen Teile eines Programms gleichzeitig auf mehreren Kernen; bei verteiltem Rechnen teilen sich vernetzte Rechner die Arbeit und müssen einander Daten schicken. Nur der parallele Anteil p lässt sich aufteilen, daher liefert das Amdahlsche Gesetz das Speed-up S = 1/((1 − p) + p/n), das nie größer als 1/(1 − p) wird. In verteilten Systemen wächst die Kommunikationszeit mit der Zahl der Rechner, sodass zusätzliche Rechner den Auftrag sogar verlangsamen können. Eine GPU hat Tausende einfache Kerne für gleiche Operationen auf vielen Daten. Pipelining überlappt die Phasen Holen, Dekodieren und Ausführen aufeinanderfolgender Befehle.

So funktioniert es

Wählen Sie im Tab Parallel und verteilt die Betriebsart, stellen Sie Paralleler Anteil p, Anzahl Kerne n, Teilaufgaben und bei verteilter Ausführung Daten senden pro Rechner ein; Starten animiert das Gantt-Diagramm, In Tabelle speichert das Ergebnis. Wählen Sie im Tab CPU und GPU die Aufgabe und die Zahl der GPU-Kerne und klicken Sie auf Starten. Wählen Sie im Tab Pipelining ein Programm, schalten Sie Pipelining ein oder aus und nutzen Sie Schritt oder Abspielen.

Einstellbare Parameter

  • Start-Tab Parallel und verteilt, CPU und GPU, Pipelining
  • Betriebsart Sequenziell (1 Kern), Parallel (n Kerne), Verteilt (n vernetzte Rechner)
  • Paralleler Anteil p 0–100 %
  • Anzahl Kerne oder Rechner n 1–32
  • Anzahl paralleler Teilaufgaben 4–48
  • Zeit zum Senden der Daten an jeden Rechner 0–5 s
  • Anzahl GPU-Kerne 32, 64, 128, 256, 512
  • Aufgabe im GPU-Tab Schwarz-Weiß-Filter (jedes Pixel unabhängig), Fortlaufendes Weichzeichnen (Pixel braucht Vorgänger)
  • Pipelining an
  • Programm im Pipelining-Tab Ohne Abhängigkeiten, Mit Datenkonflikt, Konflikt, Befehle umsortiert

Fragen zum Erkunden

  1. Warum wird der Auftrag bei p = 80 % durch 32 statt 16 Kerne kaum noch schneller?
  2. Warum können bei verteilter Ausführung zusätzliche Rechner den Auftrag verlangsamen?
  3. Warum gewinnt die GPU beim Schwarz-Weiß-Filter, verliert aber beim fortlaufenden Weichzeichnen gegen die CPU?