Verloren im Labyrinth der IT-Begriffe? Hier finden Sie Definitionen und Basiswissen zu Rechenzentrums-IT und -Infrastruktur.

Von Programmfäden, parallelen Daten-Paketen und verschränkten Qubits Was ist Parallelverarbeitung und für was ist sie gut?

Autor / Redakteur: Jürgen Höfling / Ulrike Ostler

Parallelverarbeitung klingt nach Beschleunigung. Soweit so gut, aber man sollte sich nicht täuschen lassen. Parallelverarbeitung in der IT erfordert viel Verständnis für die „harte und die weiche Ware“, damit sie ein Erfolg wird.

Firma zum Thema

Der Parallelarbeiter als Hans-Dampf-in-allen-Küchen ist nicht unbedingt ein Vorbild für gute IT-Parallelverarbeitung
Der Parallelarbeiter als Hans-Dampf-in-allen-Küchen ist nicht unbedingt ein Vorbild für gute IT-Parallelverarbeitung
(Bild: Stefan_Bayer_pixelio.de)

Gemeinsam sind wir stark? Vielleicht! Zwei schaffen in derselben Zeit gemeinsam das Doppelte wie einer? Na ja, kommt darauf an.

Wenn 20 Arbeiter 300 Tage benötigen, um ein Häuschen zu bauen, benötigen dann 2.000 Arbeiter nur 3 Tage? Das ist stark zu bezweifeln. Gut, man müsste sich die Prozesse genau ansehen, um eine fundierte Antwort geben zu können.

Auf den ersten, zweiten und auch dritten Blick scheint es jedenfalls eine allzu simple Idee, Prozesse, die stark auf Kooperation und Kommunikation aufsetzen, allein durch parallele Bearbeitung in der beschriebenen Weise beschleunigen zu wollen. In vielen Fällen dürfte ein solches Vorgehen nicht nur nicht die erwünschte Beschleunigung bringen, sondern schlicht pures Chaos.

Die Gefahr der Blockade bei Parallelisierung

Solche grundsätzlichen Überlegungen sind in analoger Weise auch für die Parallelverarbeitung in der IT gültig. Ebenso wie eine einzelne Person nicht tatsächlich parallel arbeiten kann und das diesbezügliche Multitasking nur gefühlt ist, sind auch die informationstechnischen Analoga in Gestalt der nebenläufigen Programmfäden (Threads) nicht wirklich parallel, sondern nur „fast parallel“. Tatsächlich aber sind sie sequenziell mit fliegendem Wechsel; und wenn man bei der Programmierung nicht aufpasst, blockieren sich die Prozesse wechselseitig beim Zugriff auf Ressourcen („Deadlocks“) oder zwei Prozesse geraten in eine Endlos-Schleife, in dem in einem ewigen Hin und Her der eine Prozess immer genau den Betrag zubucht, den der andere wegnimmt.

Ganz wie bei uns Menschen, wenn wir sagen „wir machen zwei oder drei Sachen gleichzeitig“ sind auch Threads quasi-parallele Systeme, will heißen: Die Programmwechsel zwischen den nebenläufigen Fäden sind so schnell, dass sie im Programmablauf parallel erscheinen.

Schnelle Wechsel

Programmtechnisch wird der Umschaltprozess durch Time-Slots innerhalb des Gesamtprogramms realisiert. Das bringt zusätzliche Komplexität in die Programm-Entwicklung mit entsprechenden Fehlermöglichkeiten.

Darüber hinaus wird das Computerprogramm durch das ständige blitzschnelle Umschalten zu einem nicht-deterministischen Gebilde, weil bei jedem Programmdurchlauf die Umschaltpunkte sich um ein paar Mikrosekunden verschieben können. Fehler sind schwer zu entdecken und zuweilen nicht reproduzierbar.

Auch beim menschlichen Quasi-Multitasking sind Fehler in den einzelnen „Threads“ kaum zu vermeiden. Fehlersuche und Kaffeetrinken mag ja noch ganz gut zusammengehen, bei Telefonieren und E-Mail-Lesen geht vermutlich schon viel Information verloren und von Fehlersuche beim Telefonieren ist dringend abzuraten. Und wer einmal Personen erlebt hat, die so schnell reden, dass sie den Folgesatz beziehungsweise den darin enthaltenen Gedanken schon in den aktuellen Satz einfließen lassen, der erahnt, dass auch menschlichen Wesen „Thread-Switching“ nicht fremd ist.

Parallelisierung und der Datenkontext

Die Parallelisierung von menschlicher und maschineller (Inter-)Aktion, die wir eben vorgenommen haben, ist durchaus erhellend, hat aber sicher als Analogie-Betrachtung ihre Grenzen; schließlich wurde die Computerei erfunden, um wiederkehrende und daher eher öde Rechen- und Vergleichsoperationen dem Menschen abzunehmen und Maschinen zu überlassen. Das gilt auch in unseren heutigen Zeiten der Künstlichen Intelligenz, meint zumindest der Autor.

Parallelverarbeitung in der IT bietet sich insofern vor allem dann an, wenn sich durch die Aufgabenstellung die zu verarbeitenden Daten gut in rechnerisch voneinander unabhängige Datenpakete aufteilen lassen oder auch wenn die logischen Abhängigkeiten zwischen Datenpaketen offensichtlich sind und dadurch keine aufwändige Kommunikation bei deren paralleler Abarbeitung notwendig wird.

Ein Beispiel für gut parallelisierbare Datenpakete sind Matrizenoperationen, die mit einem Array-Parallelrechner (auch Vektorrechner genannt) ausgeführt werden, ein Beispiel für gut überschaubare logische Abhängigkeiten sind Operationen in Word, die sich hinter Registerkarten verbergen (Ein- Ausgabe-Operationen, Rechtschreibprüfung oder automatisches Speichern) und strukturell so mit der Gesamt-Textverarbeitung gekoppelt sind, dass es sinnvoll ist, sie nicht in mehrere Prozesse aufzuteilen, sondern als Threads quasi-parallel laufen zu lassen.

Gleichwohl ist auch bei Datenvolumina, die scheinbar einfach parallelisiert werden können, auf bestimmte Kontextbedingungen zu achten. So schrumpfen die Vorteile der Parallelverarbeitung schnell wieder dahin, wenn die verschiedenen Datenpakete sich beispielsweise Konkurrenz beim Zugriff auf den Hauptspeicher machen oder wenn eine zunehmende Zahl von parallelen Operationen dazu führt, dass sich kontinuierlich auch die Datenpaket-Größen erweitern, wodurch wiederum die Effizienz wichtiger Optimierungs-Algorithmen leidet.

Das letztgenannte Beispiel stammt aus dem Bereich des Maschinellen Lernens, wo Graphcore, ein Spezialist für KI-Hardware und KI-Software festgestellt hat, dass sich bei Ausweitung des Parallelbetriebs über eine bestimmte Größe hinaus, dass so genannte „stochastische Gradienten-Abstiegsverfahrens“ (stochastic gradient descent, SGD) nicht mehr effizient einsetzen lässt.

Bedingungen für den Erfolg einer Parallelisierung

Neben einem „konkurrenzlos“ offenen Hauptspeicherzugang und einer Parallelisierung der Daten, so dass sich deren Paketgröße nicht negativ auf die verwendeten Algorithmen auswirkt, spielt zusätzlich auch die Geschwindigkeit eine Rolle, mit der die zu verarbeitenden Daten zum Prozessor hin oder von diesem weg transportiert werden. Bei einem Vektorrechner erreicht man dies dadurch, dass man einen Zwischenspeicher zwischen Prozessor und Hauptspeicher installiert oder eben, dass man dem Prozessor parallel-simultane Zugriffsmöglichkeiten auf den Hauptspeicher ermöglicht. Beide Techniken haben ihre Vor- und Nachteile, so dass es letztlich von der vorliegenden Datenstruktur abhängt, welche man wählt.

Die Analyse der Datenstruktur ist prinzipiell der alles entscheidende Faktor, wenn es darum geht, die Vorteile der Parallelisierung optimal auszunützen. Eine solche Analyse benötigt Zeit und Erfahrung. Zumindest letztere dürften Anwender, die mit Parallelrechner-Maschinen arbeiten, allemal haben, da sie als Physiker, Ingenieure oder Ökonomen tief mit der Materie vertraut sind, aus der die zu parallelisierenden Rechenoperationen stammen.

Eine solche tiefgreifende inhaltliche Vertrautheit mit den Daten, die verarbeitet werden sollen, ist noch einmal mehr bei einem Quantenrechner vonnöten. Dieser bietet eine inhärente Parallelität dadurch, dass auf die Rechen-Bausteine des Quantenrechners – die so genannten Qubits – eine quantenphysikalische Verschränkungsoperation ausgeführt wird, bei der sich eine beliebige Menge von Folgen klassischer Bits gleichzeitig darstellen lässt.

Durch diese inhärente Parallelität werden für die Ausführung komplexer Algorithmen weniger Schritte benötigt, aber es eignen sich eben nur bestimmte Problemlagen für diese Art von Parallelverarbeitung. Und auch die Umsetzung geeigneter Algorithmen– etwa aus der Materialwissenschaft, der Logistik oder aus der Finanzindustrie - ist alles andere als trivial.

Insofern ist auch bei der Parallelisierung in der IT der Genius und der Schweiß des Analytikers und Programmierers gleichermaßen wichtig: nur Transpiration, gepaart mit Inspiration führt zum Erfolg.

(ID:47045239)