Aus seriell mach parallel: Intel Parallel Advisor Lite

veröffentlicht von Michael Hülskötter am 19. März 2010 (0) Kommentare

Kollege Preiss von Intel hat mal wieder fleißig geschrieben, und rausgekommen ist ein gedruckter Beitrag in der Elektronik Industrie, den es aber natürlich auch als PDF zum kostenlosen Download gibt. Thema des Artikels: Intel Parallel Advisor Lite, ein ziemlich mächtiges Tool zum Konvertieren von seriellem in parallelen Code. Der Advisor Lite ist übrigens Teil der Intel-Suite Parallel Studio, ein Plug-In für Visual Studio 2005 und 2008.

In dem ausführlichen Beitrag wird gezeigt, wie das Intel-Tool dabei helfen kann, serielle Codeabschnitte zu parallelisieren. Ach ja: Das betrifft ausschließlich C++-Programmierer. Toll an Advisor Lite ist sein schrittweises Herantasten an den möglichen Multithread-Code: Anstatt alles auf einmal umzustellen, erlaubt das Tool ein sukzessives Optimieren des seriellen Quellcodes. Hierzu setzt es vorhandene Debugger-Tools ein, mit denen der parallelisierte Quellcode sofort getestet und mögliche Fehler identifiziert und eliminiert werden können. Dazu zählen unter anderem Data-Sharing-Probleme, die sich beim Synchronisieren von Threads ergeben können.

Interessant an Edmunds Artikel ist übrigens die Vorgehensweise des Advisor Lite:

  1. Leistungsengpässe (Hotspots) identifizieren
  2. Annotationen in den seriellen Quellcode einfügen (eine Art von C-/C++-Makros)
  3. die  annotierten Quellcodes verifizieren
  4. parallele Datenzugriffe untersuchen
  5. Datenkonflikte auflösen, die unter Schritt 4 aufgespürt wurden
  6. Quellcodeänderungen testen

Ach ja: Wer noch nicht wissen sollte, was Annotationen sind: Sogar hierzu hält Edmund die passenden Antworten parat. Also alles in allem eine wirklich gelungene Abhandlung in Sachen Parallel Advisor Lite. Und, worauf wartet ihr noch?

Kategorien : Multicore Tags : , ,

GDC09: Wie Programmierer von Dualen Zahlen profitieren

veröffentlicht von Michael Hülskötter am 19. August 2009 (0) Kommentare

Vor einer Woche hatte ich angekündigt, dass wir uns die Session “Dual Numbers: Simple Math, Easy C++ Coding and Lots of Tricks” ansehen werden. Und genau das haben wir heute getan. Nur so viel: Tough stuff!

Damit wir hier nix Falsches erzählen, konnten wir Gino van den Bergen zu einem Interview überreden, damit er uns etwas über Duale Zahlen erzählt: Worum es in seinem Vortrag ging, warum Spieleentwickler auf Duale Zahlen setzen sollten und was das Ganze mit Larrabee zu tun hat.

Nur soviel: Es geht um “Clean Code”, um die Vereinfachung der Differentialrechnung, und andere schöne Dinge, mit denen vor allem Spieleprogrammierer zu tun haben.

Und jetzt: Film ab!

Kategorien : Multicore, Visual Computing Tags : , , , , ,

GDC09: So funktioniert Intel Parallel Studio

veröffentlicht von Michael Hülskötter am 18. August 2009 (0) Kommentare

Am zweiten Tag der Game Developers Conference 2009 in Köln bot sich die Gelegenheit, Parallel Studio aus nächster Nähe zu betrachten. Edmund Preiss nahm sich nämlich die Zeit und weihte uns in die Geheimnisse der Entwickler-Suite ein. Ok, über Parallel Studio habe ich eigentlich schon alles gesagt und geschrieben, aber in gut vier Minuten bekommt ihr per Video sämtliche Infos auf einen Blick. Daher: Film ab!

Kategorien : Multicore, Visual Computing Tags : , , , ,

Von Intel TBB 2.1 auf Version 2.2 unfallfrei umsteigen

veröffentlicht von Michael Hülskötter am 7. August 2009 (0) Kommentare

Erst am Dienstag hat Intel seine neueste Version der Threading Building Blocks vorgestellt. Und gerade mal einen Tag später hat Terry Wilmarth von Intel ein Rezept online gestellt, mit dessen Hilfe der Umstieg von 2.1 auf 2.2 halbwegs unfallfrei gelingen sollte. Zu den wichtigsten Empfehlungen zählen:

  • Da die parallel arbeitenden Warteschlangen mit der Version 2.2 sowohl begrenzt (bounded) als auch unbegrenzt (unbounded) arbeiten, sollten Programmierer möglichst die begrenzten Warteschlangen benutzen.
  • Da sich die Rückgabewerte der Vektor-Funktionen grow_by, grow_to_at_least und push_back geändert haben, ist der Funktionsaufruf ein wenig einfacher geworden. So wird aus std::copy(begin, end, x.begin()+x.grow_by(end-begin)); jetzt std::copy(begin, end, x.grow_by(end-begin));
  • In Intel TBB 2.2 ist auto_partitioner() als Standard gesetzt und löst damit simple_partitioner() ab.
  • Der Begriff der Task-Tiefe spielt in TBB 2.2 keine Rolle mehr. Daher sind depth_type und die Methoden depth(), set_depth() und add_to_depth().

Mehr Infos und weitere Codebeispiele sind im angegebenen Blogbeitrag erhältlich.

Kategorien : Multicore Tags : , ,

Neue Version der Intel Threading Building Blocks

veröffentlicht von Michael Hülskötter am 4. August 2009 (0) Kommentare

Intel hat heute anlässlich der Siggraph 2009 die neueste Version 2.2 seiner C++-Bibliothek Threading Building Blocks vorgestellt. Die wesentlichen Verbesserungen im Vergleich zur Vorgängerversion 2.1 sind zwei Dinge: Lambda-Funktionen gemäß des künftigen C++0x-Standards werden jetzt vollständig unterstützt, und das Lizenzmodell wurde erheblich vereinfacht.

Das soll vor allem Software-Entwicklern die Möglichkeit geben, Intel TBB bei der Programmierung und Optimierung von Multithread-Sourcecode von Anfang an einsetzen zu können. So umfasst beispielsweise die Unreal Engine von Epic Games ab sofort eine kommerzielle Lizenz der Intel TBB, Autodesk stellt in Maya Intel TBB standardmäßig zur Verfügung.

Neben diesen Neuerungen gibt es weitere Dinge, die hinsichtlich mehr Leistung optimiert wurden:

  • Der Taks-Scheduler wurde erheblich überarbeitet, sodass optimierte Anwendungen auf Multicore-Plattformen besser skalieren. Dazu gehören eine automatische Initialisierung bei paralleler Ausführung bestimmter Codeabschnitte und das Zusammenfassen mehrerer Tasks zu einer Gruppe.
  • Der Memory Allocator wurde ebenfalls verbessert, was den standardmäßigen Allocator des Betriebssystems ersetzen kann. Folge: bessere Skalierbarkeit der vorhandenen Speicherressourcen und weniger Datenkollisionen.
  • Darüber hinaus gibt es neue und verbesserte Konstrukte. Neu sind parallel_invoke and parallel_for_each, mit deren Hilfe sich parallele Konstrukte noch einfacher erstellen lassen. Zudem wurde das Erstellen der häufig benutzten parallel_for-Konstrukts vereinfacht.

Ach ja: Für ein besseres Verständnis, was es mit den optimierten Lambda-Funktionen auf sich hat, empfehle ich zwei Blogposts (Nummer 1 und Nummer 2) des Kollegen Reinders, in denen er sehr anschaulich erklärt, was es bringt und was sich dadurch ändert.

Kategorien : Multicore Tags : , ,

Cilk: parallele Programmierung mit intelligenten Ansätzen

veröffentlicht von Michael Hülskötter am 3. August 2009 (0) Kommentare

Ein Besuch der Intel-Software-Blogs brachte mich auf einen Beitrag, den Parallel-Guru James Reinders unter der Überschrift “Cilk + Intel” vor kurzem veröffentlicht hat. Cilk? Noch nie gehört. Na, dann mal flugs in Wikipedia eingetippt. Dabei kam folgender Einstiegssatz zum Vorschein:

Cilk is a general-purpose programming language designed for multithreaded parallel computing.

Hey, dachte ich, das ist doch ein prima Thema für mein Blog. Also, dann schnell mal geguckt, was Cilk und Intel gemein haben (neben der Absicht, die parallele Programmierung unter C/C++ zu vereinfachen:

If you’ve visited cilk.com today, you see that the Cilk engineering team has joined Intel.

Das heißt also, Intel und Cilk machen jetzt gemeinsame Sache?! Sieht ganz danach aus. Denn wie sagt James zusammenfassend:

Cilk technology will complement other methods we have had great success with – including OpenMP and Intel Threading Building Blocks.

Aha, das bedeutet, dass Cilk++ eine prima Ergänzung zu den Intel-Tools wie Parallel Studio oder Intel TBB bedeutet? Soll wohl so sein. Doch was steckt hinter Cilk++ und was sind die Merkmale dieser Programmiersprache?

weiterlesen…

Kategorien : Multicore Tags : , ,

Maxon-Multithreading: Darum ist Cinema 4D so performant

veröffentlicht von Michael Hülskötter am 17. Juni 2009 (0) Kommentare

Maxon ist vor allem bei 3D-Designern ziemlich bekannt, denn mit Cinema 4D steht dieser Anwenderschar seit mehr als 15 20 Jahren ein Modeling- und Renderingtool zur Verfügung, mit dem sich hoch komplexe 3D-Gebilde erschaffen lassen. Aber auch Hardware-Redaktionen können mit dem Namen Maxon etwas anfangen: So kann man mit dem kostenlosen Benchmark-Tool CineBench die Rechen- und Grafikleistung eines PCs oder Notebooks testen. Dabei ermittelt CineBench auch die Multicore-Fähigkeiten von Rechnern, indem automatisch alle verfügbaren Prozessorkerne ausgelastet werden. Ein prima Multithreading-Testtool also.

Um Cinema 4D multicore-tauglich zu machen, unternimmt Maxon schon seit vielen Jahren größte Anstrengungen. Das geschieht bereits seit Mitte der 90er Jahre, lange bevor die die ersten Prozessoren mit Hyperthreading auf den Markt kamen. Schon damals galt die Parallelprogrammierung als eine nicht ganz triviale Disziplin, da man vor allem die gemeinsamen Speicherzugriffe und die daraus resultierenden Probleme wie Dead Locks und Data Races in den Griff bekommen musste. Mit Erfolg, wie man an Cinema 4D gut sehen kann.

Doch was hat Maxon alles im Laufe der Jahre getan, damit die Anwendungen auf einem Multicore-System optimal skalieren? Dazu hat Tilo Kühn, Senior Software Developer bei Maxon, eine recht einfache Erklärung parat: Man muss als Entwickler vor allem dafür sorgen, dass die Datenstrukturen von Anfang an so angelegt werden, dass beim parallelen Ausführen der Anwendung die Anzahl der Synchronisation so gering wie möglich ausfällt und es nicht zu Data Races oder ähnlichen Verklemmungen kommen kann. Denn jede Datensynchronisation bedeutet einen Mehraufwand, der den Programmablauf unnötig stört und behindert.

weiterlesen…

Kategorien : Multicore Tags : , ,

Surf-Tipp: Parallel-Studio-Artikel kostenlos downloaden

veröffentlicht von Michael Hülskötter am 16. Juni 2009 (0) Kommentare

Der werte Kollege Preiss von Intel war mal wieder fleißig und hat zur Parallelisierungssuite Parallel Studio einen kleinen, aber feinen Artikel erstellt. Und zwar für das Fachmagazin Elektronik Industrie, das den Beitrag kostenlos zum Download anbietet.

Für aufmerksame Leser des Software Dev Blogs werden sich nicht sonderlich viele Neuigkeiten aus dem Beitrag ableiten lassen, aber in seiner Abgeschlossenheit trägt der Artikel doch sehr zum Verständnis von Parallel Studio bei. Zudem handelt es sich um ein PDF-Dokument, das sich sogar ausdrucken lässt. Für die analogen Zeitgenossen unter uns.

Der Artikel umfasst drei Seiten und geht recht detailliert auf die einzelnen Komponenten ein, also Parallel Composer, Parallel Inspector und Parallel Amplifier. Lustigerweise beginnt der Beitrag mit dem Parallel Advisor. Dieses Tool wird erst in der nächsten Version zum Parallel Studio gehören, kann allerdings heute schon als eine Art Techdemo kostenlos ausprobiert werden.

Schön an dem Parallel-Studio-Beitrag sind die praxisorientierten Einblicke, die man anhand der eingefügten Bilder gewinnen kann. Schade ist allerdings, dass diese teilweise recht klein geraten sind. Und ein, zwei Codebeispiele hätten dem Artikel zu ein wenig mehr Pfiff verholfen. Na ja, beim nächsten Mal dann, ok?!

Kategorien : Multicore Tags : , ,

Event-Preview: Parallel Tech Talk und GameCamp in München

veröffentlicht von Michael Hülskötter am 9. Juni 2009 (0) Kommentare

Der Monat Mai war in Sachen Veranstaltung aus Sicht dieses Blogs äußerst ruhig (mal vom offiziellen Verkaufsstart der Toolsuite Parallel Studio abgesehen). Dafür rührt sich im Juni wieder so einiges, und zwar in doppelter Hinsicht. Den Anfang macht der heutige Abend mit einem TechTalk im Tryp Hotel zu München. Dort werden Darius Parys von Microsoft und Mario Deilmann von Intel eine Menge zum Thema parallele Programmierung zu erzählen haben.

Klar, dass es dabei vor allem um Visual Studio 2010 samt .NET 4 gehen wird, aber natürlich auch um Parallel Studio mit Parallel Composer, Parallel Inspector und Parallel Amplifier. Ich bin schon sehr gespannt, wer alles dort zugegen sein wird, um sich höchstpersönlich die Infos aus erster Hand zu holen.

Am übernächsten Wochenende folgt dann das GameCamp Munich 2009, auf dem ich ebenfalls anwesend sein werde, um vor Ort zu bloggen, zu netzwerken und das ein oder andere Video zu drehen. Doch ich werde nicht allein sein: Intel wird sich als Sponsor betätigen und wohl am Sonntag eine eigene Session zum Thema Visual Computing und Multicore abhalten. Das wird bestimmt sehr spannend. Außerdem wird der Kollege hoffentlich einen Demo-PC dabei haben, mit dessen Hilfe er das Thema Multicore-Programmierung für 3D-Spiele anschaulich vorführen kann.

Ach ja: Das GameCamp Munich 2009 findet in Unterschleißheim bei Microsoft statt, die ihre Räumlichkeiten für die Konferenz zur Verfügung stellen. Und was ich so gehört habe, sind noch Plätze frei. Also, worauf wartet ihr noch mit der Anmeldung?!

Kategorien : Multicore, Visual Computing Tags : , , , ,

Parallel Studio: Das sagen die Betatester

veröffentlicht von Michael Hülskötter am 4. Juni 2009 (0) Kommentare

Parallel Studio ist jetzt etwas mehr als eine Woche alt. Das schreit förmlich nach ein paar interessanten Infos rund um die Entwicklersuite. So zeigt beispielsweise ein interne Umfrage unter Betatestern:

  • 75 Prozent aller teilnehmenden Entwickler konnten bereits nach 15 Minuten sinnvolle und nachvollziehbare Ergebnisse produzieren.
  • Ebenfalls 75 Prozent haben Parallel Studio als “empfehlenswert” eingestuft (8 von 10 Sternen im Mittel).
  • 86 Prozent der teilnehmenden Betatester glauben, dass die Threading-Methoden von Parallel Studio (OpenMP, Intel TBB, etc.) für ihre Zwecke völlig ausreichend sind.
  • 71 Prozent der Betatest-Entwickler konnten einen Geschwindigkeitszuwachs bei ihren Anwendungen messen, und das nur wegen des Umstiegs auf den integrierten Intel-C++-Compiler, der natürlich äußerst multithreading-tauglich ist.

Und es gibt sogar schon erste Referenzgeschichten, die den Einsatz von Parallel Studio in ein bestehendes Projekt verdeutlichen sollen. Dazu gehört beispielsweise die in Paris ansässige Firma Open Cascade, die die gleichnamige Opensource-Software entwickelt hat und für Kunden in deren Anwendungen integriert. Mit Open Cascade lassen sich komplexe und sehr aufwendige 3D-Modelle erstellen, wie sie beim Produktdesign, in der Simulationstechnik und in anderen Bereichen verwendet werden.

Da die Berechnung und grafische Umsetzung solcher 3D-Modelle sehr rechenintensiv und Open Cascade zudem C++-basiert ist, kam für mehr Leistung und schnellere Berechnungen Parallel Studio zum Einsatz. Schnell zeigte sich, dass der Parallel Amplifier typische Hotspots mit wenig Aufwand entdecken konnte. So ließ sich beispielsweise die Berechnung von geometrischen Flächen drastisch beschleunigen, indem dem betreffenden Algorithmus ein eigener Thread zugewiesen werden konnte, der bei Bedarf immer wieder parallel ausgeführt werden kann.

Aber auch der Parallel Inspector half dabei, Open Cascade zu verbessern und schneller zu machen. Das führte insgesamt zu einer doppelt so schnellen Rechengeschwindigkeit und einer Reduzierung von Speicherproblemen (Meomory Leaks).

Kategorien : Multicore Tags : , ,