Lernen von erfahrenen Programmierern – Teil 2

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

Am Mittwoch erst habe ich Auszüge eines Interviews mit eigenen Anmerkungen veröffentlicht, das die Kollegen des SoftTalk-Blog mit dem Software-Entwickler Asaf Shelly geführt haben. Im ersten Teil ging es vor allem um Fragen wie:

Was war deine größte Herausforderung beim Umstieg auf die Parallelprogrammierung?

Was ist ein guter Tipp für angehende Parallelprogrammierer?

Was bringen Sandy Bridge und AVX für parallel ablaufende Anwendungen?

Der zweite Teil hingegen befasst sich mit Fragen wie:

Welche Programmiermodelle werden sich durchsetzen?

Laut Asafs Aussage werden objektorientierte Programmiermodelle wie C++ zwar weiterhin bestehen, allerdings stoßen sie beim Parallelprogrammieren immer wieder an ihre Grenzen, da es sehr schwer ist, Tasks zu kontrollieren. Asaf glaubt, dass man in Zukunft auf der obersten Abstraktionsebene viel stärker in Tasks denken muss, um dann im weiteren Verlauf mit Objekten arbeiten zu können. Allerdings behebt auch diese Heransgehensweise nicht das Problem immer wieder auftretender Zufallsabstürze, wie man sie beispielsweise bei Borland C++ 5.0 beobachten kann. Fazit: neue Programmiermodelle müssen her! Und Tools wie der VTune Amplifier XE für das Aufspüren potenzieller Abstürze von parallel programmierten Anwendungen.

Welche Programmiersprachen bevorzugst du?

Asaf setzt für seine Programme – der ersten Frage zum Trotz – am liebsten noch auf C und C++ (für den Programmcode) und auf C# (für das Programmieren für Bedieneroberflächen). Zudem lassen sich beide Sprachen mithilfe von .NET-Wrappern prima innerhalb derselben Entwicklungsumgebung wie Visual Studio verwenden.

Was sollte man Studenten empfehlen, die sich mit dem Thema Parallelprogrammierung beschäftigen wollen?

Guter parallel programmierter Code beginnt bereits mit dem Design. Denkt also nicht seriell, sondern parallel! Gute Anwendungen müssen sogar parallel programmiert sein, da der Computer von Haus parallel arbeitet, da er ja auf mehrere Ereignisse aus unterschiedlichen Richtungen gleichzeitig reagieren muss. Um den seriellen Eingabestrang, dem wir immer noch unterworfen sind, aufzubrechen, sollte man laut Asaf mit Threads oder Thread-Pools arbeiten. Parallelprogrammierung beginnt also in den Köpfen und erfordert sehr viel Arbeit und Umdenken beim Einsatz bekannter Modelle.

Das vollständige Interview können Sie auf dem SoftTalk-Blog nachlesen (Teil 1 und Teil 2).

Kategorien : Multicore Tags : , ,

Lernen von einem erfahrenen Programmierer: Asaf Shelly

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

Die lieben Kollegen des SoftTalk-Blog haben einen Intel Black-Belter interviewt, namentlich Asaf Shelly. Asaf Shelly ist Software-Entwickler und arbeitet unter anderem am Thema Parallelprogrammierung. Darüber hinaus wird er auf dem Intel-Entwickler-Event teilnehmen, das am 10. Mai in München stattfinden wird. Grund genug, Teile des Interviews mit Asaf hier wiederzugeben.

Zudem möchten wir Sie an dieser Stelle noch einmal herzlich zu der exklusiven und kostenlosen Entwickler-Veransaltung einladen! Es sind nur noch wenige Plätze frei. Melden Sie sich am besten noch heute an!

Nun aber zu dem Interview: Eine wichtige Frage handelt von den Herausforderungen, mit denen Asaf in Sachen Parallelprogrammierung konfrontiert wurde. Dazu hat er eine ganz einfache Antwort parat: Der Umstieg war die größte Hürde, da es gar nicht so einfach war, parallel und nicht mehr seriell zu denken. So hatte er echte Schwierigkeiten, für kritische Code-Abschnitte einen Mutex anstatt eines Locks zu verwenden. Außerdem musste er beispielsweise erst mal lernen, dass ein Mutex nicht die kritische Sektion, sondern die betreffende Ressource, also die involvierten Speicherbereiche schützt.

Ein sehr schönes Bild hält Asaf auf die Frage bereit, was denn der beste Tipp in Sachen Parallelprogrammierung sei. Sein Antwort: Man muss wie Menschen und nicht wie Maschinen denken. Als konkreten Fall nennt er einen Schnellimbiss, bei dem mehrere Leute an mehreren Verkaufstheken gleichzeitig bestellen, und diese Bestellungen anschließend von verschiedenen Mitarbeitern des Restaurants bearbeitet und an die Kunden ausgegeben werden. Genau so verhält es sich nämlich mit asynchroner Datenverarbeitung mithilfe von Task-Queues, Worker-Threads und vielem mehr.

Interessant sind auch Asafs Antworten auf die Fragen, was Sandy Bridge und AVX für Entwickler tun können. So sieht er in der neuen Core-Architektur eine erhebliche Verbesserung für parallel programmierte Anwendungen, da aufgrund des Core-to-Core-Designs Daten schneller zwischen den einzelnen Prozessorkernen hin- und herfließen können, was die Zahl an Bottlenecks erheblich reduziert.

Als Beispiel führt er die Berechnung einer Aufgabe an, die ohne AVX vier Prozessorkerne mitsamt aller Sycnhronisationsalgorithmen erfordert. Mithilfe von AVX geschieht dies wegen der breiteren Register auf einem einzigen Prozessorkern, was natürlich viel zu besser handhabbar ist. AVX kann laut Asaf in bestimmten Fällen bis zu 16 Prozessorkerne eliminieren.

Die Fortsetzung des interssanten Interviews können Sie am Freitag hier lesen.

Kategorien : Multicore Tags : , ,

Rückschau: Das war das GameCamp Munich 2009

veröffentlicht von am 23. Juni 2009 (2) Kommentare
Intel mit eigenem Demo-PC auf dem GameCamp 2009

Foto: Simon Muhm - www.simon-muhm.de

Es soll ja Leute geben, die mit ihrem Wochenende etwas anzufangen wissen: Entweder gehen sie in die Berge zum Wandern oder besuchen Tante Ilse aufm Land oder machen sonst was. Und was mache ich?

Ich treibe mich lieber an zwei Tagen auf dem GameCamp Munich 2009 herum, das vorigen Samstag und Sonntag bei Microsoft in Unterschleißheim stattgefunden hat.

Jetzt mag sich manch einer fragen: GameCamp, was’n das?! Hierzu habe ich erst kürzlich etwas verfasst, was bei der Beantwortung dieser Frage weiterhelfen könnte. Insgesamt war das GCMUC09 eine gut gelungene Veranstaltung, die gemeinsam von Microsoft und Flobbymedia initiiert und organisiert wurde. Den Machern des Barcamps ging es vor allem darum

die interdisziplinäre Vernetzung der Branche, die Entwicklung neuer Thesen und Ideen sowie die Förderung der Videospielkultur

voranzutreiben. Ob ihnen das gelungen ist, kann ich nicht sagen. Aber am Ende waren wohl alle (sehr) zufrieden. Behandelt wurden unter anderem folgende Themen:

weiterlesen…

Kategorien : Multicore,Visual Computing Tags : , ,

Bücher und Webinar an Software-Entwickler zu verschenken

veröffentlicht von am 3. Februar 2009 (0) Kommentare

Über das Intel Software Partner Program (Intel SPP) hatte ich Ende Oktober ausführlich berichtet. Kurz gefasst geht es um die Möglichkeit, als Software-Entwickler von Intel in Sachen Programmierung unterstützt zu werden. Das reicht von vergünstigten Einkaufskonditionen für Software-Tools bis hin zur Möglichkeit, an professionell erstelltes Marketingmaterial heranzukommen.

Um am Intel SPP teilnehmen zu können, muss man sich natürlich erst mal registrieren. Logisch. Um dies ein wenig schmackhafter zu machen, verschenkt Intel derzeit 50 Exemplare des Buchs Multi-Core Programming, das ich übrigens auf meinem Schreibtisch liegen habe. Dabei handelt es um einen wirklich gelungenen Einstieg in das Thema und eine nützliche Wissensdatenbank für alle Entwickler. Also, ran an den Speck!

Apropos Speck: Software-Entwicklung für den relativ neuen Intel-Prozessor Core i7 ist noch kein echtes Mainstream-Thema. Zwar gibt es schon eine ganze Weile ein eigenes SDK, aber Experten auf diesem Terrain sind noch eher rar. Um diesen Umstand zu verbessern, bietet Intel am nächsten Dienstag (10. Februar, 17 Uhr MEZ) ein 60-minütiges Webinar genau zu diesem Thema an. Der Titel:

Create Applications with Superior Performance and Energy-Efficiency: An Introduction to the Software Development Kit for the new Intel Core i7 Platform

Das ist doch genau das Richtige für angehende Multicore-Entwickler, oder?! Und wie gesagt: Davon gibt es nicht so wahsinnig viele. Ach ja: Um an diesem internetbasierten Training teilnehmen zu können, muss man sich für das Intel Black Belt-Programm anmelden. Das ist allerdings ein Klacks – verglichen mit Multithreading für Multicore-Prozessoren.

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

12 Thesen und Antithesen zur Multicore-Programmierung

veröffentlicht von am 28. Januar 2009 (1) Kommentar

Gestern auf der OOP 2009 hielt Professor Walter F. Tichy von der Uni Karlsruhe einen Vortrag mit dem Titel “Herausforderung Mehrkernsysteme”. Darin beschäftigte er sich mit diversen Aspekten der Parallelprogrammierung. Und das zu Recht, denn das Thema scheint ein echter Renner zu sein; der Raum war auf jeden Fall gut gefüllt.

Im Laufe seines Referats stellte Professor Tichy mehrere Thesen in Sachen Parallelprogrammierung auf, die ich hier ein wenig aufdröseln will.

These #1: Die Informatik erlebt gerade eine Evolution: Weg von der sequenziellen Programmierung hin zur parallelen Entwicklung. Parallelität gab es bis dato nur in Nischenbereichen wie Numerisches Rechnen, Betriebssystemen und Datenbanken und Parallelität auf Instruktionsebene. Meine Antithese dazu: Stimmt!

These #2: Es gab immer wieder spezielle Parallelrechner wie den Atanasoff-Berry-Rechner von 1942, der ausschließlich lineare Gleichungen mit 30 Koeffizienten lösen konnte. Dazu gehörte aber auch der Illiac-IV, ein SIMD-Rechner mit verteiltem Speicher und 64 Prozessoren. Dieser Großrechner wurde 1976 gebaut und war bis 1981 der schnellster Rechner der Welt. Natürlich erwähnte Tichy auch den Cray-1 Vektorrechner, der ebenfalls aus dem Jahr 1976 stammt und wohl den bekanntesten Vertreter der prähistorischen Parallelrechner darstellt. Das Alles (und viel mehr) mündete schließlich in riesigen Clustersystemen der Gegenwart, die allesamt auf der Webseite Top500.org zu bestaunen sind. Meine Antithese dazu: Eine schöne Liste!

These #3: Es gibt neben Intel-CPUs wie Core 2 Quad oder Core i7 weitere Parallelprozessoren, die allerdings (beispielsweise die Grafik-CPU Geforce 8 von Nvidia) hauptsächlich für Spezialbereiche konzipiert sind. Meine Antithese dazu: Wie sagte erst kürzlich ein bekannter Chefentwickler zu mir: “CUDA und die angeblich enorme Rechenleistung der Geforce-GPUs ist vor allem eins: Marketing!”

These #4: Die Moore’sche Regel hat eine Variation erfahren, die wir an der Uni Karlsruhe sogar ein wenig verfeinern wurde: “Die der Anzahl Prozessoren pro Chip wird sich mit jeder Chip-Generation bei etwa gleicher Taktfrequenz verdoppeln”. Meine Antithese dazu: Ja, das sagt Intel auch. Dann wird es wohl stimmen …

These #5: Was sollen wir mit all den Kernen nur anfangen, die uns in Zukunft zur Verfügung stehen? Die Antworten lieferte Professor Tichy postwendend selbst: automatische Protokollführer; inhaltsbasierte Bildersuche mithilfe einer Datenbank; intuitive Schnittstellen mit Bild- und Sprachverarbeitung; vorausschauende Anwendungen, die “ahnen”, was der Benutzer will; Modellierung des Benutzers und der Umgebung; Erhöhung der Zuverlässigkeit (Redundanzen). Meine Antithese dazu: Wie wäre es mit weiteren Beispielen: Videoschnitt, Bildbearbeitung, 3D-Spiele, skalierende Betriebssysteme und Videoencoding, um nur einige zu nennen.

weiterlesen…

Kategorien : Multicore Tags : , ,

In der Parallelprogrammierung steckt die Zukunft!

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

Die Überschrift dieses Beitrags ist das Fazit eines sehr interessanten Artikels von Walter F. Tichy, seines Zeichens Professor für Softwaretechnik an der Uni Karlsruhe. In seinem Gastbeitrag auf Computerzeitung.de spricht er nämlich von der Herausforderung Multicore-Programmierung und den Chancen, die sich daraus ergeben. Dabei nennt er einerseits ein paar sehr wichtige Aspekte, andererseits vermisst er ein, zwei Dinge, die jedoch entgegen seiner Aussagen bereits existieren. Aber der Reihe nach.

Wichtig erscheint mir auf jeden Fall die Feststellung, dass “in Zukunft [...] Parallelrechner ungefragt und flächendeckend zur Verfügung stehen” werden. Ganz klar, das ist der Trend, und wenn man sich die Roadmap von Intel ansieht, wird schnell klar, dass der Core i7 nur der Anfang der Multicore-Ära ist.

Ebenso wichtig sind die potenziellen Multicore-Anwendungen, die Professor Tichy aufzählt: Dazu gehören natürlich Medienprogramme wie DivX und 3D-Spiele wie Crysis oder Sacred 2 (und Bildbearbeitungstools wie Silver Efex Pro von Nik Software). Aber auch weniger spektakuläre Anwendungen wie Logistikplaner, Tabellenkalkulation, Suchalgorithmen und Sicherheitsüberprüfungen profitieren vom Multithread-Code. Zusammengefasst könnte man mit Tichys Worten sagen:

Diejenigen Firmen, die jetzt die richtigen Anwendungen identifizieren und parallelisieren, werden in Zukunft zu den Gewinnern gehören, zumal Beschleunigung durch Abwarten – das heißt: das Setzen auf weiter steigende Taktfrequenzen – nicht mehr funktioniert.

weiterlesen…

Kategorien : Multicore Tags : , , ,

Entwicklergemeinde trifft sich auf der OOP 2009

veröffentlicht von am 13. Januar 2009 (0) Kommentare

Die Software-Entwicklergemeinde trifft sich vom 26. bis 30. Januar auf der OOP 2009 im ICM der Messe München. An fünf Tagen wird es um die ganze Bandbreite der (objektorientierten) Programmierung und Software-Entwicklung gehen. Namhafte Redner geben in Vorträgen und Workshops Auskunft darüber, wohin die Entwicklerreise geht. Zu den Highlight zählen unter anderem:

Daneben gibt es interessante Ganztagskurse, die am Montag und am Freitag stattfinden. Und wer es besonders lange mag, dem seien die “Night School Sessions” empfohlen.

weiterlesen…

Kategorien : Multicore Tags : , ,

Ausbildungslücken bei der Multicore-Programmierung

veröffentlicht von am 5. Dezember 2008 (0) Kommentare

Ein Interview auf Elektroniknet.de brachte mir eine fundamentale Erkenntnis: Die Multicore-Programmierung findet offensichtlich noch in einem zu geringen Ausmaß statt, da es nicht an Entwicklertools fehlt, sondern an Entwicklern, die damit umgehen können. Diese Theorie stellt zumindest Professor Klaus Kißig von der FH Kiel auf. Seine Kernthese dürfte die Ohren diverser Kollegen und Dekane anderer Bildungseinrichtungen zum Klingeln bringen:

Das Problem ist eher, dass es zu wenige Leute gibt, die die Kenntnisse haben, um diese Compiler effektiv anzuwenden und die Hardware optimal ausnutzen können.

Mit „diese Compiler“ meint er unter anderem Intel-Compiler, die ständig weiterentwickelt werden. Aber auch den Einsatz von OpenMP in Verbindung mit Standard-Compilern sieht er in diesem Kontext als großen Vorteil.

Das bedeutet also, dass es vor allem bei der Ausbildung hakt, da es die jeweiligen Einrichtungen bis dato offensichtlich noch nicht geschafft haben, neue Techniken wie Multicore-Systeme in den Vorlesungsplan zu integrieren.

weiterlesen…

Kategorien : Multicore Tags : , ,