Sämtliche Beiträge des Monats Juni 2009
Facebook-CTO ist mit aktuellen Prozessoren unzufrieden
Gestern fand im schönen San Francisco die von Gigacom Network organisierte Structure 09 statt, eine Eintageskonferenz, die sich dieses Mal mit dem Thema Cloud Computing beschäftigte.
Zu den Anwesenden und Vortragenden gehörte auch Jonathan Heiliger, seines Zeichens Vice President of Technical Operations der Social-Media-Plattform Facebook. Heiliger diskutierte mit Om Malik, Gründer von Gigacom Network, die Frage, wie viel Infrastruktur solch eine riesige Plattform wie Facebook benötigt und wie sich diese in Sachen Server- und Datenbankzugriffe beherrschen lässt.
In diesem Zusammenhang berichtete Mister Heiliger unter anderem darüber, dass sich Facebook aus Performance- und Skalierungsgründen neue Server mit den aktuellen Prozessoren angeschafft hat, um dem steigenden Ansturm von Facebook-Anwendern besser gerecht zu werden. Jedoch empfindet er die Mehrkosten wohl nicht als gerechtfertigt, da seinen Worten zufolge die Performance durch die neuen Chips zu wenig zugelegt hat. Außerdem merkte er an, dass Facebook die gegenüber der Presse propagierten Leistungsschübe bei der Performance ihrer Applikationen nicht sieht.
So weit, so gut. Dabei beschleicht mich das Gefühl, dass es sich Facebook damit ein wenig zu leicht macht. Denn die aktuellen Prozessoren skalieren nur dann wirklich, wenn die betreffenden Serveranwendungen das Leistungspotenzial der Rechnerfarm auch vernünftig ausnutzen. Ich gehe mal davon aus, dass sich Jonathan Heiliger und seine Mitarbeiter schon mal mit dem Thema HPC-konforme Anwendungen beschäftigt haben. Oder, Jonathan?!
(via computerworld.ch)
Screencasts zur Parallelen Programmierung unter .NET 4
Auf Channel 9 habe ich gerade drei sehr interessante Screencasts entdeckt, die Dariusz Parys dort eingestellt hat. Anhand sehr anschaulicher Beispiele zeigt Dariusz folgende Dinge:
In diesem Screencast geht es vor allem um eine Kernaussage: Vergesst Threads und denkt ab sofort in Tasks, also in einer abstrahierten Form von Threads. Warum das so ist und welche Mechanismen der Threadpool des .NET-4-Frameworks hierfür bereithält, lernt ihr in dem Sechsminüter.
Task Parallel Library: Task Continuations
Dieser Screencast behandelt die Frage, wie sich einzelne Aufgaben (Tasks) mithilfe der Task-Klasse verketten lassen, um weitere Ereignisse möglichst einfach zu parallelisieren. Dies geschieht mithilfe des Aufrufs task.ContinueWith().
Task Parallel Library: Exception Handling
In diesem Screencast geht es um die Fehlerbehandlung innerhalb von Tasks. Hierzu gibt es die Möglichkeit, per AggregateException mögliche Fehler zur Laufzeit abzufangen.
Ihr seht also: drei gute Gründe, euch die Screencasts anzusehen. Viel Spaß dabei!
Rückschau: Das war das GameCamp Munich 2009

Foto: Simon Muhm - www.simon-muhm.de
Es soll ja Leute geben, die mit ihrem Wochenende etwas anzufangen wissen: Entweder gehen sie in die Berge zum Wandern oder besuchen Tante Ilse aufm Land oder machen sonst was. Und was mache ich?
Ich treibe mich lieber an zwei Tagen auf dem GameCamp Munich 2009 herum, das vorigen Samstag und Sonntag bei Microsoft in Unterschleißheim stattgefunden hat.
Jetzt mag sich manch einer fragen: GameCamp, was’n das?! Hierzu habe ich erst kürzlich etwas verfasst, was bei der Beantwortung dieser Frage weiterhelfen könnte. Insgesamt war das GCMUC09 eine gut gelungene Veranstaltung, die gemeinsam von Microsoft und Flobbymedia initiiert und organisiert wurde. Den Machern des Barcamps ging es vor allem darum
die interdisziplinäre Vernetzung der Branche, die Entwicklung neuer Thesen und Ideen sowie die Förderung der Videospielkultur
voranzutreiben. Ob ihnen das gelungen ist, kann ich nicht sagen. Aber am Ende waren wohl alle (sehr) zufrieden. Behandelt wurden unter anderem folgende Themen:
GCMUC09: 3D-Games und Multicore-Programmierung
Um 15 Uhr war Aaron Coday von Intel auf dem GameCamp Munich 2009 mit seiner Techsession “3D-Games und Multicore-Programmierung” dran. Zwar war der Raum nicht ganz voll, dafür war die Diskussion umso lebhafter und brachte den Anwesenden wohl eine ganze Menge an Erkenntnissen:
Aspekt #1: Single-Core-Maschinen werden immer mehr von Multicore-Rechnern abgelöst. Das hat damit zu tun, dass sich der CPU-Takt nicht weiter erhöhen lässt.
Problem #1: 3D-Game-Programmierung ist nicht trivial, weder sequenziell noch parallel. Was schon geschieht ist ein zeitversetztes “Update World” und “Rendering” (z.B. auf der Xbox 360).
Hoffnung #1: Viele Dinge bei der 3D-Programmierung lassen sich parallelisieren, z.B. Rendering, Physics, KI, Particles.
Herausforderung #1: Wie verteile ich das Spiel auf die notwendigen Threads und auf die vorhandenen Ressourcen (= Core)?
Parallele 3D-Programmierung #1: Mach aus einzelnen Tasks – wie KI, Physics, Rendering, Update World – Subtasks!
Herausforderung #2: Definiere Abhängigkeiten der einzelnen Tasks!
Lösung #1: Intel TBB hilft Gaming-Entwicklern dabei, die anfallenden Tasks möglichst gut auf die vorhandenen Cores zu verteilen. Hierzu bedient sich Intel TBB eines Thread Pools, der für jeden Task einen eigenen Thread bereit hält.
Analogie #1: Beim Verwalten von Tasks geht es genauso zu wie im Supermarkt: Sobald ein Task-Queue frei wird (=Kasse), wird ein bereits wartender Task in eine freie Queue verschoben ( =Task-Stealing).
Lösung #2: Die “Größe” einer Task wird vom Task Partitioner bestimmt, um ein Load Imbalancing zu vermeiden.
Lehre #1: Wenn mehr Game Designer mehr über parallele Programmierung und deren Grenzen/Möglichkeiten wüssten, würden sich die Spieleprogrammierer ein gutes Stück leichter tun.
Ausblick #1: Larrabee wird eine Manycore-GPU-Lösung sein, die wohl Ende nächsten Jahres auf den Markt kommen wird.
Ausblick #2: Eines Tages werden CPUs und GPUs verschmelzen und zu einer leistungsfähigen Einheit mutieren.
Ausblick #3: OpenCL wird die Programmiermethoden verändern (und hoffentlich verbessern).
GamesCamp Munich 09: 3D-Games und Multicore
In etwa einer halben Stunde wird Aaron Coday die Bühne betreten und eine ganze Menge über das Thema “Parallelprogrammierung und 3D-Games” erzählen. Dabei geht es um die Methoden und Techniken, die zum Einsatz kommen sollten, um ein Spiel in C++ nicht sequenziell, sondern parallel zu programmieren. Dann klappt’s nämlich auch mit den schönen Bildern, intelligenten Gegnern, extremen Wetterverhältnissen und anderen Dingen.
Außerdem wird Aaron wohl das ein oder andere über Larrabee erzählen, die zukünftige GPCPU-Lösung von Intel, mit der sich sehr parallel und sehr schnell nicht nur 3D-Berechnungen, sondern auch ganz allgemeine Aufgaben durchführen lassen.
Deshalb: Kommet doch alle um 15 Uhr in den Raum Quantm auf dem GamesCamp Munich 2009.
Maxon-Multithreading: Darum ist Cinema 4D so performant
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.
Surf-Tipp: Parallel-Studio-Artikel kostenlos downloaden
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?!
Reminder: Computerspiel optimieren und richtig abräumen
In gut 15 Tagen ist es soweit: Da wird sich eine prominente Jury der Spieleentwickler-Welt zusammensetzen und darüber befinden, welches der eingereichten Spiele einen der ersten drei Preise erhält.
Vergeben werden die Plätze eins, zwei und drei in den Kategorien “Bestes Multicore-Spiel”, “Bestes Notebook-Spiel” und “Bestes 3D-Chip-Game”. Zu gewinnen gibt es einen ganzen Haufen an Entwicklertools, Tickets zu großen Entwicklerkonferenzen und PCs im Wert bis zu 4.000 US-Dollar. Und, ist das nix?
Falls das für euch interessant ist, solltet ihr euch möglichst schnell für den Wettbewerb “Level Up 2009″ registrieren und euer optimiertes Computerspiel anmelden. Auf dass ihr zu den glücklichen Gewinnern zählt!
3D-Demo von Intel verbessern und Computerspiel gewinnen
Intel hat mal wieder einen 3D-Wettbewerb ins Leben gerufen, und zwar unter dem leicht dramatisch klingenden Titel “Thread like Wildfire”. Dahinter verbirgt sich die Aufforderung, der mittlerweile recht bekannten 3D-Demo Smoke noch mehr Leben einzuhauchen. Smoke zeigt sehr anschaulich, wie sich die Anzahl der verfügbaren Prozessorkerne dazu nutzen lässt, das Gesamtverhalten einer sehr komplexen 3D-Anwendung wie eines Computerspiels insgesamt zu optimieren.
Dazu gehören eine verbesserte AI und realistischere physikalische Verhaltensweisen, aber auch schönere 3D-Bilder und eine höhere Bildrate. Das bedeutet: schlauere Gegner, noch echtere Wasserspiegelungen und Zusammenstöße, detailliertere Landschaften und damit insgesamt mehr Spielspaß.
Damit angehende ebenso wie erfahrene 3D-Entwickler zeigen können, was in ihnen und in Smoke steckt, hat Intel den Quellcode der 3D-Demo freigegeben und bietet diesen zum Download an. Und das Beste daran: Jeder, der bis Ende des Jahres am monatlich stattfindenden 3D-Contest teilnehmen will (und im Gewinnfalle 100 Dollar auf Intel-Kosten in ein neues Computerspiel investieren möchte), kann an Smoke ganz nach seinem Geschmack herumschrauben und damit zeigen, was man mit der Multithread-3D-Demo alles anstellen kann.
Als kleines Beispiel sei Horsepower genannt, eine Wildpferdesimulation, bei der es je nach Anzahl der vorhandenen Prozessoren ganz schön wild zugeht auf dem Computermonitor. Gemäß dem Motto “Thread like Wildfire”!
Also, worauf wartet ihr noch? Zeigt mal, was ihr 3D-programmiermäßig darauf habt und meldet euch mithilfe dieses Links für für den Smoke-Contest an.
Event-Preview: Parallel Tech Talk und GameCamp in München
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?!
Parallel Studio: Das sagen die Betatester
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).
Reminder: Intel-Webinar zum Thema Statische Fehleranalyse
Anfang Februar habe ich eine lange Liste aller bekannten Online-Seminare veröffentlicht, die mit dem Thema Parallel Studio und deren Komponenten zu tun haben. Heute Abend ist es mal wieder soweit: Unter dem Titel “Static Analysis and Intel C++ Compilers” werden Intel-Experten live zeigen, wie sich mithilfe des C++-Compiler des Parallel Composers und des Source Checkers statische Quellcode-Analysen durchführen lassen.
Dabei geht es im Gegensatz zur dynamischen Fehlersuche um das Aufspüren potenzieller Fehler im Sourcecode selbst und nicht um Bugs, die erst zur Laufzeit auftreten. Damit lassen sich unter anderem Speicherprobleme, fehlerhafte Variablendefinitionen, Fehler bei den OpenMP-Deklarationen und vieles mehr aufspüren.
Und, interessiert? Dann solltet ihr ganz schnell auf die Intel-Webinar-Seite gehen und euch flugs für das Online-Seminar anmelden. Es findet nämlich in gut vier Stunden statt.


