Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2008  »  01  »  Doppel-Herz  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Unter der Haube

Wie ein Blick in das »omptl«-Verzeichnis verrät, besteht die gesamte Bibliothek aus einer Handvoll Headerdateien. Tatsächlich ist die OMPTL nur ein Wrapper, der sich zwischen Programm und Standardbibliothek setzt. Abbildung 2 verdeutlicht dieses Zusammenhang noch einmal grafisch.


Abbildung 2: Die OMPTL-Bibliothek zur Parallelisierung in C++ ist zwischen Programm und den Standardbibliotheken angesiedelt.

Mit Hilfe der Iteratoren zerhackt die OMPTL den Wertebereich zunächst in mehrere Teilstücke. Für jedes von ihnen ruft sie anschließend die passende Funktion der Standardbibliothek auf, deren Ausführung sie wiederum in eigene OpenMP-Threads kapselt.

Die Funktionen der Standardbibliothek werden somit gar nicht selbst parallelisiert, sondern nur mehrfach für kleinere Datenpakete aufgerufen. Da sowohl die Container als auch die eigentlichen Algorithmen unangetastet bleiben, darf der Programmierer jede beliebige Implementierung der Standardbibliothek verwenden und diese sogar ohne erneute Übersetzung des Programms austauschen.

Laufzeit messen mit OpenMP

Nach dem Einbau von OMPTL-Konstrukten ins eigene Programm möchte jeder Entwickler natürlich gerne wissen, wie viel schneller das nun parallelisierte Programm überhaupt läuft. Dabei hilft ihm die OpenMP-Funktion zur Zeitmessung:

double aktuelle_zeit = omp_get_Uwtime();

Die Funktion liefert den Wert einer ständig im Hintergrund laufenden Stoppuhr. Bevor OMPTL mit den eigentlichen Berechnungen startet, sichert der Programmierer den aktuellen Wert auf die gezeigte Art und Weise. Sobald das Ergebnis vorliegt, ermittelt der folgende Code die verstrichene Zeit in Millisekunden:

std::cout<<"Berechnungsdauer: "<< (1000 * (omp_get_wtime() - aktuelle_zeit)) <<" msn";

Wer die so ermittelten Ausführungszeiten von paralleler und herkömmlicher Variante miteinander vergleicht, dürfte in vielen Fällen von dem Resultat enttäuscht sein, häufig scheint die parallele Ausführung sogar langsamer zu sein.

Sie können diesen Artikel als PDF für 99 Cent kaufen. Klicken Sie dazu einfach auf eine der beiden Bezahloptionen Paypal oder ClickandBuy.


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Reichhaltiges Angebot C++0x, Teil 2: Neues in der Standardbibliothek
Erfrischend neu Der kommende C++-Standard C++0x
Chips frisch Aktuelle und kommende Numbercruncher-CPUs
Freie Fahrt Konzept freier Programme auf dem Prüfstand
Grenzübertritt Solaris-Software nach Linux portieren
Leserbriefe Auf den Punkt gebracht
Whitepaper
Daten Migration - Eine Publikation von Bloor Research

Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.

Download PDF (Registrierung erforderlich)
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele

Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Kommentare (1)
von
Andrew,
06.01.2009 22:30
More about OpenMP
32 OpenMP traps for C++ developers
http://www.viva64.com/art-3-2-1023467288.html