Android NDK öffnet zwei Türchen für C++

veröffentlicht von am 14. November 2011 (0) Kommentare

AndroidSchau an, Google adressiert nun verstärkt auch C++/C-Entwickler für Android-Apps. Der Internetriese hat heute sein neues Android Native Development Kit (NDK) für Android 4.0 veröffentlicht. Die nunmehr siebte Version des so genannten NDKr7 bietet zwei neue APIs, die sich nativ ansprechen lassen. Dabei handelt es sich zum einen um eine auf Khronos OpenMAX AL 1.0.1 basierende Low-level Streaming Multimedia-Schnittstelle, die eine bessere Kontrolle der Multimedia-Funktionen beziehungsweise Inhalte ermöglichen soll. Die Google-Ankündigung dazu liest sich verheißungsvoll, ist aber leider nicht sehr konkret: „For example, media applications can now retrieve data from any source, apply proprietary encryption/decryption, and then send the data to the platform for display.“

Darüber hinaus ist jetzt eine Audio-Schnittstelle an Bord, die über native Apps komprimierte Audio-Elemente in das PCM-Format umwandeln kann.
Die weiterführenden Erklärungen dazu können Sie hier nachschlagen.
Das neue NDK ist für alle Programmierer interessant, die sich nicht mit den Beschränkungen von Googles Java Virtual Machine abfinden möchten und in Verbindung mit dem Android SDK leistungsfähigere Apps schreiben möchten.

Hier gibt’s den Download des neuen NDK, und das SDK finden Sie auf dieser Seite.

Kategorien : Allgemein Tags : , , ,

Kostenloser Microsoft C++ Tag: Experten von Microsoft und Intel berichten über News & Trends

veröffentlicht von am 27. September 2011 (0) Kommentare

Am 19. Oktober 2011 (13:00 bis 18:00 Uhr) findet der  C++ Tag im schicken MACE Restaurant in Unterföhring bei München statt. Hier erfahren 50 C++-Developer exklusiv alles zu den Angeboten und Neuerungen von Microsoft und Intel im Bereich C++.

Die Teilnahme ist kostenlos aber es sind nur 50 Plätze verfügbar!

Unter anderem erwarten Sie die folgenden Sessions:

Keynote: Visual Studio 11 and Windows – Powering the Next Wave of Innovation
Visual Studio C++ Program-Manager Boris Jabes und Visual Studio Architect Jean-Pierre Duplessis stellen die neuesten Entwicklungen und Ausblicke für C++ in Visual Studio und auf der Microsoft-Plattform vor.

Effective C++ Programming with Visual Studio 11 Ultimate
Programmer productivity in the era of agile development is no longer something we can count with lines of code. Visual Studio brings together a slew of lifecycle management tools—from architecture analysis to unit testing—that dramatically improve the productivity of C++ developers everywhere. Come learn how the next version Visual Studio will help you embrace agile methodologies like never before!

Unleash Parallel Performance with C++ in Visual Studio 11
Parallelism is everywhere. The upcoming version of Visual C++ enables native developers to remain the kings of performance across all form-factors. With new compiler technology, we will show how every developer can take advantage of multi-core CPUs. With C++ AMP, we bring the cheap & awesome power of GPUs to every C++ programmer. Finally, we bring it all together with enhancements to the debugging and profiling experiences across VS.

Graphics & Game development tools in Visual Studio 11
Visual Studio 11 brings the most significant set of improvements for developing graphics-intensive apps in over a decade. Whether you are just getting started with 2D/3D games or a self-proclaimed “Guru”, there’s something for you in this talk. We will walkthrough a slew of new tools integrated into Visual Studio that will make your life better.

Für Intel ist Bev Bachmayer am Start, Senior Software Engineer der Software and Solutions Gruppe. Nutzen Sie die Gelegenheit, mit einer erfahrenen Entwicklerin über aktuelle Trends und Herausfoderungen der C++-Programmierung zu diskutieren.

Melden Sie sich umgehend an, um das Event nicht zu versäumen.

Kategorien : Multicore,Visual Computing Tags : , , ,

Microsoft kündigt neue C++-Bibliothek für Parallel Computing an

veröffentlicht von am 20. Juni 2011 (0) Kommentare

Überraschende Kunde aus Redmond: Microsoft bietet Parallel-Programmieren künftig mehr Unterstützung. Einer der verantwortlichen Softwarearchitekten, Herb Sutter, hat unlängst die neue C++-Bibliothek C++ AMP (Accelerated Massive Parallelism) vorgestellt, die speziell auf parallele Prozesse ausgerichtet ist. Entwickler können damit besser auf CPU und vor allem die GPU zugreifen und die Ressourcen optimal auf die Recheneinheiten verteilen.

In einer Demonstration zeigte Sutter, dass vor allem grafisch anspruchsvolle Anwendungen wie Simulationen oder Spiele mit Hilfe des neuen Befehlssatzes besser auf die Leistungsressourcen der Hardware ausgerichtet werden können.



Das Video zur Keynote von Sutter können Sie auf dieser Seite abrufen. Zudem empfehlen wir Ihnen das Video von Daniel Moth.

AMP soll ab der nächsten Version Bestandteil von Visual C++ werden. Auch für C# und .NET sind AMP-Extensions angedacht. Das ist aber nur der erste Schritt: AMP will sich künftig auch auf virtuellen Maschinen und Cloud-Anwendungen als nützlich erweisen. Microsoft wird zudem die Spezifikationen offenlegen, so dass AMP auch in andere Compiler integriert werden kann.

Weitere Informationen lesen Sie im The Moth-Blog.

Kategorien : Multicore Tags : , , , ,

Intel TBB parallel_for mithilfe von C++0x-Lambda-Ausdrücken implementieren

veröffentlicht von am 31. Mai 2011 (0) Kommentare

Ende März hatte ich darüber berichtet, dass noch in diesem Jahr der nächste C++-Standard verabschiedet werden soll. Und gerade finde ich einen dazu passenden Artikel auf dem Intel Software Network, der großen Community-Plattform des Chipherstellers. In diesem Blogbeitrag geht es um die effiziente Einbindung des Intel TBB-Konstrukts parallel_for mithilfe von Lambda-Ausdrücken, die Teil des künftigen Standards C++ 2011 sein werden.

Kleiner Exkurs: Lambda-Ausdrücke kommen bisher nur in funktionalen Programmiersprachen vor, also in Haskell oder Scala. Da aber solch eine “anonyme Funktion” viele Vorteile mit sich bringt (einfacher Aufruf, weniger fehleranfällig wegen falsch eingesetzter Variablen, etc.), werden in C++ 2011 Lambda-Ausdrücke Teil der imperativen Programmiersprache C++ sein. Wer mehr zum Thema Lambda-Ausdrücke erfahren will, sollte sich mit diesem Artikel beschäftigen.

Zurück zum ISN-Beitrag. Dieser zeigt sehr anschaulich anhand eines Code-Beispiels, wie in Zukunft parallel_for-Konstrukte der Intel Threading Building Blocks von den Lambda-Ausdrücken des künftigen C++-Standards profitieren werden. Unterstützt werden dabei die Compiler GNU g++ Version 4.5, Intel C++ Compiler V12 und Microsoft C++ Compiler V16.

Ohne Lambda-Expression und parallel_for sieht ein möglicher Funktionsaufruf wie folgt aus:

class ChangeArray{
...int* array;
public:
...ChangeArray (int* a): array(a) {}
...void operator()( const blocked_range& r ) const{
......for (int i=r.begin(); i!=r.end(); i++ ){
.........foo (array[i]);
......}
...}
};

Derselbe Funktionsaufruf mithilfe von parallel_for und einem Lambda-Ausdruck stellt sich folgendermaßen dar:

void ChangeArrayParallel (int* a, int n )
{
...parallel_for (0, n, 1,
......[=](int i) {
.........Foo (a[i]);
......});

}

Was man anhand dieses sehr kleinen Beispiels gut erkennen kann, sind zweierlei Dinge: das parallel_for-Konstrukt ist zum einen wesentlich kompakter und damit effizienter, und zum anderen kommen ausschließlich lokale Variablen zum Einsatz, was zu thread-sicherem Code führt.

Innerhalb des Blogbeitrags auf ISN ist übrigens ein kurzes Video eingebettet, das die gesamte Geschichte anschaulich zusammenfasst.

Kategorien : Multicore Tags : , ,

Neuer C++-Standard steht kurz vor Verabschiedung

veröffentlicht von am 30. März 2011 (0) Kommentare

Lange hat es gedauert, doch schon sehr bald, also nach fast fünfzehn Jahren, steht für Mitte dieses Jahres wohl endlich die nächste Version von C++ an. Unter der Bezeichnung C++ 2011 (besser bekannt unter dem Codenamen C++0x) wird die ISO/IEC Information Technology Task Force (ITTF) wohl endgültig die nächste Generation der objektorientierten Programmiersprache freigeben.

Natürlich werden die Grundzüge von C++ mit C++ 2011 weitgehend erhalten bleiben, allerdings werden Teile so zusammengefasst sein, dass sich das Ganze als verbesserte Einheit darstellt und sich auf höherer Programmierebene natürlicher und effizienter verhalten wird. Wichtigstes neues Feature für Entwickler ist die nebenläufige Programmierung, mit der sich parallel ablaufende Programmabschnitte effizienter programmieren lassen. So können beispielsweise mit Lambda-Funktionen Variablen von Thread zu Thread übergeben werden, was zu verbesserten Parallelkonstrukten führen wird.

Aber auch die direkte Datenfeld-Initialisierung und eine verbesserte Bibliothek werden Teil des neuen C++-Standards sein. Wir werden uns das Ganze zu gegebener Zeit noch ein wenig genauer ansehen und hier veröffentlichen.

Kategorien : Multicore Tags : ,

Early-Bird-Rabatt für die C++ Advanced Developer Conference

veröffentlicht von am 24. März 2011 (0) Kommentare

Die ppedv AG veranstaltet am 5. und 6. Mai 2011 die  C++ Advanced Developer Conference (ADC). Tagungsort wird das beschauliche Prien am Chiemsee sein.

Für ISVs und Software-Entwickler ist dieser Termin eine gute Gelegenheit, sich vor Ort detailliert über aktuelle Entwickler-Tools zu informieren, in Trainings, Workshops und Schulungen das eigene Wissen zu erweitern und Lösungen für typische Programmierprobleme zu finden. Und da das Ganze in einer der der schönsten Regionen Deutschlands stattfindet, lässt sich der Termin prima mit einem Kurzurlaub in die bayerischen Alpen verbinden.

Die Advanced Developers Conference bietet 20 (zumeist deutsche) Vorträge hochkarätiger C++-Experten von Intel, Microsoft und weiteren Firmen. Das Motto der Veranstaltung lautet “aus der Praxis für die Praxis“ und verknüpft die traditionellen Vorteile von C++ mit den heutigen Anforderungen in Entwicklungsprojekten.

Zu den Topthemen zählen das Erstellen leistungsstarker Software mit nativem C++-Code, Performancesteigerung sowie Möglichkeiten der Fehlersuche und -behebung in C++-Programmen. Weitere Schwerpunkte bilden Design und Einsatz von MFC-Anwendungen und die Frage, wie sich durch die Ausnutzung der seriellen und parallelen Prozessoreigenschaften eine maximale Leistung erzielen lässt. Ein Highlight wird dabei sicherlich die Session “Parallelprogrammierung mit native C++ und OpenMP 3.0” von und mit Bernd Marquardt sein.

Übrigens: Am Vortag der Veranstaltung (4.5.) vermittelt Dr. Michael Klemm von Intel in dem ganztägigen Hands-on-Training  “C/C++ Code-Performanceoptimierung für Intel-Prozessoren“ tiefgreifendes Wissen mit praktischen Beispielen an bereitgestellten PCs mit Multicore-CPUs.

Hier die weiteren Infos zur Veranstaltung:

Sichern Sie sich bis 8. April Ihre Teilnahme und sparen Sie dabei bis zu 250 Euro, indem sie sich den Frühbucherrabatt mit dem Promocode „Cpp-i0411X“ sichern. Bei gleichzeitiger Anmeldung zur Konferenz mit zwei weiteren Kollegen bekommen Sie auch noch einen 10-prozentigen Kollegenrabatt on top!

Und hier geht es zur Anmeldung. Wir sehen uns…

Kategorien : Multicore Tags : , , ,

Python angepasst für Multicore-Systeme & Windows Azure testweise einsetzen

veröffentlicht von am 28. Februar 2011 (0) Kommentare

Python hat die neue Version 3.2 seiner Skriptsprache freigegeben, bei der zwar keine Änderungen an der Sprache, wohl aber an den Datentypen vorgenommen wurden. Ziel war es, die viel kritisierten Probleme mit dem Global Interpreter Lock (GIL) zu beheben. Zum Verständnis:

Pythons GIL war für die Parallelisierung auf Multicore-Systemen zuständig. Das klappte aber nicht zuverlässig. So bemängelten viele Entwickler bei Python-Anwendungen Zugriffsprobleme der Threads bei Nutzung mehrere Kerne und eine Verlangsamung der Prozesse.

Das Problem war seit über einem Jahr ungelöst und hat zu heftiger Kritik an der Sprache CPython geführt. Programmierer behalfen sich damit, statt Threads mehrere, miteinander kommunizierende Prozesse zu verwenden. Das war natürlich nicht im Sinne des Erfinders.

Jython (Java) und IronPython (.NET) sind übrigens nicht betroffen, da dort kein GIL implementiert ist. Das Problem tritt also ausnahmslos bei Programmen im Python C-Code auf.

Gelöst wird der Konflikt nun durch ein neues, so genanntes „concurrent.futures“-Modul, das eine einheitliche Schnittstelle zur Verwaltung paralleler Threads bietet. Details und technische Spezifikationen zu dem PEP 3148 können Sie hier abrufen. Den kostenlosen Download erhalten Sie auf der Python-Seite.

Für C++-Programmierer ist Python vor allem als Skriptsprache interessant. Hierbei spielt die Boost.Python-Bibliothek eine wichtige Rolle. Dahinter verbirgt sich eine kostenlose C++-Bibliothek inklusive zahlreicher Unterbibliotheken. Boost-Bibliotheken werden von boost.org laufend erweitert.

Und noch ein Software-Geschenk an Entwickler:

Windows Azure kostenlos nutzen

Microsoft bietet Entwicklern seine Cloud-Plattform Windows Azure für 750 Stunden zur kostenlosen Nutzung an. Wer es nicht so mit dem Kopfrechnen hat: das entspricht gut 31 Tagen.

Im Zuge des Angebots stehen 500 MByte Online-Speicherplatz und 500 MByte für Datentransfers zur Verfügung sowie die Nutzung einer SQL-Azure-Datenbank mit bis zu 1 GByte (auf 90 Tage begrenzt). Wenn Sie das Testangebot nutzen wollen und sich anmelden, lesen Sie bitte auch das Kleingedruckte: Wer das Angebot über den kostenlosen Testzeitraum hinaus nutzt, muss automatisch für die Nutzung der Vollversion zahlen.

Kategorien : Multicore Tags : , , ,

Ein Compiler für (fast) alles: Intel Composer XE 2011

veröffentlicht von am 15. Februar 2011 (0) Kommentare

Für alle, die auf den dritten Teil meiner Parallel-Studio-XE-Reihe gewartet haben: Heute ist nach Inspector XE 2011 und VTune Amplifier XE 2011 der Intel Composer XE 2011 an der Reihe. Dieses Triumvirat bildet insgesamt die Entwicklersuite Intel Parallel Studio XE 2011 ab.

Mit Intel Composer XE verhält es sich wie mit einem Schweizer Taschenmesser: Man bekommt für jeden Job das richtige Tool an die Hand. Will man beispielsweise C++-Projekte unter Windows oder Linux oder Mac OS X kompilieren, ist die neue Intel-Entwicklersuite das richtige Tool für Sie. Oder sind Sie eher Fortran-Entwickler und sind auf der Suche nach dem passenden Compiler, egal ob für Windows, Linux oder Mac OS X? Dann ist der Composer XE 2011 ebenfalls eine gute Entscheidung.

Doch nicht nur die plattform-übergreifende Kompilierung macht aus dem Intel Composer XE ein mächtiges Tool. Denn neben der Optimierung für AVX- und SIMD-Befehle zeichnet sich das Entwicklerwerkzeug durch weitere Bausteine aus:

  • Intel Parallel Building Blocks (Intel PBB): Eine Toolsammlung, die Intel Threading Building Blocks, Intel Array Building Blocks und Intel Cilk Plus umfasst.
  • hoch-optimierte Software-Bibliotheken: Dies sind Intel Math Kernel Library und Intel Integrated Performance Primitives.
  • High-Performance Parallel Optimizer: Damit lassen sich vor allem verschachtelte Schleifenkonstrukte besser untersuchen.
  • Interprocedural Optimization: hiermit lassen sich vor allem kleinere und mittlere Funktionen parallelisieren, die oft zum Einsatz kommen und in denen Funktionsaufrufe innerhalb von Schleifen vorkommen.
  • Profile-Guided Optimization: verbessert die gesamte Laufzeit-Performance, indem unter anderem der Sourcecode neu arrangiert wird, die Code-Größe reduziert wird und fehlerhafte Sprungvorhersagen entfernt werden.

Weitere Infos zu Intel Composer XE 2011 gibt es entweder als PDF, auf der englischsprachigen Webseite oder in Videoform im Intel Learning Lab.

Kategorien : Multicore Tags : , , ,

Mit Intel Adivsor schrittweise parallel programmieren

veröffentlicht von am 20. September 2010 (0) Kommentare

Zurück von der großen Intel Entwickler-Konferenz – auch IDF (Intel Developer Forum) genannt – gibt’s hier Stück für Stück viele nützliche Infos und News aus der Welt des Parallel & Visual Computing. Soll heißen, dass ihr über all die Dinge etwas erfahrt, die ich mir in San Francisco angehört und angesehen habe. Also dann, viel Spaß damit!

Den Anfang macht ein kleines, unscheinbares Tool, dass sich Intel Parallel Advisor nennt, Teil des Intel Parallel Studio 2011 ist und Software-Entwicklern dabei helfen soll, nativ programmierten Code schneller, effizienter und einfacher zu parallelisieren. Dabei geht der Advisor sehr systematisch vor, um die bestmöglichen Ergebnisse in Sachen parallelisierter Quellcode zu erreichen. Hierzu sind fünf Schritte notwendig:

1. Survey Target: Im ersten Schritt wird der Quellcode auf mögliche Hotspots untersucht und dabei festgestellt, welche Abschnitte innerhalb des Programms besonders für eine Parallelisierung in Frage kommen.

2. Annotate Sources: Anschließend fügt der Advisor in die identifizierten Quellcodestellen sogenannte Annotationen ein, also entsprechende Pseudo-Befehle, die das Parallelisieren ermöglichen sollen. Dieser Abschnitt ist als eine Art Experiment zu sehen, mit dessen Hilfe man die bestmöglichen Ansätze für Parallelcode finden soll.

3. Check Suitability: Nachdem man die Annotationen in den seriellen Quellcode eingefügt hat, macht sich der Parallel Advisor per Mausklick daran, die vorgenommenen Änderungen des Programms auf Machbarkeit hin zu überprüfen. Hierbei wird vor allem festgestellt, was die Veränderungen zur Laufzeit tatsächlich bringen, ob sich ein Parallelisieren an dieser Stelle also überhaupt lohnt.

4. Check Correctness: Der vierte Schritt hat vor allem mit möglichen Speicherproblemen zu tun. Dabei überprüft der Parallel Advisor wiederrum per Mausklick, welche Dead Locks, Data Races und andere möglichen Probleme anhand der vorgenommenen Änderungen des ursprünglich seriellen Quellcodes zu erwarten sind. Dies ist bei der Umstellung von seriell auf parallel ein kritischer Punkt, den man auf keinen Fall unterschätzen darf. Mögliche Speicherfehler lassen sich nämlich mit herkömmlichen Testverfahren oder Debuggern nur ganz schwer oder gar nicht aufspüren.

5. Add Parallel Framework: Sobald der Parallelcode keine Fehler mehr aufweist und sämtliche Speichertests ohne Probleme durchgeführt werden konnten, müssen nur noch sämtliche Annotationen durch entsprechende Konstrukte und Funktionsaufrufe ersetzt werden. Dabei kann man aus einer Reihe von unterstützten Programmiermodellen wie Intel Threading Building Blocks, Intel Cilk Plus und anderen auswählen – je nachdem, welches Modell besser zum ausgewählten Quellecodeabschnitt passt.

Ach ja: Bilder und weitere Erklärungen zum Intel Parallel Advisor bekommt ihr noch diese Woche auf dem Software Dev Blog. So, stay tuned…

Kategorien : Multicore Tags : , ,

Parallelprogrammieren lernen mit Schach

veröffentlicht von am 7. Juli 2010 (0) Kommentare

Der werte Kollege Deilmann von Intel hat mir ein paar Internetlinks zukommen lassen, deren Inhalte sich mit dem Thema Parallelprogrammierung beschäftigen. Ein Beitrag hierzu ist auf den ersten Blick zwar ziemlich oberflächlich, bietet aber auf den zweiten Blick viele nützliche Infos zum Thema Multicore und Multithreading. In Form eines 34-seitigen pdfs wird nämlich das N-Queens-Problem detailliert dargestellt und gezeigt, wie sich dieses per Parallelprogrammierung lösen lässt.

Zur Erinnerung: das sogenannte “Damenproblem” stammt aus der Mathematik und beschäftigt sich mit der Frage, wie viele Damen auf einem Schachbrett so aufgebaut werden können, dass sie sich gemäß der Schachregeln nicht gegenseitig schlagen können. Auf einem 8×8-Schachbrett gibt es übrigens 12 eindeutige Lösungen.

Nur, wie lässt sich das für eine größere Zahl n berechnen, und wie geschieht das auf einem Parallelrechner möglichst schnell? Genau damit beschäftigt sich der pdf-Workshop, der sehr anschaulich und anhand vieler Codebeispiele mögliche Ansätze und Konzepte miteinander vergleicht und natürlich auch verrät, welche Lösung die beste ist, wenn man solche Probleme möglichst elegant und parallel lösen möchte.

Der Download ist kostenlos und jedem Einsteiger in die Parallelprogrammierung sehr zu empfehlen.

Kategorien : Multicore Tags : ,

Aus seriell mach parallel: Intel Parallel Advisor Lite

veröffentlicht von am 19. März 2010 (1) Kommentar

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 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 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 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 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 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 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 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 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 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 : , ,