Sämtliche Beiträge des Monats November 2009
Parallel Talk: Warum Ct und Rapidmind gut zusammenpassen
Auf dem diesjährigen IDF in San Francisco wurde ich selbst “Opfer”, als ich mich unversehens vor dem Whiteboard von Aaron Tersteeg wiederfand. Aber zum Glück ging es nicht nur mir so, sondern auch unter anderem Stefanus, Michael und Anwar von Intel, die etwas sagen sollten über die Ct-Technologie und warum diese mit den Paralleltechniken von Rapidmind so gut zusammen passt.
Nur so viel: Ct soll noch in diesem Jahr als Beta verfügbar sein und Software-Entwicklern dabei helfen, ihre Anwendungen noch eleganter zu parallelisieren als bisher. Und genau dieses Bestreben verfolgen auch die Jungs von Rapidmind. Das dürfte wohl der wesentliche Grund gewesen sein, warum Intel und Rapidmind seit Ende August gemeinsame Sache machen.
Aber am besten lassen wir Stefeanus, Michal und Anwar selbst zu Wort kommen …
Weitere Details zu Intels Cloud-Service “Parallel Universe”
Erst gestern habe ich darüber berichtet, dass Intel einen ganz neuen cloud-basierten Service vorgestellt hat, der sich Parallel Universe nennt. Dahinter verbirgt sich das kostenlose Angebot an Software-Entwickler, in häufiger Ermangelung eines Opto-Core-Rechners ihre parallelisierten Anwendungen auf deren Skalierbarkeit zu überprüfen. Das ist wirklich eine pfiffige Idee und könnte so manch einem Anwendungsentwickler (a) die Augen öffnen und (b) beim korrekten Multithreaden helfen.
Für ein paar weitere detaillierte Informationen rund um diesen Service hatte ich gestern Abend die Gelegenheit, an einer Telefonkonferenz mit James Reinders teilzunehmen. James ist Director Intel Software Development Products und beschäftigt sich schon seit vielen Jahren mit dem Thema Parallelprogrammierung. So springt er beispielsweise gerade auf der Supercomputing Conference 2009 herum, um dort vermutlich unter anderem sein paralleles Universum vorstellen. Von ihm erfuhren wir ein paar sehr interessante Details zum neuen Cloud-Service:
- Technisch gesehen ist es nicht nur ein Cloud-Rechner, sondern es sind bis zu drei Nehalem-basierte Server, die mit jeweils zwei Quadcore-CPUs bestückt sind. Das ermöglicht inklusive Hyperthreading 16 echte und parallele Hardware-Threads. Sollte ein Parallelrechner nicht ausreichen, werden ein oder zwei weitere automatisch dazugeschaltet. Dies bleibt dem Anwender natürlich vollständig verborgen. In Zukunft werden je nach Erfolgt von Intel Parallel Universe leistungsfähigere Maschinen eingesetzt, mit denen sich auch mehr parallele Threads simulieren lassen. Aber für die aktuellen Anwendungen ist eine Skalierung von maximal 16 Threads völlig ausreichend.
- Sämtliche Analysen, die von Software-Entwicklern eingereicht werden, wandern in eine Warteschlange, sodass es zwar Wartezeiten geben kann, diese allerdings kaum auffallen werden, da die Ergebnisse unmittelbar nach deren Berechnung im Webbrowser dargestellt werden.
Multicore-Testumgebung in der Cloud: Intel Parallel Universe
Das Entwerfen und Entwickeln parallel programmierter Anwendungen ist keine einfache Sache. Man muss nicht nur beim Entwurf der Software viele Dinge berücksichtigen, sondern will natürlich auch sicher sein, dass das Programm aufgrund der möglichen Abhängigkeiten (sowohl in der Logik als auch bei den Daten) möglichst fehlerfrei läuft. Vor allem beim Multithreaden kommt es nämlich immer wieder zu so hässlichen Dingen wie Dead Locks und Data Races, die unverhofft und völlig überraschend zur Laufzeit auftauchen.
Damit es erst gar nicht so weit kommt, stellt Intel seit Ende Mai dieses Jahres für C- und C++-Anwendungen Parallel Studio zur Verfügung. Mit diesem Plug-in für Visual Studio lassen sich nicht nur möglichst fehlerfreie, sondern auch möglichst skalierende Programme entwickeln, die je nach Anzahl der verfügbaren Prozessorkerne möglichst linear ablaufen. Soll also heißen, dass bei zwei Kernen eine Anwendung doppelt so schnell läuft, auf vier Kernen viermal so schnell usf. – theoretisch zumindest.
Doch wer hat schon unbedingt einen Quadcore- oder noch leistungsfähigeren Rechner im Testlabor rumstehen, mit dem sich diese Skalierung effizient und zuverlässig testen lässt? Eben. Und hier kommt ein ganz neuer Cloud-Service von Intel zum Einsatz, der seit heute kostenlos verfügbar ist. Sein Name: Intel Parallel Universe. Seine Idee: Das Testen parallelisierter Apps mithilfe eines 16-Core-Rechners, der via Internet zur Verfügung steht. Die Voraussetzungen: ein Internetbrowser, Zugang zum Intel Software Network und Parallel Studio für weitere Auswertungen und Analysen.
Das war die Microsoft TechEd Europe 2009
Sodala: Für alle, die selbst nicht auf der Microsoft TechEd Europe 2009 sein konnten, folgt hier die ultimative Zusammenfassung, was auf diesem Blog in der letzten Woche live aus Berlin (und davor) alles passiert ist. Viel Spaß beim Schmökern!
Am 4. November ging es mit der ersten Vorfreude los, die einen Tag später in einem Ausblick mündete, was es auf der TechEd Europe 2009 alles zum Thema Parallelprogrammierung zu sehen gibt. Diese Frage habe ich tags drauf konkretisiert und mir mal einen Teil des TechEd-Programms angesehen. Da wurde schnell klar: Das Thema Parallelprogrammierung und Multithreading erfährt endlich die Wertschätzung, die notwendig ist, um den ein oder anderen Software-Entwickler wachzurütteln und zu sagen: Leute, denkt parallel!
Am 9. November war es dann soweit: Die Microsoft TechEd Europe 2009 öffnete ihre Pforten und wir waren mittendrin. Da war es natürlich mehr recht als billig, mit ein wenig Orgakram darauf hinzuweisen, wo der Intel-Stand liegt und was es alles dort zu sehen gibt. Tom hat sich währenddessen mit seiner Videokamera auf die Suche nach ersten Eindrücken gemacht – und wurde fündig.
Am zweiten Tag habe ich diverse Techsessions besucht, aus denen zum einen Live-Twittering resultierte und zum anderen ein sehr interessantes Videointerview mit Steve Teixeira von Microsoft, in dem er mir erzählt hat, was Software-Entwickler von .NET 4 in Sachen Parallelprogrammierung erwarten können. Am selben Tag gab es übrigens die erste von drei Parallel-Studio-Sessions, die Ralph direkt neben dem Intel-Stand gehalten hat. Anschließend fand die von vielen (und ich meine: viele!) sehnlichst erwartete Netbook-Verlosung statt, die natürlich einen glücklichen Gewinner ermittelte.
Wie .NET-Entwickler mit VTune Bottlenecks finden können
Vergangene Woche auf der Microsoft TechEd Europe 2009 hatten wir die Gelegenheit, uns von Rami Radi zeigen zu lassen, wie .NET-Entwickler mithilfe des Profiling- und Samplingtools VTune Performance Analyzer Schwachstellen in ihren Anwendungen aufspüren und beheben können. Dabei geht es beispielsweise sehr oft um Schleifenkonstrukte, die unverhältnismäßig viel CPU-Zeit in Anspruch nehmen, was mit den richtigen Tricks gar nicht notwendig wäre. Für alle, die also in Zukunft mehr aus ihrer Software herausholen wollen, sei dieser Video-Workshop wärmstens empfohlen.
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.

