Multicore-Anwendungen

8 Tipps zum Parallelisieren und Debuggen von Multicore-Applikationen

30. August 2010, 12:10 Uhr | Von Edmund Preiss
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Tipps 7 und 8

Tipp 7: Schalte die Nebenläufigkeit (Concurrency) ab, um Dein Programm seriell zu testen.

passend zum Thema

Visual Studio
Bild 1. Menüauswahl für das Serialisieren von parallelem Programmcode innerhalb von Visual Studio (für die Versionen 2005, 2008 und 2010).
© Intel

Bisher hatte der OpenMP-Ansatz eine relativ einfache Möglichkeit, das parallele Programm zu Testzwecken kurzzeitig zu serialisieren (also auf einen Thread limitiert) und damit nicht-deterministische Fehlerquellen auszuschließen. Lediglich die seriellen Bugs werden bearbeitet. Erst wenn diese seriellen Bugs beseitigt sind, wendet man sich den parallelen Bugs zu und schaltet den seriellen Modus wieder ab.

Für das Serialisieren im OpenMPUmfeld wird eine Umgebungsvariable durch die Anweisung #define NUM_THREADS 1 auf den Integerwert „1“ gesetzt. Mit einer zweiten Anweisung omp_set_num_threads (NUM_THREADS) lässt sich die Umgebungsvariable im Programmablauf aufrufen und nutzen. Der Nachteil dieser Lösung ist, dass man jedes Mal neu compilieren muss.

Die Intel Parallel Debugger Extensions, die Bestandteil der Tool-Komponente Parallel Composer sind, gehen einen Schritt weiter und vermeiden diesen Nachteil. Sie bieten an, OpenMP-Programmteile seriell ablaufen zu lassen, indem die Anweisung „Serialize Parallel Regions“ (siehe Bild 1) eingefügt wird. Ein zweiter Modus erlaubt der Parallel Debugger Extension sogar ein schrittweises, deterministisches Abarbeiten von Open- MP-Code.

Gezielte serielle Ausführung eines Programmteils
Bild 2. Gezielte serielle Ausführung eines Programmteils innerhalb einer parallelen Region. So lassen sich zunächst – wie bei seriellen Programmen – die logischen Fehler finden.
© Intel

Das Verhalten des zu analysierenden Programmbereichs ist in Bild 2 zusammengefasst. Die Vorteile des temporären Abschaltens des nichtdeterministischen Verhaltens von Threads sind evident. Der Entwickler kann sich nun auf den Test logischer Fehler – wie bei seriellen Programmen üblich – konzentrieren und muss nicht zwei verschiedene Fehlerursachen (serielle und parallele, also logische und nicht-deterministische) gleichzeitig testen.

Tipp 8: Benutze die neuesten „State of the Art“-Software-Werkzeuge

Beim parallelen Programmieren benötigt man Tools, die einem helfen, parallele Applikationen zu debuggen und zu verbessern. Die herkömmlichen, verfügbaren seriellen Tools sind ineffektiv, um diese Aufgabe zu erfüllen. Die neuesten, ein paralleles Debuggen erlaubenden Tools, wie die Intel Parallel Suite, helfen vor allem bei zwei Herausforderungen des Parallelisierens: Skalierbarkeit und Korrektheit der parallelen Programme – letzteres ist gleichbedeutend mit dem Auffinden nicht-deterministischer Fehler.

Verschiedene Tool-Komponenten sind notwendig, um die verschiedenen Phasen des Designs zu unterstützen:

  • Design – Intel Parallel Advisor Lite: Werkzeug zum Auffinden der Bereiche (Hotspots), die am besten für Parallelisierung geeignet sind.
  • Compilieren und Debuggen – Der Compiler generiert Code auf einer abstrakten Ebene. Der Debugger prüft auf Korrektheit. Beide Tool-Komponenten sind Bestandteil des Intel Parallel Composer.
  • Verifikation – Intel Parallel Inspector: eine Werkzeugkomponente, die nicht-deterministische Fehler (Data Races, Dead Locks) und Memory Leaks aufspürt.
  • Leistung verbessern – Intel Parallel Amplifier: intuitiver Leistungs- und Tuning-Analysator, um parallelen Verwaltungsaufwand zu detektieren.

Da der Trend mit Multicore- und Manycore-Prozessoren zu noch mehr Kernen geht, werden die Programmierer, die die oben genannten Schritte schnell verinnerlichen, ausprobieren und umsetzen, in Zukunft bei ihrer Arbeit davon profitieren. Es gibt keinen Grund, damit zu warten, sich diese kritischen Fähigkeiten anzueignen. Ein erster Schritt wäre, Intel Parallel Studio zu evaluieren. Man findet eine Evaluierungversion (Vollversion mit begrenzter Laufzeit) unter www.intel.com/go/parallel.

Außerdem werden neueste Tools auch neuere Konzepte der Parallelisierung offerien. Intel plant z.B., noch 2010 mit CT ein neues Werkzeug bzw. API-Konzept für Daten-Parallelismus anbieten, was die Parallelisierung von Applikationen beschleunigt und Data Races vermeidet.


  1. 8 Tipps zum Parallelisieren und Debuggen von Multicore-Applikationen
  2. Tipps 3 bis 6
  3. Tipps 7 und 8
  4. Literatur und Autor

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu INTEL GmbH

Weitere Artikel zu Entwicklungswerkzeuge