Live-Berichterstattung von der dotnet Cologne 2011 – Teil 3

veröffentlicht von am 6. Mai 2011 (0) Kommentare
Intel-Ausstellungsbereich mit Florian und Monika

Intel-Ausstellungsbereich mit Florian und Monika

Und nun zu den Developer-Tools, die jeder Parallel-Programmierer kennen sollte. Zumindest deren Unterschiede, Stärken und Schwächen, denn so fällt es nicht nur leichter, sich für das richtige Werkzeug zu entscheiden, sondern auch Fehler im Code zu minimieren. Aber natürlich lassen sich die Tools im Einsatz auch kombinieren.

Merken Sie sich auf jeden Fall diesen Namen: Parallel Building Blocks. Denn diese Toolsuite vereint drei der wichtigsten Werkzeuge für Parallel-Programmierer: Cilk Plus, Threading Building Blocks (TBB) und die neuen Intel Array Building Blocks (ArBB), die derzeit noch in der Beta-Phase sind.

Cilk und Intel Array Building Blocks (ArBB) werde ich hier näher vorstellen.

Cilk Plus

Cilk Plus ist unbestritten das einfachste Tool und auch für Einsteiger sicher gut geeignet. Streng genommen sind sich Cilk und OpenMP recht ähnlich. Beide produzieren schnellen, parallelen Code ohne viel Overhead. Und beide werden von Intel Compilern unterstützt. Das gilt im Übrigen auch für OpenMP in der Version 3. Es gibt aber auch gravierende Unterschiede, die Cilk für Entwickler deutlich attraktiver machen als OpenMP.

Das beginnt schon bei der Bedienung. Wer sich jemals mit Cilk auseinandergesetzt hat, wird sich an das Schlüsselwörter-Prinzip erinnern. Mit den drei Kommandos cilk_spawn, cilk_sync, cilk_for erledigen Sie die wichtigsten Aufgaben im Code. Dabei kontrolliert die Cilk Plus Runtime die Threads und deren zeitliche Ausführung. Gerade dieser sehr zuverlässige Cilk Runtime Scheduler hebt sich wohltuend von OpenMP ab. Die Zahl der Threads im Code wird hierbei automatisch den vorhandenen Prozessorkernen angepasst. Der Entwickler kann dies aber auch korrigieren, wenn er das möchte.

Auch auf Data Races hat Cilk Plus eine Antwort. Natürlich lassen sich Variablen auch mit der Mutex-Methode schützen, aber Cilk Plus geht hier deutlich eleganter vor, indem es Hyperobjects nutzt. Das sorgt für eine deutliche bessere Performance.

Herauszuheben sind last but not least die Array Notations in Cilk Plus. Darüber freut sich der Compiler, der Vektoranweisungen viel besser verarbeiten kann als Schleifen. Weitere Infos gibt es übrigens auf der sehr guten Seite www.cilk.com.

Intel Threading Building Blocks (TBB)

Die Intel Threading Building Blocks (TBB) bieten eine C++-Laufzeitbibliothek und sind als Open Source oder per Compiler verfügbar. Sie sind plattform- und sprachenunabhängig und adressieren vor allem fortgeschrittene Developer. Mit anfängertauglichen Parallelfunktionen wie „parallel_for“ statt „for“ werden die TBB aber auch zunehmend für Einsteiger interessant.

Intel Array Building Blocks (ArBB)

Die jüngste Sprössling der Parallel Building Blocks heißt Intel Array Building Blocks (ArBB).
Vereinfacht ausgedrückt erledigen die ArBB folgenden Job für Code in C++: Sie parallelisieren und optimieren nativen Code, und zwar genau für die Hardware, für die er konzipiert wurde und geben den Code an den Compiler zurück.

Vorteil für den Entwickler: Er muss den Code auch für unterschiedliche Pattformen nur ein einziges Mal schreiben, kann ihn mit ArBB neu kompilieren und dann automatisch auf die Ziel-Hardware ausrichten. Wer es selber ausprobieren möchte: ArBB steht als Beta zum kostenlosen Download bereit.

So, das war’s aus Köln. In der nächsten Woche werde ich wieder live berichten – dann vom ISN Black Belt Event in München. Schönes Wochenende!

Kategorien : Multicore Tags : , , , , ,

Intel Software Conference 2011 (I) – Erste Eindrücke und Ausblicke [Upd]

veröffentlicht von am 12. April 2011 (0) Kommentare

Vor wenigen Stunden ist die Intel Software Conference 2011 in Dubrovnik gestartet. Für die wohl wichtigste Intel-eigene, europaweite Veranstaltung für Reseller und Software-Entwickler wurde eine wunderbare Location direkt am Meer mit Blick auf die Altstadt von Dubrovnik ausgewählt. Wohl dem, der die Möglichkeit hat, hier noch ein paar Tage Urlaub dranzuhängen. Ich werde später ein paar Bilder einstellen, die hoffentlich die tolle Atmosphäre rund um die Konferenz rüberbringen.

Kaffeepause

Nun aber zum Inhalt der Konferenz: Zu Beginn hat Aaaron Coday, Intel-Experte für Visual Computing, Graphics and Gaming, einen erweiterten Überblick zu den aktuellen Prozessorgenerationen gegeben und die Vorteile für Entwickler verdeutlicht. Eine kleine “Überraschung” zu Beginn: Von „Sandy Bridge“ will Intel künftig nicht mehr sprechen, sondern nur noch von der offiziellen Bezeichnung „2nd Generation Intel Core Processor Family“. Das finde ich ein „bisschen“ sperrig und bleibe dann doch lieber bei der geläufigen Bezeichnung „Sandy Bridge“.

Sandy Bridge ist zu Beginn des Jahres mit den Zielen gestartet, energieeffizienter zu arbeiten, mehr Leistung bereitzustellen (nicht nur, aber vor allem für grafisch anspruchsvolle Anwendungen) und Multimedia-Inhalte wie Videos schneller und besser zu en- und dekodieren, indem das Preprocessing und Encoding nicht mehr software-basiert, sondern von der Hardware vorgenommen wird.

Aus Developer-Sicht ist in diesem Zusammenhang auch die Bedeutung des Intel Media SDK hervorzuheben. Es gibt Codeschreibern die Möglichkeit, über nunmehr nur noch eine API auf die optimierten Libraries des Intel Compilers zuzugreifen und Videos damit schneller und vor allem einfacher zu berechnen.

Aaron verdeutlichte, dass der SSE-Nachfolger AVX mit der doppelten Registerbreite (nun 256 Bit gegenüber 128 Bit bei SSE 4.0) sowohl Spielern als auch Game-Programmierern deutlich mehr Komfort und Möglichkeiten eröffnet. So lassen sich grafisch sehr anspruchsvolle Spiele auch auf ressourcenschwachen Netbooks flüssiger abspielen, weil dank AVX die einzelnen Bilder schneller geladen und synchronisiert werden. Zu diesem Thema habe ich ja in der Vergangenheit ebenfalls sehr ausführlich berichtet.

Interessant in diesem Zusammenhang: Aaron prophezeite, dass schon im übernächsten Jahr die Zahl der Single-Core-Systeme fast auf null sinken werde, hingegen werde jeder zweite, weltweit eingesetzte PC vier oder mehr Prozessor-Kerne besitzen.

Einen Blick in die Zukunft wagte auch James Reinders in seinem Vortrag über „Software Ecosystems“. Im kommenden Jahr werde Intel eine Reihe neuer Tools veröffentlichen, die den aktuellen und kommenden technischen Standard der Prozessortechnologie berücksichtigen und damit bereits auf Knight Ferry/Knighs Corner ausgerichtet werden. Dazu gehören:

Am morgigen Mittwoch werde ich ein Video-Interview mit James Reinders führen und sicherlich noch das eine oder andere Detail zu den künftigen Tools erfahren.

Update: Das Videointerview mit James steht ab sofort zum Anschauen bereit.

Kategorien : Multicore Tags : , ,

TechEd09: Wie die CCR .NET-Entwicklern bei der Parallelprogrammierung hilft

veröffentlicht von am 12. November 2009 (1) Kommentar

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.


weiterlesen…

Kategorien : Multicore Tags : , , ,

Videochat: Die Zukunft der Parallelprogrammierung

veröffentlicht von am 11. November 2009 (0) Kommentare

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!

Kategorien : Multicore Tags : , ,

Videochat: Wie .NET-Entwickler von Multithreading profitieren

veröffentlicht von am 11. November 2009 (1) Kommentar

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!

weiterlesen…

Kategorien : Multicore Tags : , , ,

Intel-Session “Parallel Studio” und eine Netbook-Verlosung

veröffentlicht von am 10. November 2009 (2) Kommentare

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!

Kategorien : Multicore Tags : , , ,

Videochat mit Steve Teixeira über Parallelprogrammierung

veröffentlicht von am 10. November 2009 (2) Kommentare

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.

Kategorien : Multicore Tags : , , ,

TechEd09: Erste Videoeindrücke aus Berlin

veröffentlicht von am 9. November 2009 (1) Kommentar

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!

Kategorien : Multicore Tags : , , , ,

TechEd09: Die Show kann beginnen

veröffentlicht von am 9. November 2009 (1) Kommentar

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.

Kategorien : Multicore Tags : , ,

IDF09: Parallel Computing mit .NET 4 und Visual Studio 2010

veröffentlicht von am 23. September 2009 (0) Kommentare

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!

weiterlesen…

Kategorien : Multicore Tags : , ,

IDF09: Techsession “Software-Tools für skalierende Apps”

veröffentlicht von am 22. September 2009 (0) Kommentare

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.

weiterlesen…

Kategorien : Multicore Tags : , ,

GCMUC09: 3D-Games und Multicore-Programmierung

veröffentlicht von am 21. Juni 2009 (3) Kommentare

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).

Kategorien : Multicore,Visual Computing Tags : , , ,

prio.powerday: Microsoft Concurrency Coordination Runtime

veröffentlicht von am 23. April 2009 (0) Kommentare

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.

Kategorien : Multicore Tags : , , ,

prio.powerday: Parallele Programmierung unter .NET 3.5

veröffentlicht von am 23. April 2009 (0) Kommentare

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:

  • 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.

weiterlesen…

Kategorien : Multicore Tags : , , ,

prio.powerday: Multithreading mit .NET-Bordmitteln

veröffentlicht von am 23. April 2009 (0) Kommentare

Und weiter geht’s. Bernd und Ralf gehen jetzt näher auf das Thema Multithreading mit .NET-Bordmitteln ein. Hierbei gibt es verschiedene Aspekte:

  • Statisches Threading birgt vor allem ein Problem: Es gibt statische Variablen, die von mehreren Threads gleichzeitig schreibend genutzt werden können.
  • Threading mit instanzierten Klassen: Jeder Thread hat seine eigene Instanz, also zum Beispiel seine eigenen Variablen, was natürlich ein wenig mehr Ressourcen kostet.
  • Steuerung von Threads: Hierbei geht es um die Priorisierung von Threads sowie das Starten, Pausieren und Stoppen von Threads. Die Herausforderung ist hier der jeweils richtige Zeitpunkt, ein Thread zu manipulieren. Außerdem muss man feststellen können, ob ein Thread gewollte beendet wurde. Dies kann per Bool’scher Variable erreicht werden.

weiterlesen…

Kategorien : Multicore Tags : , ,

prio.powerday: Einführung in die parallele Programmierung

veröffentlicht von am 23. April 2009 (0) Kommentare

Jetzt sind mit kaum einer halben Stunde Verspätung Ralf Westphal und Bernd Marquardt dran. Sie wollen uns erst mal erzählen, was parallele Programmierung eigentlich bedeutet.

Zunächst geht es um echte Basics wie Multithreading mit Single- und Multicores. Fakt ist: Multithreading allein bringt gar nichts, dafür sind mehrere Prozessoren und die Zerlegung eines Programms in parallel zu verarbeitenden Bereiche notwendig.

Eine weitere Herausforderung sind Latenzzeiten, die sich aus asynchroner Prozessorverarbeitung ergeben. Das lässt sich mithilfe einer Kombination aus Multithreading und Multitasking auf mehreren Prozessoren optimieren.

Es gilt aber zugleich, den Durchsatz zu erhöhen. Dies gelingt ausschließlich auf Multicore-Systemen.

Es gibt ein grundsätzliches Problem bei der Parallelverarbeitung: den Zugriff auf gemeinsame Ressourcen. Diese Herausforderung meistern Zugriffskontrollen mithilfe explizierter Sperren. Hierfür sperren zum Beispiel einzelne Tasks gemeinsamen Speicher. Allerdings müssen die Zeitspannen und die Granularität dieser Sperren genau passen. Ein große Gefahr hierbei sind übrigens mögliche Deadlocks, die gerade bei parallel programmierten Anwendungen erst zur Laufzeit auftreten. Deadlocks lassen sich durch dieselbe Sperrreihenfolge vermeiden.

weiterlesen…

Kategorien : Multicore Tags : , ,

prio.powerday: Multicore-Programmierung unter .NET

veröffentlicht von am 23. April 2009 (0) Kommentare

Kaum dass ich aus Salzburg zurück bin, sitze ich hier im Konferenzhaus in der Lazarettstraße, München, und nehme an der Multicore-Konferenz für .NET-Entwickler teil, die im Rahmen der prio.powerdays stattfindet.

Den Anfang macht Rami Radi von Intel, der die Einführungsrede hält und die Anwesenden auf das Thema Multicore einstimmen will.

Rami beginnt seinen Vortrag mit Hardware, nicht mehr Software. Namentlich spricht er über den Core i7-Prozessor, der ja im höchsten Maße multithreading-tauglich ist. Core i7 verarbeitet nämlich pro Prozessorkern zwei Threads simultan.

Die nächste Folie zeigt die ganze Vielfalt der Intel-Entwicklertools, über die ich hier schon ausführlich berichtet habe, also über Compiler, VTune etc.

So, jetzt wird’s ernst. Rami spricht über die Parallelprogrammierung im .NET-Umfeld, was seiner Meinung nach nicht einfach ist (wären wir sonst hier?). Zu den Herausforderungen gehören unter anderem falsch genutzter Speicher, zu viele und zu wenige Threads, gemeinsam genutzte Speicherbereiche, Load Balancing und viele andere. Wie gut, dass es für diese “Issues” die passenden Tools gibt wie den VTune Performance Analyzer.

weiterlesen…

Kategorien : Multicore Tags : , ,

ISC’09: die Zukunft der parallelen Programmierung

veröffentlicht von am 21. April 2009 (1) Kommentar

Wie im richtigen Leben gehört dem Chef das letzten Wort. Daher kommt James Reinders nochmals auf die Bühne und wagt einen Blick in seine Glaskugel.

Status quo aus Intel-Sicht sind die HPC-basierten Tools der Gegenwart, die permanent weiterentwickelt werden. Daneben wird es sehr bald (wohl im Mai) Parallel Studio geben für den Mainstream-Entwickler. Und drittens sind die vorhandenen Tools einer ständigen Evolution unterworfen (so kommt ein verbesserter Compiler irgendwann im Juni auf den Markt).

Die Evolution des Parallel Studio umfasst folgende Dinge:

  • der Parallel Advisor wird wichtiger Bestandteil der Suite
  • beste Kompatibilität mit Windows 7 und Visual Studio
  • Unterstützung der nächsten Microsoft Concurrency Runtime
  • Ergänzungen (was immer das bedeutet)

Den dritten Teil seines Vortrags leitet James mit einem Traum ein:

If you focused on “data parallel programming”, could you make it easier for the program to be deterministic and scale?

weiterlesen…

Kategorien : Multicore Tags : , , ,

ISC’09: Intel Parallel Amplifier im Detail

veröffentlicht von am 21. April 2009 (0) Kommentare

So, genug genetzwerkt, jetzt wird es wieder ernst auf der Intel Software Conference 2009 in Salzburg. Vor der Pause hat Akyil Levent eine Menge über Parallel Inspector erzählt, jetzt ist er mit Parallel Amplifier dran.

Ein sehr schöner Einstieg in das Thema Tuning ist folgendes Zitat: “Ich weiß, wie ich vier Pferde dazu bringe, einen Wagen zu ziehen. Wie aber geht das mit 1024 Hühnern?” Das ist eine wirklich passende Analogie zur Optimierungsarbeit beim parallelen Programmieren. Denn es gibt so viele Fallen, in die man beim Multithreading tappen kann: nicht-skalierender Code, Deadlocks oder Data Races zur Laufzeit und vieles mehr.

Dafür gibt es den Parallel Amplifier, der Flaschenhälse findet, die Skalierbarkeit der Anwendung ermittelt und mehr. Es hilft also Entwicklern und Programmierern, die parallele Struktur und das parallele Verhalten ihrer Anwendung besser zu verstehen.

Wie schon der Composer und Inspector, integriert sich Parallel Amplifier in Visual Studio und findet folgende Probleme:

  • Wo verbraucht meine Anwendung die meiste Zeit?
  • Wann gehen die Prozessoren in den Idle-Modus?
  • Wo gibt es ungewollte Wartezeiten?

Sobald Amplifier die möglichen Fehler gefunden hat, lassen sich die entsprechenden Quellcode-Stellen per Mausklick öffnen und auf die Fehler hin überprüfen.

weiterlesen…

Kategorien : Multicore Tags : , , ,

ISC’09: Intel Parallel Inspector im Detail

veröffentlicht von am 21. April 2009 (0) Kommentare

Nach Heinz Basts sehr interessantem Beitrag über Parallel Composer ist Levent Akyil von Intel dran, um zunächst über Parallel Inspector zu reden, später dann über Parallel Amplifier.

Parallel Inspector ist, einfach gesagt, eine Kombination aus Threading- und Speicher-Checktool, und das sogar “proaktiv”. Proaktiv bedeutet in diesem Zusammenhang eine Fehlersuche zur Laufzeit der Anwendung. Darüber hinaus integriert sich der Inspector in Visual Studio und macht damit die Bedienung ziemlich einfach. Der Programmierer muss sich nur für eine der beiden Optionen entscheiden: Finde Threadfehler oder Speicherfehler.

Speicherfehler: Hier geht es um so unschöne Dinge wie Memory Leaks, Speicherüberläufe und Zeigerprobleme. Schön daran ist die Möglichkeit, irrelevante gefundene Probleme auszublenden. Dies macht das Aufspüren der wichtigen Fehler einfacher.

Threading-Fehler: Stichworte sind Deadlocks, Data Races und andere Synchronisationsprobleme, und das zur Laufzeit der Anwendung. Auch hier lassen sich unwichtige Probleme direkt ausblenden.

weiterlesen…

Kategorien : Multicore Tags : , , ,