TechEd09: Wie die CCR .NET-Entwicklern bei der Parallelprogrammierung hilft
Die erste Session, die ich hier am vierten Tag der Microsoft TechEd besucht habe, wurde von Ralf Westphal gehalten, der in gewohnt unterhaltsamer und fundierter Weise das Thema asynchrone Programmierung vorstellte. Hauptsächlich auf Basis der Concurrency Coordination Runtime (CCR), die Microsoft mit Einführung des .NET-Frameworks 3.5 implementiert hat. Für alle, die mit dem Begriff CCR nicht so viel anfangen können, gibt’s auf MSDN einen kurzen Überblick.
Die erste interessante Aussage, die Ralf während seiner 75-Minuten-Session abgefeuert hat, war die Erkenntnis, dass Software-Entwickler sich selbst um das Parallelisieren ihrer Anwendungen kümmern müssen und dies nicht nur dem Betriebssystem oder anderen Instanzen überlassen dürfen. Ein weiterer Satz war nicht ganz überraschend und auch nicht neu, dafür umso wichtiger: “The free lunch is over!” Dieser Ausspruch stammt übrigens nicht von Ralf, sondern von Herb Sutter, der das bereits 2005 formuliert hat. Die Grundaussage dahinter lautet:
Künftige Prozessoren werden nicht mehr unendlich schneller, sind dafür mit immer mehr CPU-Kernen ausgestattet. Daher müssen Programmierer umdenken, um ihre Anwendungen in Zukunft zu beschleunigen.
Videochat: Die Zukunft der Parallelprogrammierung
Jetzt weiß ich zumindest, was eine “Birds of a feather”-Session ist: Viele interessierte Menschen kommen in einem mittelgroßen Raum zusammen, hören einem gut informierten Spezialisten bei seinen Ausführungen zu und mittendrin entsteht eine lebhafte Diskussion, die viele neue (aber auch bekannte) Erkenntnisse bringt. So geschehen heute Mittag am dritten Tag der Microsoft TechEd Europe 2009, wo ich der Techsession von Tiberiu Covaci beiwohnte, auf der er eine Menge zum Thema “Zukunft der Parallelprogrammierung” beizutragen hatte.
Sein Vortrag hatte allerdings eher den Charakter eines technischen Workshops, indem er selbst zunächst eine Menge zum Thema Intel, Microsoft und Multicore-Shift inklusive .NET 4 und Visual Studio 2010 erzählt hat. Auszüge gefällig?
TPL of .NET 4 delivers the right number of threads regarding the available number of cores/threads.
Needs around 200.000 instruction cycles to create a thread and 100.000 for releasing it again. As a developer you have take this into account!
TPL delivers several parallel classes like Parallel.For() and Parallel.Invoke which abstracts threads to tasks.
Visual Studio 2010 will deliver the appropriate debugger tools for parallelized applications.
Was seiner Techsession allerdings ein wenig fehlte war der Blick in seine Glaskugel, die uns Anwesenden etwas über die Zukunft der Parallelprogrammierung hätte erzählen können. Zumindest war ich genau aus diesem Grund in seinem Vortrag. Das ließ sich allerdings ganz schnell nachholen, indem wir unsere Videokamera aufgebaut und Tiberiu drei schlaue Fragen gestellt haben. Die erste handelt vom Inhalt seiner Präsentation, Nummer zwei beschäftigt sich mit seiner Podiumsdiskussion vom Montag und mit der Beantwortung von Frage drei ließ er uns in die Zukunft der Parallelprogrammierung blicken.
Nur so viel dazu: Laut Tiberiu müssen sich Software-Entwickler ab sofort mit Multithreading und Co. auseinander setzen, denn der Multicore-Shift hat schon längst begonnen. Und den Rest schaut ihr euch am besten selbst an, sobald unser Videointerview fertig und online ist.
Update: Das Video ist fertig!
Videochat: Wie .NET-Entwickler von Multithreading profitieren
Der dritte Tag der Microsoft TechEd Europe 2009 begann mit der sehr anschaulichen und technisch höchst anspruchsvollen Techsession von Rami Radi, der bei Intel als Software-Ingenieur arbeitet und anderen Entwicklern hilft, ihre Anwendungen multicore-tauglich zu machen.
Zunächst einmal muss festgehalten werden, dass die Session genauso gut besucht war wie die gestrige von Steve Teixeira. Darüber hinaus wurde schnell klar, dass die meisten Anwesenden weder wussten, dass Intel noch etwas anderes produziert als Mikroprozessoren, noch die Intel-Tools wie VTune Performance Analyzer kannten (was angesichts des “weder” keine Überrraschung war).
Ramis Präsentation befasste sich mit drei Kerngebieten: Intels aktuelle und zukünftige Mikroprozessor-Architekturen, .NET-4-Verbesserungen in Sachen Multithreading und wie Intel-Tools wie der besagte VTune Performance Analyzer Software-Entwicklern helfen können, ihre Apps auf Korrekheit hin zu überprüfen. Zu diesem Behufe sagte Rami einige bemerkenswerte Dinge:
Moore’s law doesn’t help software developers anymore as frequencies aren’t going up anymore. The good news: the number of core does!
With Nehalem you get Non Uniform Memory Acess (NUMA) which connects every CPU and memory to each other which has huge advantages.
Come to Intel booth in hall 4.2 to see one of the first desktop PCs which is able to run 128 threads in parallel!
Multithreading is not equal parallelism!
Poor scaling .NET applications can be powered up with the help of Intel VTune Performance Analyzer and Visual Studio 2010 / .NET 4
.NET 4 provides the Background Garbage Collection which speeds up managed code significantly.
Worker stealing within .NET 4 will help to achieve better multithreaded balanced managed applications.
VTune profiles and samples .NET applications in order to find critical code sections where a lot of computing time is being wasted
Vtune also helps identifying false sharing problems. Means VTune will detect and solve cache line misses.
To eliminate false sharing problems helps to speed up your .NET apps on 8 core system by 70x!
Intel-Session “Parallel Studio” und eine Netbook-Verlosung
Um 16:30 Uhr betrat Ralph de Wargny die Bühne des Visual Studio Partner-Theaters, um ein wenig über Intel Parallel Studio zu erzählen und um ein Netbook zu verlosen, für das gestern und heute eine Menge Leute Frageb beantwortet haben. Ralphs Präsentation gibt es wie gewohnt als Twitter-Stream-Auszug:
Intel Parallel Studio = Amplifier + Inspector + Composer + Advisor = Multicore optimization
Parallel Advisor helps you to parallelize your native code. But from 2010 onwards only.
With Parallel Inspector you find memory errors before they happen. Works on serial AND threaded code.
Intel Parallel Amplifier is a child of VTune Performance Analyzer, but easier and more intuitively to use. Profile you parallel code.
On http://wwwintel.com/go/para… you’ll find more information about Parallel Studio and more.
Nach der Parallel-Studio-Session gab es das dann das lang ersehnte Netbook, ein Sony Vaio. Sehr schickes Teil. Der Durchgang zwischen Theater und Intel-Stand war entsprechend für eine kurze Zeitspanne komplett verstopft. Kein Wunder: Netbooks sind gerade der große Renner.
Für alle, die nicht dabei sein konnten, haben wir Ralphs Vortrag und die Netbook-Verlosung mit unserer JVC-Kamera auf SD-Karte gespeichert. Sobald Tom die besten Bilder zusammengeschnitten hat, geht das Video hier online.
Update: Hier ist das Video. Viel Spaß damit!
Videochat mit Steve Teixeira über Parallelprogrammierung
Steve Teixeira von Microsoft ist ein gern gesehener Gast auf den großen Konferenzen dieser Welt. Wenn es sich zudem um die Hauskonferenz handelt, ist es nicht wirklich überraschend, dass er hier mehrfach über sein Lieblingsthema spricht, nämlich über die parallele Programmierung.
So wie heute morgen um 9:00 Uhr in der Früh, was aber die anwesenden Software-Entwickler nicht davon abgehalten hat, den Raum bis auf den letzten Platz zu füllen. Das zeigt zweierlei: Erstens hat das Thema Multithreading viele Leute schon erreicht, und zweitens besteht offensichtlich noch eine Menge an Informationsbedarf. Und da ist Steve genau der richtige, um vorhandene Wissenslücken zu füllen.
Für alle, die es nicht mitbekommen haben: Ich saß in der Session und habe mir die Seele aus dem Leib getwittert. Ein paar Kostproben gefällig?
First demo: LINQ versus PLINQ. Guess who is faster? Got it?! Yes, PLINQ is 3.3x faster.
The only difference between LINQ & PLINQ is a little “AsParallel()”. Very easy, very intuitive!
ParallelEnumarable() fits perfectly for parallel computing with huge data. Think of financial applications, e.g.
There’s one important advice by Steve: Don’t use threads but tasks. .NET 4 is supporting with Parallel.Invoke() e.g.
With .NET 4 you can delay tasks in order to run them later as soon you need them.
Diese und andere Aussagen ergaben ein klares Bild: .NET 4 soll und wird die Parallelprogrammierung verbessern, und das mit einem klaren Konzept, mit Tasks statt Threads und den passenden Tools wie einem Debugger, der viele Informationen über die laufenden Threads und Tasks liefert.
Direkt nach der Session konnten wir übrigens Steve Teixeira dazu überreden, uns vor der Kamera ein paar Fragen zu beantworten. Kollege Papadhimas ist gerade am Schnitt dran. Sobald das Video fertig und auf Youtube gestellt ist, kommt hier der Embedcode rein. Damit ihr auch etwas davon habt.
Update: Das Video ist fertig geschnitten, gerendert und auf Youtube. Und hier. So, Film ab.
TechEd09: Erste Videoeindrücke aus Berlin
Wir sind also in Berlin, auf der Microsoft TechEd Europe 2009. Das sollte sich ja allmählich herumgesprochen haben. Damit ihr es auch wirklich glaubt, ist Tom heute erst mal allein mit seiner Kamera losgezogen, um erste Eindrücke einzufangen. Und ab morgen bin ich dann mit dabei, um ein paar Videointerviews und -demos zu drehen. Mit auf der Liste stehen:
- Steve Teixeira wird morgen früh (Di, 9:00) etwas zu “Parallel Computing for Managed Developers” erzählen. Hoffentlich bekommen wir Steve hinterher für ein Interview vor die Kamera.
- Um 15:15 Uhr geht es dann um das Thema HPC und Virtualisierung. Auch hier planen wir ein anschließendes Videointerview.
- Intel-Kollege Rami, der am Mittwoch seine Techsession hat, wird uns in seiner Demo zeigen, wie Managed Code mithilfe von VTune optimiert werden kann.
- Natürlich werden wir auch Bilder von der Parallel-Studio-Session inklusive Netbook-Verlosung zeigen.
- Am Mittwoch hat dann Rami seine besagte Techsession. Hinterher stellen wir im ein paar schlaue Fragen.
- Um 10:15 Uhr geht es direkt weiter mit F# und dessen parallelen Fähigkeiten. Hinterher gibt’s hoffentlich ein Videochat mit Donald Syme.
- Tiberiu Covaci hält um 12:20 Uhr seinen Vortrag mit dem Titel “The Future of Parallel Programming”. Anschließend werden wir Tiberiu zu seinen diversen Techsessions befragen. Auch zu denen, die wir heute Morgen leider nicht besuchen konnten.
- Und falls ihr nochmals die 15-Minuten-Präsentation samt Netbook-Verlosung sehen wollt: Am Mittwoch ist wieder Gelegenheit dazu.
- Der Donnerstag beginnt mit einer Parallelsession mit dem Titel “Going Parallel for a Living: Introduction to the Concurrency Coordination Runtime” des lieben Kollegen Ralf Westphal. Mal sehen, ob er uns auch vor der Kamera etwas erzählt.
- Um 15:15 Uhr ist Steve Teixeira noch mal dran, und zwar mit seiner Session “Building High Performance Parallel Software”. Ob Steve sich zweimal von uns interviewen lässt?
- Natürlich gibt es auch am Donnerstag die fast schon lieb gewonnene 15-Minuten-Session inklusive Netbook-Vergabe. Aber diesmal schenken wir uns das vielleicht. Wir wollen ja niemanden langweilen.
- Und klar, dass die Intel-Kollegin Beatrice noch zu Wort kommt. Sie will nämlich unbedingt etwas zum Intel Atom Developer Program erzählen.
So, und nach so vielen Programmankündigungen kommen jetzt endlich die Impressionen aus Berlin. Film ab!
TechEd09: Die Show kann beginnen
So, die ersten zwei Stunden der Microsoft TechEd Europe 2009 sind vorüber, und alles läuft schon ganz prima. Der Intel-Stand ist fertig, die Twitterwall läuft und in einer halben Stunde haben wir auch einen schönen, großen Flatscreen, auf dem wir unser Livebloggen und Twittern auf 46 Zoll zeigen können. Tom ist auch schon mit seiner Kamera unterwegs und fängt für euch die ersten Impressionen der Microsoft TechEd Europe 2009 ein. Ganz im gewohnten Stil.
Bevor ich es ganz vergesse, folgen hier noch ein paar organisatorische Dinge: Der Intel-Stand, an dem ihr mich und die Kollegen treffen könnt, befindet sich in Halle 4.2 und liegt von der Halle 7 kommend direkt am Eingang. Das ist die so genannten Visual Studio Partner Zone. Dort gibt es unter anderem eine Menge nützliche und erhellende Infos rund um das neue Intel Atom Developer Program, das Software-Entwicklern dabei helfen soll, windows- und moblin-basierte Anwendungen speziell für Netbooks zu entwickeln und diese zu einem späteren Zeitpunkt auf Netbooks zu bringen. Falls ihr euch für dieses Programm direkt am Stand registriert, gibt’s auch eine kleine Überraschung.
Darüber hinaus findet ihr eine Menge Infos rund um unser liebstes Baby, das auf den schönen Namen Intel Parallel Studio hört und in rund zwei Wochen sein Halbjähriges feiert. Falls ihr also C-/C++-Programmierer seid, Visual Studio einsetzt und eure Anwendungen threadsicher parallelisieren wollt oder einfach nur gucken wollt, ob sich besonders fiese Bugs eingeschlichen haben, die sich möglicherweise erst zur Laufzeit zeigen, ist Parallel Studio genau das richtige Tool für euch. Hier könnt ihr sogar eine Test-CD abgreifen, um euch mit Parallel Studio vertraut zu machen.
Und falls ihr ein neues Netbook wollt, solltet ihr ebenfalls am Stand V1/V2 vorbeikommen. Beantwortet ein paar Fragen, tragt eure Daten ein und schwups, ab mit der Karte in die zugehörige Losbox. Und schon gewinnt ihr vielleicht eins der schicken Teile. Die erste Verlosung ist allerdings erst morgen Nachmittag, die ausgefüllten Karten werden aber auch schon heute akzeptiert.
So, dann mach ich mich wieder auf den Weg zum Stand. Um den Monitor zu installieren, der gerade gekommen ist. Damit ihr auch besser sehen könnt, was ich twittere und blogge. Man sieht sich!
Ach ja: Auf der anderen Seite der Halle hat Intel noch einen Stand, auf dem es rund um das Thema Datacenter geht. Also alles über Servertechniken, Virtualisierung und Co. Und dort gibt es ebenfalls etwas zu gewinnen, nämlich schicke, ultradünne Notebooks. Ihr seht, ein Besuch der Halle 4.2 lohnt sich auf jeden Fall.
IDF09: Parallel Computing mit .NET 4 und Visual Studio 2010
Ich sitze hier in der Microsoft Techsession, die von Steve Teixeira gehalten wird. Steve spricht über Parallelprogrammierung unter .NET 4 und Visual Studio 2010. Ich kann natürlich nicht den gesamten Vortrag wiedergeben, daher konzentriere mich auf seine wesentlichen Aussagen:
Multithreaded programming is “hard” today
Das bedeutet für Microsoft (und Intel), Software-Entwicklern dabei zu helfen. Hierzu bieten beide (Intel und Microsoft) passende Tools, die Programmierer unterstützen. Dazu gehören laut Steve aber auch Programmiersprachen und Plattformen.
Ein kleines Schleifenbeispiel führt Steve vor, das zeigen soll, wie sich seriell programmierter Quellcode parallelisieren lässt – inklusive potenzieller Probleme.
Als Lösung für das Sortierproblem eignet sich laut Steve LINQ, das Teil von .NET 3.5 ist. Weitergesponnen bietet die parallele Version von LINQ = PLINQ eine viel bessere Lösung für Sortieralgorithmen – und mehr!
IDF09: Techsession “Software-Tools für skalierende Apps”
Hier ist sie also: meine erste Techsession auf dem Intel Developer Forum 2009. Es geht um die Frage, mit welchen Tools Software-Entwickler arbeiten sollten, um das Beste aus ihren Anwendungen herauszuholen.
Die Session beginnt mit einer Folie, die all das zeigt, was Intel in Sachen High Performance Computing tut.
Folie 2 beschäftigt sich mit der Frage, welche Dinge zu berücksichtigen sind, um das Optimum aus seiner Anwendung zu holen. Dazu gehören die Wahl der richtigen Algorithmen, der passenden Programmiersprache und Compiler und natürlich die Frage nach den passenden Software-Tools, mit denen sich Anwendungen optimieren lassen.
Mit Fragen der Portabilität und der Produktivität sollten sich Entwickler ebenfalls beschäftigen. Auch hier geht es um Dinge wie Programmiersprachen, Tools, Betriebssysteme etc.
Jetzt dreht es sich um das Thema Skalierung und was getan werden muss, um eine Beschleunigung der Anwendungen zu erhalten, die sich an der Zahl der vorhandenen Prozessorkerne und Hardware-Threads orientiert.
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).

