Buchrezension: Parallelprogrammierung unter dotNET

veröffentlicht von Michael Hülskötter am 18. Dezember 2009 (1) Kommentar

Das Thema Paralllel Computing beschäftigt mich hier auf diesem Blog schon seit mehr als einem Jahr. Und so kurz vor Weihnachten hab ich die perfekte Geschenkempfehlung für alle dotNET-Entwickler, die sich selbst oder andere in Form eines Buches eine Freude machen wollen.

Sein Titel (also der des Buches): “Parallel Computing in .NET”. Sein Autor: Marc André Zhou. Sein Umfang: rund 360 Seiten. Seine ISBN: 978-3-86802-038-0. Seine Mission: Wie mache ich dotNET-Entwicklern klar, dass sie von der sequentiellen Programmierung umsteigen sollten auf die parallele. So gesehen finde ich den Titel ein wenig unglücklich gewählt, wenngleich es in dem Buch natürlich auch um Parallel Computing geht. Doch zuvorderst sollen die Leser dieses gedruckten Leitfadens etwas über Multithreaden und Co. lernen.

Und hierfür hat der Autor wirklich sehr viel an Informationen zusammengetragen. Das beginnt mit einer kleinen Aufklärungsrunde in Sachen Parallel Computing (sic!), die sogar die parallelen Programmiermodelle betrachtet. Anschließend wird es ein wenig theoretisch, indem Zhou so Dinge wie das Amdahlsche und das Gustafson-Gesetz betrachtet. Das hilft auf jeden Fall für ein grundsätzliches Verständnis, wann die Parallelprogrammierung sinnvoll ist – und wann nicht.

Nach weiteren allgemeinen Informationen rund um die Regeln des Parallel Computing, aber auch des Projektmanagement und den Modellierungsmöglichkeiten geht es dann nahtlos über in das Basiswissen rund um Threads unter .NET. Dies ist jedoch schon wieder fast veraltet, denn mit der Einführung von .NET 4.0 wird kein Mensch mehr von .NET-Threads und deren manuellem Erstellen reden.

weiterlesen…

Kategorien : Multicore Tags : , ,

Das war die Microsoft TechEd Europe 2009

veröffentlicht von Michael Hülskötter am 17. November 2009 (1) Kommentar

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.

weiterlesen…

Kategorien : Mobile, Multicore Tags : , ,

Happy Birthday, Software Dev Blog!

veröffentlicht von Michael Hülskötter am 20. Oktober 2009 (0) Kommentare

Heute ist es tatsächlich so weit: Das Software Dev Blog wird ein Jahr alt. Genauer gesagt: 366 Tage, 206 Beiträge und 3.520 abgefangene Spam-Kommentare. Das ist eine ganze Menge. Und es ist in dieser Zeit eine ganze Menge passiert.

Los ging das Bloggen für Intel am 11. August 2008, und zwar anlässlich der Spieleentwickler-Konferenz GCDC’08, die voriges Jahr noch im schönen Leipzig stattfand. Aufgrund der guten Erfahrungen und des Erfolgs vor, während und nach dieser Veranstaltung habe ich gemeinsam mit Intel das Software Dev Blog ins Leben gerufen. Die Ausrichtung war von Anfang eindeutig: Was muss ich als Software-Entwickler alles dafür tun, damit meine leistungshungrigen Anwendungen optimal auf Multicore-Prozesssoren laufen?

Dafür habe ich erst einmal die wichtigsten Tools vorgestellt, die Intel hierfür in petto hat. Namentlich sind dies Parallel Studio, VTune Performance Analyzer, Thread Checker, Intel TBB, Intel Compiler, Concurrency Checker, Thread Profiler und andere Werkzeuge. Dann kam Event Nummer 2 schon des Wegs: Microsoft Tech-Ed 2008, wo wir live gebloggt und Videos gedreht haben.

Ab Mitte Februar warf Parallel Studio dann weitere Schatten an die Wand, die ich zum Anlass nahm, mir die angekündigte Multicore-Suite genauer anzusehen. Am 27. Mai kam das Tool dann übrigens zur Welt.

Selbst Grundlagen der parallelen Programmieren kamen und kommen hier nicht zu kurz. So kann man Multithread-Konzepte kennen lernen, von fünf Multicore-Programmierregeln lernen, Programmiermethoden erforschen, mögliche Fehler umgehen, OpenMP begutachten und viele andere Dinge mehr.

Das Software Dev Blog prangert auch schon mal an, so wie die Ausbildungslücken in Sachen Multicore-Programmierung, oder loben Unis, wenn sie sich dieses Themas annehmen.

Im Laufe des zurückliegenden ersten Jahres habe ich immer wieder wichtige Menschen der Entwicklerszene zu Wort kommen lassen, so wie die Vertreter von DivX, Crytek, Nik Software, Microsoft, Cakewalk, Maxon und andere.

Natürlich begab ich mich zwischendurch einige Male auf längere und kürzere Reisen, um live von passenden Veranstaltungen zu berichten. Dazu gehörte die OOP in München (aus der sich ein .NET-Vierteiler ergab), Eurographics 2009 (auch aus München), Intel Software Conference in Salzburg, prio.powerday in München, die Exasol-Roadshow, das Gamescamp zu München, TechTalks mit Intel und Microsoft, Game Developers Conference 2009 zu Köln und kürzlich das Intel Developer Forum in San Francisco, auf dem es eine Menge Infos zu Moblin gab. Dieses Thema wird mich hier übrigens in nächster Zeit noch öfter beschäftigen.

Gefeiert wird der erste Geburtstag übrigens auf dem morgigen Intel (B)logger Day, der in … genau, München stattfindet. Happy Birthday, Blog!

Kategorien : Mobile, Multicore, Visual Computing Tags : ,

IDF09: Tag 2 zusammengefasst: Keynotes und Techsessions

veröffentlicht von Michael Hülskötter am 25. September 2009 (1) Kommentar

Gestern war ich richtig fleißig. Daher folgt hier eine kurze Zusammenfassung.

Die Keynote von “Dadi” Perlmutter hatte echten Unterhaltungswert – und brachte zudem einige Neuheiten und neue Erkenntnisse. So wurde beispielsweise das schon länger bekannte Geheimnis gelüftet, dass Intel ab sofort einen Notebook-Prozessor im Programm hat, der auf der Core-i7-Familie basiert und damit echte Desktop-Power auf das Laptop bringt. Mit vier Cores und acht simultanen Threads also. Jetzt werden die Entwickler dieser Welt immer seltener eine Ausrede dafür haben, ihre Anwendungen nicht zu parallelisieren.

Natürlich bieten die mobilen Core i7 Prozessoren auch so nette Features wie Turbo Boost, also das legale “Overclocking” der Intel-CPUs. Ok, nicht ganz, aber mithilfe von Turbo Boost lassen sich einzelne Prozessoren komplett abschalten und damit die gesamte Power auf einen oder zwei CPUs übertragen. Das ist vor allem dann praktisch, wenn die gerade laufende App nicht zu 100 Prozent parallelisiert ist (weil das nicht immer möglich bzw. sinnvoll ist) und der seriell ablaufende Teil zusätzlich beschleunigt werden soll.

Hübsch waren aber auch die “Gimmicks”, die Perlmutter dabei hatte. Wie zum Beispiel ein extrem schlankes 16-Zoll-Notebook von Dell. Das zeigt, wohin es weiterhin gehen wird: zu dünneren und leistungsfähigeren Notebooks, die hoffentlich die Akkulaufzeiten nicht aus den Augen verlieren.

Aber auch das Projekt Tangent Bay ist nett: Drei auf das Notebook-Gehäuse integrierte OLED-Touchdisplays erlauben den schnellen Zugang per Fingerberührung zu den wichtigsten Dingen wie Musik, Fotos, Twitter, Facebook, E-Mail und mehr.Tja, und mit Light Peak soll in Zukunft die Datenübertragung im heimischen Wohnzimmer über 10-GBit-Leitungen erfolgen – und das zu erschwinglichen Preisen.

weiterlesen…

Kategorien : Mobile, Multicore Tags : , ,

Von Crytek bis Larrabee: Das war die GDC09

veröffentlicht von Michael Hülskötter am 20. August 2009 (1) Kommentar

Sodala, die Game Developers Conference 2009 ist Geschichte und wir präsentieren nochmals die schönsten Bilder der Entwicklerkonferenz. Ob CryEngine 3 samt Interview mit Cevat Yerli, Techsessions zu CPU-Fragen, Larrabee, Parallel Studio, Intel Graphics Performance Analyzer oder Duale Zahlen – wir hatte unseren Spaß und haben eine ganze Menge gelernt.

Und die Entwickler hatten auch etwas davon – na, mal vor allem die, die eines der vier Netbooks gewonnen haben. Alle anderen hoffentlich auch. Also, wir sehen uns (wieder) im nächsten Jahr. Gleiche Stelle, gleich Welle. Tschö und macht et jut!

Kategorien : Multicore, Visual Computing Tags : , , , ,

Workshops und Tutorials für Parallelprogrammierer

veröffentlicht von Michael Hülskötter am 6. Mai 2009 (0) Kommentare

Was mir als Software-Dev-Blogger wirklich am Herzen liegt, ist ein möglichst hoher Nutzwert, den meine Blog-Beiträge bieten sollen. Daher haben sich im Laufe der letzten gut sechs Monate einige Workshops und Tutorials angesammelt, die zeigen, wie die parallele Programmierung vonstattengeht. Und damit diese Tipps und Tricks nicht in Vergessenheit geraten, folgt jetzt die ultimative Tutorial-Sammelliste:

>> Los ging es mit den bekannten Multithreading-Konzepten OpenMP, APIs und Intel Threading Building Blocks und der Frage, welche der drei Methoden sich zum Threaden am besten eignet.

>> Dann folgten fünf Multicore-Programmierregeln, die zeigen sollen, mit welchen Anforderungen Programmierer und Software-Entwickler konfrontiert werden, wenn sie sequenziellen Code in parallele Anwendungen überführen wollen. Ich sage nur: Denke parallel!

>> Ein wichtiges, weil fundamentales Konzept der Multicore-Programmierung ist der Unterschied zwischen Daten- und Aufgabenparallelität. Diesen zu verstehen ist die erste Programmiererpflicht, wenn es darum geht, skalierbare Multithread-Anwendungen zu erstellen.

>> Wie viele Schritte muss man gehen, um aus seriellem Quellcode parallel ablaufenden zu machen? Genau vier. Rein abstrakt betrachtet zumindest. Auch hierfür habe ich den passenden Workshop parat, der die vier Stufen der Parallelprogrammierung genauer beleuchtet.

>> Was aber, wenn ich zwar weiß, wie ich parallel programmieren soll, ich aber keinen Schimmer davon habe, welche Stolperfallen dabei auf mich warten? Da heißt es dann meinen Beitrag lesen, welche Fehler bei der Parallelprogrammierung der Entwicklergemeinde drohen und wie sich diese (die Fehler, nicht die Entwickler) umgehen lassen.

weiterlesen…

Kategorien : Multicore Tags : , ,

Das war der April in Sachen Multicore-Programmierung

veröffentlicht von Michael Hülskötter am 30. April 2009 (0) Kommentare

Der Monat April neigt sich dem Ende entgegen, und das ist ein willkommener Anlass, die letzten 30 Tage Revue passieren zu lassen.

Los ging’s mit der Eurographics 2009, auf der ich live von der Techsession Larrabee und Raytracing gebloggt habe. Richtig komplexe Themen, aber auch sehr interessant. Nach dem Wochenende hab ich dann ein Video online gestellt, das die Vorzüge des Concurrency Checker verdeutlicht. Das ist sogar für C#-Entwickler relevant. Den Tag drauf habe ich auf eines der vielen Webinars in Sachen Parallel Studio verwiesen, die Intel bis Mitte des Jahres anbietet. In diesem Fall ging es um den Parallel Inspector, das Debugger-Tool des C++-Plugins für Visual Studio.

Am 8. April begegnete mir eine News, die mich als Apple-Anwender besonders interessierte: Apple hat es geschafft, die Multithread-Leistung seines XServe zu erhöhen, indem der Server ab sofort Nehalem-basierte Prozessoren nutzt, die pro Kern zwei Threads parallel verarbeiten können.

Nach einer systembedingten Pause ging es dann weiter mit den fünf Bedingungen, die ein Schleifenkonstrukt erfüllen muss, um per OpenMP parallelisiert zu werden. Tags drauf fuhr ich fort mit meinen OpenMP-Betrachtungen; diesmal waren die Aufgaben an der Reihe, die man als Entwickler erledigen muss, damit Schleifen überhaupt parallelisierbar sind. Und klar, dass mir gemeinsame Workshops von Microsoft und Intel in Sachen parallele Programmierung eine Meldung wert waren.

weiterlesen…

Kategorien : Multicore, Visual Computing Tags :

Good-bye 2008 und Willkommen, 2009!

veröffentlicht von Michael Hülskötter am 31. Dezember 2008 (0) Kommentare
Good-byte 2008, und hallo 2009!

Quelle: pixelio.de

Was macht man als guter Blogger am letzten Tag des Jahres?! Genau, man hält Rück- und Vorschau. Also, was war und was kommt alles auf uns zu.

Retrospektiv lässt sich erst mal eine Zahl nennen: 50. So viele Beiträge haben wir hier nämlich seit 20. Oktober verfasst, also seit dem Geburtstag des Software Dev Blogs. In diesen 5×10 Artikeln ging es vor allem um eine Thema: Wie holt man als Anwendungsentwickler das Optimum aus seiner Software heraus, damit sie auf Multicore-Plattformen wie dem Core i7 von Intel am besten läuft.

Daher haben wir uns natürlich die passenden Tools angesehen, die man für das Optimieren der Multithread-Software einsetzen kann. Dazu zählen: der Parallel Composer, für den man sich immer noch als Beta-Tester anmelden kann; der Thread Checker zum Aufspüren von Fehlern im Parallel-Code; Software-Bibliotheken zum Optimieren von bestehendem oder neuem Quellcode; Threading Building Blocks zum parallelen programmieren; C++- und Fortran-Compiler mit hohem Multicore-Potenzial und VTune Performance Analyzer zum Aufspüren von Schwachstellen im Quellcode.

Zwischendurch waren wir auf der Microsoft Tech-Ed Developers 2008 in Barcelona, um vor Ort mit Intel-Spezialisten über das Thema Multicore-Programmierung Videochats zu führen, aber auch um mit Steve Teixeira von Microsoft über die Redmonder Bemühungen hinsichtlich paralleler Programmierung zu reden.

weiterlesen…

Kategorien : Multicore Tags : ,