Fünf Multicore-Programmierregeln auf einen Blick

veröffentlicht von Michael Hülskötter am 28. November 2008

Oft hört man die Frage, was beim parallelen Programmieren alles zu beachten sei. Deshalb folgen an dieser Stelle die fünf wichtigsten Multicore-Regeln für angehende Parallel-Entwickler:

Multicore-Regel Nummer 1: Denke parallel! Am allerbesten ist ein paralleles Konzept von Anfang an. Dies vermeidet ein nachträgliches Implementieren parallelen Quellcodes, wie das beispielsweise mit den Intel Threading Building Blocks möglich ist. Optimalerweise legen Sie sich eine Strategie zurecht, wie Sie Schritt für Schritt zu einer multicore-optimierten Anwendung kommen.

Multicore-Regel Nummer 2: Entwickle task-orientiert! Parallel programmierter Code skaliert am besten, wenn er nicht für eine bestimmte Zahl an Prozessoren programmiert wurde, sondern sich an der bestmöglichen Zahl an parallel ausführbaren Aufgaben orientiert. Denken Sie daher nicht in Threads, dass erledigen Tools wie die Intel TBB für Sie. Deren Scheduler verteilt die auszuführenden Aufgaben auf die vorhandenen Prozessorkerne. Und je mehr davon zur Verfügung stehen, desto paralleler läuft die Anwendung.

Multicore-Regel Nummer 3: Auf die Tools kommt es an! Parallele Threads auf Basis von POSIX oder Windows-APIs programmieren zu wollen, ist ein hartes Brot, denn Sie müssen sich selbst um die Parallelisierung des Quellcodes kümmern. Viel einfacher ist es, mit den richtigen Tools der Anwendung paralleles Leben einzuhauchen.

Sie entwickeln bevorzugt mathematisch-orientierte Software? Dann werfen Sie mal einen Blick auf die Intel Math Kernel Library. Sie programmieren MPEG-Encoder? Fein, dann kommen am ehesten die Integrated Performance Primitives in Frage, die mithilfe der vorhandenen Funktionen das Parallelisieren von Multimediaanwendungen erleichtern. Und die Intel TBB habe ich ja bereits erwähnt, die dank ihrer eingebauten Multithread-Funktionen vor allem Schleifenkonstrukte mit wenigen Programmzeilen parallelisieren.

Multicore-Regel Nummer 4: Multithread-Code muss sequenziell laufen! Das klingt zunächst einmal kontraproduktiv, stellt sich aber gerade beim Debuggen als großer Vorteil heraus, da die Fehlersuche im sequenziellen Quellcode wesentlich einfacher ist. Stellen Sie also sicher, dass Ihre Anwendung auf einem Thread fehlerfrei läuft. Wenn Sie dann beim Umstellen auf zwei, vier oder mehr Threads Fehler feststellen (zum Beispiel mithilfe des Thread Checkers), können Sie sich ziemlich sicher sein, dass im Parallel-Code etwas nicht stimmt. Übrigens: Ein vollständig parallelisiertes Programm ist keine gute Idee!

Multicore-Regel Nummer 5: Denke an die Speicherverwaltung! Die Zuweisung von benötigtem Speicher ist vor allem bei parallel ausführbaren Programmen eine echte Herausforderung, da je nach Anzahl der verfügbaren Prozessoren und der damit maximalen Anzahl von Threads der richtigen Speicherverwaltung zur Laufzeit eine enorm wichtige Bedeutung zukommt. Daher sollten Sie beim Entwickeln von Multithread-Code unbedingt auf einen skalierenden Memory Allocator setzen, der den notwendigen Speicher automatisch verwaltet. Die Intel TBB setzen solch einen dynamischen Speicherzuweiser ein …

Keine ähnlichen Artikel.


Share/Bookmark
Kategorien : Multicore Tags : , ,

Kommentare

Keine Kommentare vorhanden.


Beitrag kommentieren.

Sie müssen angemeldet sein um diesen Beitrag zu kommentieren. [Login | Registrieren]

(erforderlich)

(erforderlich)