Interview zur Parallelprogrammierung mit James Reinders

Entwickler, die nach Möglichkeiten suchen, ihre Programme zu beschleunigen, können durch die Parallelisierung ihres Codes häufig gute Erfolge erzielen. Der Hype mag vorbei sein, allerdings sind Multicore-Architekturen allgegenwärtig. Ein Gespräch mit James Reinders, Director and Chief Evangelist bei Intel.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 18 Min.
Von
  • Alexander Neumann
Inhaltsverzeichnis

James Reinders hielt eine Keynote auf Intels ISTEP-Konferenz

Entwickler, die nach Möglichkeiten suchen, ihre Programme zu beschleunigen, können durch die Parallelisierung ihres Codes häufig gute Erfolge erzielen. Der Hype mag vorbei sein, allerdings sind Multicore-Architekturen allgegenwärtig, weshalb es sich lohnt, sich mit dem Thema zu beschäftigen. Ein Gespräch mit James Reinders, Director and Chief Evangelist bei Intel.

heise Developer: Linus Torvalds meinte Ende 2014, dass die parallele Programmierung keine Zukunft habe und diese statt dessen eher in größeren Caches zu finden sein. Sie hingegen sagten schon vor ein paar Jahren, dass parallele Programmierung von Dauer sei und so schnell nicht verschwinden würde. Sind Sie nach wie vor dieser Meinung?

Mehr Infos

Porträt

James Reinders ist seit 1989 bei Intel tätig, wo er derzeit unter anderem als Parallel Programming Evangelist unterwegs ist. Über die Jahre war er in Projekte wie die Entwicklung des ersten teraFLOP-Supercomputers ASCI Red und Systeme wie WARP und iWarp, die mit systolischen Arrays arbeiten, involviert. Darüber hinaus hat er einige Bücher zu Themen wie Threading Building Blocks (TBB) und strukturierter Parallelprogrammierung verfasst.

James Reinders: Es verwundert mich nicht, dass Linus so etwas von sich gegeben hat. Er ist ein kluger Mann, und ich verstehe, warum er das gesagt hat. Ich denke, es war seine Reaktion auf ein allgemeines Gefühl, einen allgemeinen Hype. Doch letztlich muss sich jeder irgendwann mit Parallelisierung befassen, die parallele Programmierung wird nicht einfach verschwinden.

Ich denke, dass Computer erst nach und nach zum Rest unseres Lebens aufschließen können. Wir machen vieles gleichzeitig, und Computer konnten das bisher nicht. Sie sind gerade erst dabei, hier aufzuholen. Parallelität ist in so vielen Kontexten wichtig. Das Telefon oder das Laptop oder eigentlich egal welche Art von Computer wird parallel arbeiten. Selbst wenn man sich das Internet der Dinge betrachtet oder Telefone, die mit der Cloud verbunden sind, gibt es dort Parallelität.

Softwareentwickler müssen demnach Parallelität und Nebenläufigkeit verstehen genauso wie die damit verbundenen Herausforderungen. In Zukunft müssen sich wahrscheinlich mehr Leute gut damit auskennen, weil wir Programme für all diese unterschiedlichen Geräte entwickeln wollen. Einige werden in der Lage sein, die nötigen Tools bis ins Detail zu beherrschen und das beste aus ihnen herauszuholen, andere werden hingegen einfach zur Kenntnis nehmen, dass wir in einer Welt der Parallelität leben.

heise Developer: Jedoch trügt wohl nicht das Gefühl, dass das Interesse an Parallelisierung in den letzten Jahren etwas zurückgegangen ist. Der Hype ist abgeflacht, obwohl sich doch eigentlich mehr Leute gewinnbringend damit auseinandersetzen könnten, wenn man die Vielzahl von Geräten und Ähnlichem ansieht.

Reinders: Es ist jetzt etwa zehn Jahre her, dass Herb Sutter seinen Aufsatz "The free lunch is over" veröffentlicht hatte. Intel hatte damals den ersten x86-Prozessor mit zwei Kernen auf den Markt gebracht. Damals wollten die Leute jedoch Herbs Mahnung nicht wahrhaben. Sie dachten, dass mehrere Kerne nur eine Modeerscheinung seien und man bald wieder nur mit einem arbeiten würde. Heute glaubt das keiner mehr. Jeder scheint zu wissen, dass Parallelität Teil der Entwicklerlandschaft
ist. Selbst Linus! Um noch einmal darauf zurückzukommen, ich glaube, er reagierte einfach nur auf eine Bewegung und wollte verdeutlichen, dass es andere Dinge gibt, um die sich die Leute statt der Parallelisierung Gedanken machen sollten. Der Hype ist sicherlich vorüber und Parallelisierung Teil des Alltags geworden.

heise Developer: Für wie wichtig halten Sie die Parallelprogrammierung in diesem Alltag?

Reinders: Für mich ist sie unglaublich wichtig. Es gibt zwar Leute, die noch nie mit Parallelisierung zu tun hatten, und es ist durchaus interessant, denen etwas darüber beizubringen, aber selbst Menschen wie ich, die sich schon ewig damit befassen, haben noch viel zu lernen. Die Herausforderungen sind einfach andere, wenn man ein leistungsfähiges, parallelisiertes Programm für tausend Kerne schreiben will und nicht für zwei oder vier.

Letztes Jahr hatte ich die Gelegenheit, bei zwei Bootcamps vor Studenten aus ganz Amerika Vorträge zu halten. Sie haben mehr Abstand zur Art und Weise der heutigen Parallelprogrammierung und erkennen gleich all das, was wir falsch machen, wenn wir die Parallelprogrammierung in die Zukunft überführen wollen. Viele Probleme drehen sich etwa darum, dass wir zu viel Speicher teilen, es gibt zu viele Barrieren, und auch bei der Synchronisation gibt es Verbesserungspotenzial. Ich konnte viele interessante Gespräche darüber führen, wie man anders an die Parallelisierung herangehen und neue Algorithmen und Techniken ausprobieren kann, mit denen sich besser skalieren lässt.

Es ist wie bei jeder Art von Programmierung: Alles ist im Fluss, und so, wie wir heute an die Parallelisierung herangehen, werden wir diese Aufgabe in Zukunft wahrscheinlich nicht mehr angehen. Der Hype ist vorbei, aber es gibt nach wie vor jede Menge zu lernen. Das ist mir sehr wichtig und trägt sehr dazu bei, dass das Thema spannend bleibt. Je mehr Geräte wir bauen, die sich für parallelisierte Programme eignen, desto mehr Leute brauchen wir, die wissen, wie man sinnvoll dafür programmieren kann. Das klappt zwar schon alles ganz gut, aber es gibt noch eine Menge zu tun.