In den Räumlichkeiten der IHK Karlsrunde fand heute der erste Tag der „parallel 2012“ statt, einer Konferenz, die sich mit Parallel-Computing auseinander setzt.
Die Keynote von Prof. Walter F. Tichy eröffnete die Konferenz mit einer Keynote zum Thema, in dem die Grundlagen von Betriebssystemen und Parallelprogrammierung wiederholt wurden. Er ging dabei auch auf typische Probleme der parallelen Verarbeitung ein. Ein wirklich erfrischender Vortrag, der auch durch das konsequente Verzichten auf Anglizismen (z.B. „Faden“ anstelle von „Thread“, „Halde“ anstelle von „Heap“, …) auffiel 🙂 Das Erstellen eines Indexers, der schrittweise parallelisiert wurde, zeigte einige Problem mit Sperren eindeutig. Das war mir so nicht immer bewußt.
Nach einem üppigen Frühstücksbuffet ging es dann weiter mit einem Vortrag von Oliver Denninger, der typische Fehler in der Parallelprogrammierung anhand populärer Open Source Projekte wie Mozilla Firefox, Jetty oder MySQL analysierte. Dabei wurden Einträge aus den Bugzilla-Datenbanken herangezogen, das Problem am Code gezeigt und die entsprechende Lösung im Code (in Folien) erklärt. Aus den gemachten Fehlern kann man sehr viel lernen – zum Glück waren es nicht meine 😉
Nach einem kurzen Raumwechsel habe ich mir den Vortrag von Dr. Patrick Peschlow zum Thema „Multithreading in JVM“ angeschaut. Als ehemaliger Java-Entwickler wollte ich mich mal über die aktuelle Entwicklung informieren. In Java ist ja echt viel passiert! Besonders interessant war ein Tool namens „Java Concurrent Animated“ (http://sourceforge.net/projects/javaconcurrenta/), das das wirken einzelner Multithreading-Algorithmen visuell aufbereitet zeigte:
(Quelle: http://sourceforge.net/projects/javaconcurrenta/screenshots/217571)
Nach der Mittagspause hörte ich den Vortrag zum Thema „Concurrency im neuen C++11-Standard“ von Detlef Vollmann. Herr Vollmann vertritt im ISO-Gremium für C++ die Schweiz und hat wirklich wirklich Ahnung von der Sache. Die wichtigste Erkenntnis das Tages kam gleich zu Beginn: Parallel ist nicht Multithreading!
Die Programmierung unterscheidet sich darin, dass Multithreading meist nur auf einer CPU mit einem dedizierten Speicher stattfindet. Parallel Programmierung findet bei mehreren CPUs mit mehreren Kernen statt, die zum einen eigenen eigenen Cache und einen gemeinsamen Speicher haben können. Dann kommen ganz andere Probleme wie Aktualisieren von Variablen im Cache mittels Sperren, volatile etc. zum Tragen. Das sind dann keine trivialen Probleme mehr wie ich selbst feststellen musste.
C++ unterstützt nun auch Lamda-Expressions, async-Keyword, Delegates und Futures. Teilweise sah die Verwendung schon ziemlich elegant aus. Sobald ich den Source-Code von Herrn Vollmann habe, werde ich mal mehr dazu testen.
Der nächste Vortrag war zum Thema „Clojure“ in Java. Diese Lisp-ähnliche Sprache konnte ich zwar am Ende des Vortrags lesen aber definitiv noch nicht selbst schreiben. Clojure ist ein Thema, dem ich mich bei Gelegenheit mal widmen will – Allerdings vorerst nicht in Java, sondern in .NET. Eine entsprechende Portierung scheint es ja schon zu geben. Mich würde vor allem das Geschehen hinter den Kulissen interessieren und ich erhoffe mir vom Reflector dann „Aufklärung“ 🙂
Der letzte Vortrag des Tages ging um „Numerobis Multicoris – Entwurfsmuster und Datenstrukturen für parallele Programm“ von Dr. Tobias Schüle. Das war wirklich der Vortrag, aus dem ich das meiste für meine tägliche Arbeit mitnehmen kann. Urs Gleim und er haben auch ein entsprechendes Buch zum Thema „MultiCore Programmierung“ geschrieben. Morgen findet eine Verlosung dazu statt. Falls ich es nicht gewinne, werde ich es mir kaufen. Es wurden anhand von Folien zuerst die Grundlagen gezeigt und dann am C++-Code mit Intel Threading Building Blocks, OpenMP usw. die Praxis gezeigt. Wirklich sehr schön! Der Raum war auch entsprechend voll:
Den Abschluss des heutigen Abends machte eine Podiumsdiskussion mit Prof. Walter F. Tichy, Václav Pech, Tim Mattson und Jerry Higgins:
Urs Gleim leitete die Diskussionsrunde, die zwar auf englisch gehalten wurde aber viele Kontroversen diskutierte wie beispielsweise die Frage: wie wird in 10 Jahren entwickelt werden? Welche Programmiersprachen werden überleben oder sich weiterentwickeln? Prof. Walter F. Tichy meinte, dass in 10 Jahren die gleichen Programmiersprachen existieren werden, denn Entwickler hassen nix mehr, als eine neue Sprache zu lernen. Es wird Erweiterungen und Bibliotheken geben, die die Sprachen verbessern werden. Konstruktive Kontroversen gab es immer wieder zwischen Prof. Walter F. Tichy und Tim Mattson, die sehr unterhaltsam waren.
Mit dem Flammkuchen und ein paar Bierchen klang ein toller Konferenztag dann aus:
Ich freue mich schon auf weitere interessante Vorträge morgen.