Mehr Multicore braucht neue Entwickler-Fähigkeiten


Seitdem auch Privatanwender Prozessoren mit zwei oder vier Kernen kaufen können und Parallel Computing immer wichtiger wird, werden den Softwareentwicklern neue Fähigkeiten abverlangt.

Microsoft und Intel fördern jetzt mit 20 Millionen US-Dollar für Colleges die Ausbildung von jungen Programmierern.

Über Jahre hinweg gab man sich Prozessoren zufrieden, die einfach nur schneller liefen. Heute, da es Mehrkern-CPUs gibt, gelten viele Regeln nicht mehr. Die Unterschiede lassen sich mit einem Sportwagen und einem Schulbus vergleichen: während die Stärke des ersten die Geschwindigkeit ist, kann der andere viel mehr Personen auf einmal befördern – allerdings langsamer.

Die Problematik ist, dass das einfache Hinzufügen von Kernen zu einer CPU die Geschwindigkeit nicht erhöhen wird – zumindest nicht, wenn die Anwendungen nicht darauf angepasst wurden. Damit etwa ein Prozessor mit vier Kernen voll ausgelastet wird, müssen die Entwickler ihre Anwendungen so anpassen, dass mehrere Threads auf die Kerne verteilt werden. Diese Threads müssen aber genau zugeordnet, aufeinander abgestimmt werden und relevante Daten zwischen einander austauschen können. Diese Komplexe Anforderung kommt dem beladen des Schulbusses gleich.

Um die Entwickler zur Arbeit mit den Kernen zu motivieren, hat eine Firma, nämlich TopCoder, zusammen mit dem Chiphersteller AMD einen Wettbewerb gestartet.


Überraschender Weise unterscheiden sich die Fähigkeiten, was Multicore-Programmierung anbelangt, bei den Programmierern stark, obwohl Multithreading eigentlich nichts Neues ist. Die Ursachen sind leicht zu finden: Multithreading wird den angehenden Programmierern nicht beigebracht. Deswegen konzentrieren sich Microsoft und Intel jetzt auch auf die Colleges.

Die Verbreitung von Anwendungen mit Multithreading-Fähigkeit wird in den kommenden Jahren durch angepasste Entwicklungsumgebungen vorangetrieben werden. Die meisten Betriebssysteme und gängige Programme sind schon bereit für Multicore-Plattformen, wobei es gerade bei der Spieleentwicklung noch viele Lücken gibt.

Um ready for multicore zu werden, stehen den Entwicklern mehrere Möglichkeiten bereit. Zum Beispiel können sie entweder ihren Programmierstil anpassen oder fertige Bibliotheken. AMD hat dazu unter dem Name “Framewave” über 3000 Routinen veröffentlicht, die Programmierern bei der Anpassung unterstützen sollen. Solche Bibliotheken sind aber keine endgültig brauchbare Lösung. Der Programmierer selbst muss auch für mehrere Kerne programmieren

Die Plattform RaipdMind kann single-threaded C++-Code durch eine Abstraktionsschicht parallelisieren, um mehrere Kerne zu nutzen. Trotzdem wäre es ein Trugschluss anzunehmen, dass solche Umgebungen schlechten Code in solchen verwandelt, der bereit für Multicore-Plattformen ist. Manchmal braucht es menschlichen Verstand, um zu erkennen, an welcher Stelle welcher Vorgang wie ausgeführt werden muss.