Open Source im professionellen Einsatz
Linux-Magazin 07/2010

Patterns für die Parallelprogrammierung

Tux liest

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.

638

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

Dieses Buch bei Amazon.de kaufen

 

Dieses Buch bei Lehmanns Online Bookshop kaufen

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • In eigener Sache: Mehr rausholen mit dem Schwerpunkt-Bundle "HPC für alle"

    In Multicore-CPUs und -GPUs moderner Workstations und Server schlummern gewaltige Rechenkräfte. Den Magazin-Schwerpunkt "Mehr rausholen" gibt es jetzt als PDF-Bundle.

  • Nützliche Muster

    Egal ob MySQL, PostgreSQL oder Oracle: Die gezielte Anwendung von Design Patterns vereinheitlicht die Datenbankprogrammierung. Das Beispielprojekt implementiert das Facade-Pattern in C# und Mono.

  • Tux liest

    Das Linux-Magazin stellt zwei englischsprachige Bücher über unterschiedliche Aspekte der Software-Entwicklung vor: "Perl Hacks" erforscht obskure Winkel der vielseitigen Skriptsprache, "Designing Interfaces" widmet sich ganz der Gestaltung von Benutzeroberflächen.

  • Bücher

    Das eine Buch trägt bewährte Lösungen für das Framework Map-Reduce zusammen, das zweite versammelt Wissenswertes über Erlang. Für beide Werke muss der Leser der englischen Sprache mächtig sein.

  • Shell scripting with type-safety using Haskell

    Why is scripting usually done in dynamically typed languages? This article applies strong typing in Haskell to shell programs. The end result can still be light-weight but also save time by reducing runtime errors.

comments powered by Disqus

Ausgabe 10/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.