Von den neuerdings mehreren CPUs und Prozessorkernen im Rechner profitiert der Anwender nur, wenn auch die eingesetzte Software mitspielt. Das vorgestellte Buch “Patterns for Parallel Software Design” beschreibt systematisch die Muster für den Entwurf geeigneter Programme.
Computer-Hardware wird dank Multicore-Architekturen immer leistungsfähiger und verlangt nach Software, die Schritt halten kann. Passende Hinweise gibt Jorge Luis Ortega-Arjona in seinem 400-seitigen englischsprachigen Buch “Patterns for Parallel Software Design”. Dort erhält der Leser Hilfestellungen, um die neue Komplexität zu verstehen und zu meistern.
Zunächst erklärt der Autor die zugrunde liegenden Konzepte und Strukturen von Patterns und gibt einen kurzen Überblick über paralleles Programmieren. In den nächsten drei Kapiteln entwickelt Ortega-Arjona seine Systematik für den Entwurf parallelisierter Software.
Die zentralen Bausteine seines Pattern-Katalogs sind Architektur-Patterns für die Koordination paralleler Softwaresysteme, Design Patterns für die Kommunikation sowie Idiome für die Synchronisation der Komponenten. Dabei stellt der Verfasser Architektur-Patterns wie parallele Pipes und Filter, parallele Layer und Manager-Worker vor, Design Patterns wie Channel, Pipe und Rendezvous sowie Idiome wie Semaphore, Monitore, Message Passing und Remote Procedure Call.
Ortega-Arjonas besonderer Ansatz besteht darin, dass er das Zusammenspiel der zumeist bekannten Patterns für die einzelnen Abstraktionsstufen umfassend darlegt. Auch mit Beispielen spart der Autor nicht. Sie sind zwar mitunter sehr anspruchsvoll, helfen aber dabei, die Theorie mit Leben zu füllen.
Nachdem der Verfasser sein Konzept für die Gestaltung paralleler Software entwickelt hat, ist es Zeit für das wertvollste Kapitel: Der Autor gibt dem Software-Entwickler wertvolle Entscheidungsmatrizen an die Hand, um die richtige Koordination, Kommunikation und Synchronisation bei der Gestaltung parallelisierter Programme zu identifizieren und so das Zusammenspiel der Abstraktionsstufen zu meistern.
Die richtigen Fragen
Entscheidende Fragen sind: Werden die Berechnungsschritte des Algorithmus parallelisiert oder die zu verarbeitenden Daten parallel ausgewertet? Sind die Schritte homogener oder heterogener Natur? Aber auch beim Entwurf der Subsysteme gilt es, einige Fragen zu beantworten: Kommunizieren die Subsysteme auf gemeinsamen Variablen oder durch Nachrichtenaustausch? Verständigen sie sich durch Funktionsaufrufe oder durch Datenaustausch?
Ein einfaches Beispiel verdeutlicht diesen Entscheidungsprozess im Stil von Ortega-Arjona: Eine Grafikpipeline beschreibt, welche Schritte eine Liste von Polygonen durchlaufen muss, um als 3D-Szene auf dem Bildschirm zu erscheinen. Ein paralleler Ansatz für diese Aufgabenstellung besteht darin, die Bearbeitungsschritte der heterogenen Daten zu parallelisieren. Die Entscheidungsmatrix für die Architektur des Gesamtsystems ergibt in diesem Fall das Pattern “Parallel Pipes and Filters”. Für die Kommunikation der Subsysteme empfiehlt sich die “Shared Variable Pipe” oder die “Message Passing Pipe”. Die Wahl der geeigneten Design Patterns hängt nun davon ab, ob das Gesamtsystem gemeinsam genutzten oder verteilten Speicher verwendet.
Pattern-Tradition
Das Werk “Patterns for Parallel Software Design” steht in der Tradition der Pattern-Bücher und folgt deren klassischem Aufbau: Den Hauptteil bildet eine detaillierte katalogartige Übersicht über die Patterns, die der Text in einer streng definierten Form beschreibt. Und zum Schluss gibt es noch ein paar weiterführende Gedanken – das war\’s.
Neben dem Katalog-Charakter trägt der ausgesprochen technische und schmucklose Schreibstil dazu bei, dass diese Werke leider einen hohen Einschlaffaktor besitzen. Trotzdem haben sich mehrere solcher Bücher, etwa “Pattern-Oriented Software Architecture”, als Klassiker in Sachen Software-Entwurf etabliert. Durch tägliche Benutzung machen sie sich unentbehrlich und lassen das Verständnis der behandelten Thematik reifen.
Das gilt auch für das vorliegende Buch. Seine Leistung besteht darin, die zum großen Teil bekannten Muster in einer Systematik und Interaktion zu sehen, die es in dieser Form noch nicht gab. Eine Systematik, die sich von der Koordination des parallelen Systems über die Kommunikation bis hin zur Synchronisation ihrer Komponenten erstreckt, und eine Interaktion, die diese drei Abstraktionsstufen zur Einheit werden lässt. Dieser Titel ist ein Muss für jeden, der umfassendes Verständnis für den Entwurf parallelisierter Software sucht. (mhu)
| Info |
|---|
Jorge Luis Ortega-Arjona: Patterns for Parallel Software Design John Wiley & Sons 2010 440 Seiten; 44 Euro ISBN 978-0-470-69734-4 |





