Early-Bird-Rabatt für die C++ Advanced Developer Conference
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…
Python angepasst für Multicore-Systeme & Windows Azure testweise einsetzen
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.
Ein Compiler für (fast) alles: Intel Composer XE 2011
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.
Mit Intel Adivsor schrittweise parallel programmieren
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…
Parallelprogrammieren lernen mit Schach
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.
Aus seriell mach parallel: Intel Parallel Advisor Lite
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:
- Leistungsengpässe (Hotspots) identifizieren
- Annotationen in den seriellen Quellcode einfügen (eine Art von C-/C++-Makros)
- die annotierten Quellcodes verifizieren
- parallele Datenzugriffe untersuchen
- Datenkonflikte auflösen, die unter Schritt 4 aufgespürt wurden
- 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?
GDC09: Wie Programmierer von Dualen Zahlen profitieren
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!
