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).
prio.powerday: Microsoft Concurrency Coordination Runtime
Direkt nach Bernds Vortrag ist Ralf Westphal wieder dran und erzählt etwas zur Concurrency Coordination Runtime (CCR). Im Gegensatz zu Bernd geht es bei Ralfs Vortrag weniger um die Leistungssteigerung parallel programmierter Anwendungen als vielmehr um die optimale asynchrone Datenverarbeitung im parallelen .NET-Umfeld.
Die CCR ermöglicht ein neues Programmiermodell für parallel laufende Anwendungen. Ein sehr schöner Ausspruch von Ralf lautet übrigens: “Vergesst Threads!”, da Threads synchronisiert werden müssen, was Ralf nicht wirklich mag. Um das besser verdeutlichen zu können, schreibt er in Echtzeit verschiedene kleinere Programme. Sehr schlau!
Das Besondere an der CCR ist das Warteschlangenprinzip: Jeder Befehl oder jedes Datum wird im Hintergrund aus der Warteschlange ausgelesen und verarbeitet, sobald eine Ressource frei ist. Damit müssen keine expliziten Threads erzeugt und wieder beendet werden, da sich die CCR automatisch darum kümmert. Hierfür steht die DispatcherQueue-Klasse zur Verfügung.
Die CCR erlaubt sowohl den Einsatz des Standard-Threadpools als auch eigene Threadpools auf Dispatcher-Basis.
prio.powerday: Parallele Programmierung unter .NET 3.5
Nach der Mittagspause ist Bernd Marquardt ohne sein Alter Ego an der Reihe. Sein Thema: Parallele Programmierung mithilfe des .NET-Frameworks 3.5, und zwar per TPL.
Folgende Elemente kommen zum Einsatz:
- Parallele Erweiterungen für LINQ = PLINQ
- Schleifen parallelisieren: Die hierzu gehörige Klasse heißt System.Threading.Parallel. Schleifen werden auf mehrere Threads aufgeteilt werden, aber nur, wenn die einzelnen Schleifendurchläufe unabhängig voneinander sind. Dabei müssem die Indezies alle gleich sein. Am Ende der Schleife werden alle Threads synchronisiert. Fazit: Schleifenparallelisierung lohnt sich nur bei komplexen und großen Schleifen! Wichtig ist auch die richtige Verteilung einer Schleife auf die vorhandenen Prozessorressourcen. Dies gelingt, indem die einzelnen Schleifendurchläufe in kleinen Portionen verarbeitet werden.
- Aggregationen: Hierbei geht es um das Zusammenfassen von Ergebnissen. Dabei ist Locking meist erforderlich. Zwischenwerte werden über sogenannte ThreadLocateState weitergegeben. Der Ablauf sieht folgendes vor: Initialisierung, Zwischenspeichern der einzelnen Thread-Ergenisse und das abschließende Zusammenführen der Zwischenwerte inklusive Locking. Übrigens: Aufgrund des Zusammeführens der einzelnen Thread-Zwischenergebnisse kann ist bei der parallelen Ausführung zu Rundungsfehlern kommen und das Ergebnis weicht vom sequentiellen Programm ab.
