Interview zur Parallelprogrammierung mit James Reinders

Seite 3: Trends

Inhaltsverzeichnis

heise Developer: Im Moment sind das Internet der Dinge und Big Data viel diskutierte Trends in der Entwicklerwelt. Meinen Sie, dass sie der parallelen Programmierung neuen Aufwind geben werden, da hier viel und schnell zu rechnen ist oder man mit den besonderen Einschränkungen der Hardware umgehen muss?

Reinders: Große Datenmengen sind das perfekte Einsatzgebiet für Parallelität. Betrachtet man Amdahls Gesetz, hat man immer das Gefühl, dass man nicht viel Beschleunigung bekommen kann. Aber dann gibt es auch Gustavsson, dessen Gesetz eigentlich nur eine andere Betrachtungsweise ist und sagt, dass die Beschleunigung durch das Mehr an Daten zustande kommt. Die Stärke der Parallelität entfaltet sich, wenn man mehr und mehr Daten bekommt, egal ob es durch das Internet der Dinge oder durch die Analyse großer Datenmengen geschieht oder höher aufgelöstes Videomaterial ist. Immer wenn ich also "mehr Daten" höre, denke ich, dass das perfekt für Parallelität ist – auch wenn man mehr Daten in der gleichen Zeit bearbeiten möchte, wie es bei kleineren Mengen möglich ist, ist es das perfekte Anwendungsbeispiel für Latenz und Durchsatz.

Es ist sehr schwer, ein eingeschränktes Problem zu nehmen und mit Parallelität zunehmend zu beschleunigen. Gibt es aber die Möglichkeit, es mit mehr Daten immer größer zu gestalten, ist es wesentlich einfacher, hier etwas zu beschleunigen.

heise Developer: Was sind Ihre liebsten Werkzeuge und Konzepte in der Szene der parallelen
Entwicklung?

Reinders: Ich denke zuerst nie wirklich an Tools, aber lassen sie mich erklären, was mir immer als Erstes in den Sinn kommt. Ich bin sehr von Algorithmen und den Einsatzmöglichkeiten von Parallelität fasziniert. Zum Beispiel gibt es in der Wettervorhersage etwas, was sich Ensemble-Voraussage nennt. Ich bin immer davon ausgegangen, dass man das Modell für die Prognosen verbessern könnte, indem man mehr Rechenkapazität zur Verfügung stellt. Aber die Leute dort hatten eine andere Idee: Ihren Voraussagen liegt ein Satz von Daten zugrunde, mit denen man abschätzt, wie das Wetter in zwei Tagen wird. Das System ist allerdings sehr von den Eingabewerten abhängig. Die Leute, die die Berechnungen durchführen, wissen nun also, dass es ein bestimmtes Fehlerspektrum beim Input gibt, das das Ergebnis stark verändern kann. Sie haben folglich eine ganze Wissenschaft daraus gemacht, die Voraussagen mit variierenden Eingaben durchzuführen und zu beobachten, ob sich die Prognose dadurch ändert. Sie lassen also den ganzen Vorhersageprozess mit unterschiedlichem Input laufen (Ensemble von Berechnungen), und wenn alle zum Ergebnis kommen, dass in zwei Tagen schönes Wetter für ein Picknick und einen Parkspaziergang ist, sind sie zufrieden.

Manchmal gehen die Prognosen aber stark auseinander – für mich ist das ein sehr interessantes Einsatzsszenario für Parallelität und Berechnungsleistung. Ich sehe viele Einsatzmöglichkeiten dafür, indem man Berechnungen mehrmals unter unterschiedlichen Bedingungen ausführt, um ein sehr komplexes Ergebnis zu erreichen.

Algorithmen faszinieren mich einfach. Es gibt derzeit wirklich viel Innovation in der Anwendungsentwicklung. Es geht nicht nur darum, Programme zu beschleunigen, sondern auch darum, wie man die zur Verfügung stehende Leistung nutzen kann, um Sachverhalte anders anzugehen. Aber auch Modelle, für Mehrkörperprobleme zum Beispiel, werden zunehmend genauer. Das Lustige ist, dass viele Wissenschaftler sagen, dass sie ihr ganzes Berechnungsmodell mit einem anderen Algorithmus umgesetzt haben, der deutlich genauer ist. Eigentlich sind sie es gewohnt abzuschätzen, und durch die besseren Modelle finden sie heraus, dass ihre Schätzungen gar nicht so gut waren, wie sie es angenommen hatten. Wenn ihnen jetzt also mehr Leistung zur Verfügung steht und sie ihre Modelle verbessern können, ist das aufregend. Sie können so nicht nur schnellere, sondern auch genauere Berechnungen durchführen, die vielleicht sogar dazu führen, dass es in der Wissenschaft mehr Durchbrüche gibt. Und das alles nur, weil wir ihnen bessere Werkzeuge an die Hand geben können.

Ich bin einfach begeistert davon, dass Werkzeuge wie Parallelität dafür sorgen können, dass Wissenschaftler in der Lage sind, ihre Forschung voranzubringen. Ob es dabei nun um die Erfindung von Medikamenten, die Verbesserung der Wettervorhersage oder das Abwehren von Katastrophen geht.

heise Developer: Entwickler lieben Programmiersprachen und sind an deren Umsetzung von Nebenläufigkeit und Parallelität interessiert. In welcher der jüngeren Sprachen sehen sie die beste Umsetzung?

Reinders: Das lässt sich schwer sagen, da so viel in der Industrie von C, C++ und Fortran abhängt. Offensichtlich sind TBB und OpenMP sehr wichtig, aber man sieht auch an anderen Stellen Innovation. Julia beispielsweise hat das Interesse vieler Entwickler geweckt. Das wäre wahrscheinlich die Sprache mit den meisten neuen Ideen in dem Kontext. Sie hat angeregt, über einige Probleme anders nachzudenken. Ich kann nicht abschätzen, ob es eine wichtige Sprache wird in dem Sinn, dass sie viele Leute nutzen werden. Über die Zeit gab es schon viele Hunderte Programmiersprachen, die sich nicht wirklich verbreiten konnten, die aber einen starken Einfluss auf die Denkweise der Leute hatten. Ich weiß also nicht, wie beliebt Julia auf lange Sicht sein wird, aber sie wird zumindest das Denken verändern.

heise Developer: Vielen Dank für das Gespräch, Herr Reinders.

Das Gespräch führte Alexander Neumann auf Intels Software Conference 2015 (ISTEP), die Transkription und Übersetzung hat Julia Schmidt. übernommen. Beide sind Redakteure von heise Developer. (ane)